我们正在将数据库迁移到新的数据中心。因此,我们需要在新的 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;
关于Mngset global read_only=off;
关于Mngreset slave all;
关于Mng- 更改使用 DB master 的任何内容中的连接描述符。
- 删除自定义错误页面虚拟对象,然后瞧,您又可以重新上线了。
是的,Nng 只是不断复制。