MySQL 每个数据库都有复制吗?

MySQL 每个数据库都有复制吗?

所以,我的问题很有趣:我们想从一台服务器迁移到另一台服务器。我们进行了主从复制,但我的老板提出了一次迁移一个数据库的想法。

因此他让我在新服务器上设置另一个 MySQL 实例,让从服务器几乎保持原样,并逐步将新实例设为新主服务器,一次一个数据库。这可行吗,也就是说,我可以将数据库“x”从旧主服务器转移到新主服务器,然后告诉从服务器从现在开始在新主服务器上同步“x”吗?

我读过这个旧帖子(Mysql 复制-每个数据库都有线程吗?) 当时这是不可能的。现在可以做到吗?

谢谢!

卢卡斯·布拉彻。

答案1

是的,你可以这样做。MySQL 的复制功能允许你指定要复制哪些模式[1],或不复制哪些模式,请查看 replicate_wild_do_table 参数。

但是,这样做也很愚蠢,因为每次迁移都需要一些停机时间以确保没有数据丢失,而且我也想不出不简单地复制所有数据库的好理由。

[1] 从属服务器仍将获取完整的 binlog,但仅执行与过滤器匹配的语句

答案2

可以做这样的事,但却没有任何好处。

您不能做的是“告诉从服务器同步‘x’”。复制不是这样工作的。复制只是从您告诉它的位置开始重播主服务器上的事件。因此,您需要确保在一致的时间点从主服务器获取数据快照,并在开始复制之前将该数据复制到从服务器。

从主服务器到从服务器一次只处理一个数据库并没有什么实际优势。事实上,更加困难。

设置从属服务器的最简单方法是对主服务器进行完整备份,利用记录 binlog 位置,然后将该备份恢复到从属服务器,并从记录的 binlog 位置开始复制。

但让我们退一步来看看你真的尝试做:

您想要迁移到新的服务器,并让从属服务器一次成为一个数据库的“主服务器”。

这很简单。

这是你的复制:Master -> Slave

您将从属服务器设置为主服务器的完整副本,并复制更改以使它们保持同步。

从服务器现在成为主服务器意味着什么?这只意味着您告诉应用程序使用从服务器进行所有读写操作。就是这样。一旦设置了复制,就无需进行其他 mysql 更改。

将奴隶提升为主人是仅应用程序配置更改 (在您的情况下,您有一个主 mysql 服务器,其中一个从服务器进行复制。)

因此,如果您可以更改应用程序配置,以便对每个尝试使用的数据库使用不同的 mysql 数据库,那么您就可以一次迁移一个数据库。

简单的。

答案3

不可以——MySQL 复制是全有或全无的。您不能将一个 MySQL 服务器设置为两个独立主服务器的从属服务器。

相关内容