MySQL一主两从复制转换为级联复制

来源:互联网 发布:淘宝我打软件登录 编辑:程序博客网 时间:2024/06/08 16:34

最近有个朋友问我MySQL一主两从复制如何改为级联复制?

我之前没有做过这样的改动,所以自己研究了一下, 让B作为A的从库,C作为B的从库,其实也挺简单的,方法如下。

首先从库B要开启二进制日志,而且还要加上参数log-slave-updates,并且添加一个复制用的账号。

从库B和从库C复制主库A的位置大多数情况下是不同的,为了让从库B作为从库C的主库,我们需要让从库B的数据比从库C的数据更接近主库A

1,先在从库C上执行STOP SLAVE。show slave status \G查看从库C复制主库A的位置Exec_Master_Log_Pos。

2,在从库B上执行show slave status \G;查看从库B上的Exec_Master_Log_Pos是否已经大于从库C上的Exec_Master_Log_Pos,如果大于,则执行stop slave停掉从库B的复制,这时需要记下从库B上的  Relay_Master_Log_File(B),Exec_Master_Log_Pos(B)两个值,在从库B上执行show master status,记下BINLOG文件名字File(B)以及位置Position(B),然后start slave开启复制。

3,在从库C上执行start slave  UNTIL MASTER_LOG_FILE =Relay_Master_Log_File(B), MASTER_LOG_POS = Exec_Master_Log_Pos(B),show slave status \G查看从库C上的Until_Log_Pos与Exec_Master_Log_Pos是否相等,如果相等则stop slave关闭复制。然后把从库C的主库指向从库B,

change master to
master_host='B_ip',
master_port=3306,
master_user='rep',
master_password='xxxx',
master_log_file=File(B),
master_log_pos=Position(B),
master_connect_retry=3;

然后start slave开启复制。OK,结束了,就是这样!




1 1