MySQL的奴隶可以同时成为主人吗?

我正在将2个DB服务器(Master&Slave)迁移到两个新的DB Server(Master和Slave)

DB1 – 主(生产)

DB2 – 从站(生产)

DB3 – 新主人

DB4 – 新的奴隶

目前我有复制设置为:

DB1 -> DB2 DB3 -> DB4 

为了将生产数据复制到新的服务器上,我想把它“菊花链”,看起来像这样:

 DB1 -> DB2 -> DB3 -> DB4 

这可能吗? 当我运行show master status; 在DB2(生产奴隶)上binlog possition永远不会改变:

 + ------------------ + ---------- + -------------- + ---- -------------- +
 | 文件| 位置|  Binlog_Do_DB |  Binlog_Ignore_DB |
 + ------------------ + ---------- + -------------- + ---- -------------- +
 |  mysql-bin.000020 |  98 |  |  | 
 + ------------------ + ---------- + -------------- + ---- -------------- +

我有点困惑,为什么binlog位置在DB2上没有改变,理想情况下它将成为DB3的主人。

DB2上的binlog没有更新从属更新。 要菊花链复制,必须在my.conf中设置log-slave-updates

http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates

是的,这是可能的:)这就是所谓的“主继电器从属”复制,并在网上有大量的文件。

我build议你看看这里的官方文档。

顺便说一句,也看看这些幻灯片 。 他们对复制拓扑有一些提示。

希望这可以帮助。

是的 – 你可以菊花链式的连接mysql服务器,你甚至可以用两台或更多的机器进行循环复制 。 只记得启用也作为主人的奴隶binloging。

是的,这是可能的。 实际上,您需要DB2的新快照来构buildDB3。 在那个时候,如果你有一个好的位置,你可以使用比DB4还要快的DB3。

不要忘记为每个服务器设置唯一的server_id

高性能MySQL是一本介绍更高级MySQLpipe理的好书。

为什么不直接添加DB3作为新的slave,然后在准备好开关的时候将其升级为master? 这会给你带来多个奴隶的临时附加好处,并减less或消除你的停机时间。