传统模式下主从架构的改变
主从架构的改变
主从关系一: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