传统模式下主从架构的改变

主从架构的改变

主从关系一:A->B->C,B是A的从库,C是B的从库

10.10.228.163:3306(rescs5)

10.10.228.163:3307(rescs5)

10.10.228.163:3308(rescs5)

主从关系二:A->B,C,B和C是A的从库

10.10.228.163:3306(rescs5)

10.10.228.163:3307(rescs5)

10.10.228.163:3308(rescs5)

 

从主从关系一变为主从关系二

10.10.228.163:3306(rescs5)

 

10.10.228.163:3307(rescs5)

 

10.10.228.163:3308(rescs5)

 

 B进行stop slave; C的应用也会停止,B上会记录A的logfile,position和port, 即Relay_Master_Log_File,Exec_Master_Log_Pos和Master_Port, 将C change到B上记录A的logfile,position和端口

C操作如下:

stop slave;

change master to master_host='10.10.228.163',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000002',master_log_pos=2677;

start slave;

 

从主从关系二变为主从关系一

10.10.228.163:3306(rescs5)

 

 10.10.228.163:3307(rescs5)

 

 10.10.228.163:3308(rescs5)

 

 先将B,C停在同一位点上,在A上不记录日志创建一个表,之后开启日志,向这个新建表中插入一条数据,这时B,C的复制停止

A操作如下:

set sql_log_bin=off;

CREATE TABLE `mytest` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`uid`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

set sql_log_bin=on;

insert into mytest(name) values ('allen');

这时B和C停在同一个pos点上

10.10.228.163:3307(rescs5)

 

 10.10.228.163:3308(rescs5)

 

 10.10.228.163:3307(rescs5)

show master status;

 

然后将C change到B节点的filename和pos上

C操作如下:

stop slave;

change master to master_host='10.10.228.163',master_port=3307,master_user='repl',master_password='repl',master_log_file='mysql-bin.000002',master_log_pos=4708;

start slave;

 

B上跳过一个事务,将insert into mytest(name) values ('allen');跳过去

B操作如下:

stop slave;

set global sql_slave_skip_counter=1;

start slave;

show slave status\G

 

posted @ 2019-08-07 18:55  AllenHU320  阅读(118)  评论(0编辑  收藏  举报