MySQL 复制 - 创建两个从属服务器,但稍后将其中一个设为主服务器

MySQL 复制 - 创建两个从属服务器,但稍后将其中一个设为主服务器

我们正在将数据库迁移到新的数据中心。因此,我们需要在新的 DC 上创建新的主服务器和从服务器。

我有旧数据中心主数据库(仍在生产中使用)的转储。我需要使用此转储创建两个数据库。两个数据库都是从属数据库,但其中一个将成为主数据库,然后另一个从属数据库需要从新主数据库复制。

DB_old_dc     - Master DB
DB_new_dc_001 - Slave replicating from DB_old_dc - Later this will become master.
DB_new_dc_002 - Salve replicating from DB_old_dc but later needs to replicate from DB_new_dc_001.

我是否可以只更改主 IP 以DB_new_dc_002指向它DB_new_dc_001然后它就会开始工作?

或者我必须等到它DB_new_dc_001 成为主服务器,然后再进行备份并创建DB_new_dc_002 从服务器?

答案1

你的方案确实缺乏全面性,所以我只描述它应该是什么样子。

假设您在 DC A 中有两个数据库(主数据库和从数据库,假设它们分别名为 M 和 N),并且您需要切换到 DC B(主数据库和从数据库,假设它们分别名为 Mng 和 Nng,其中代表新一代)。然后,您只需将 Mng 设置为 M 的从属,将 Nng 设置为 Mng 的从属(并且不要忘记log_slave_updates在 Mng 上设置,以防万一)。您也可以选择read_only在 Mng 和 Nng 上都设置,以防万一没有人使用主帐户并破坏您的新副本集。

当时机成熟时,您可以执行以下操作:

  • 停止 DC A 上的处理,比如说你放置自定义错误页面“抱歉,我们现在正在 DC 之间迁移”。
  • 停止 M,这样就不会有新数据进入。
  • stop slave;关于Mng
  • set global read_only=off;关于Mng
  • reset slave all;关于Mng
  • 更改使用 DB master 的任何内容中的连接描述符。
  • 删除自定义错误页面虚拟对象,然后瞧,您又可以重新上线了。

是的,Nng 只是不断复制。

相关内容