- 正常停止集群中的待转换节点
- 找到该节点最后一个事务的xid值
- 查找候选master上Xid(第2步中找到的xid)所在binlog中下一个事务开始的位置
- change master启动slave
【实验】
1.正常停止Mariadb Galera Cluster集群中的待转换节点
2.查找待转换为slave节点最后一个binlog文件的Xid
方法一:查找binlog最新的xid
mysqlbinlog --no-defaults --base64-output=decode-rows -vv mysql-bin.000012|grep "^# at"|tail -3
# at 922
# at 959
# at 986
mysqlbinlog --no-defaults --base64-output=decode-rows -vv mysql-bin.000012 --start-position=922|grep Xid
server id 453346 end_log_pos 986 Xid = 1095452
方法二:过滤错误日志中New cluster view 获取最后一个view中的gtid值。就是我们需要的xid
grep "New cluster view" mariadb.log |awk -F: 'END { print $1":"$2":"$3 $6":"$7}'
[Note] WSREP 874d8e7e-5980-11e8-8c23-83493ba049c2:1095452, view# -1
3.查找候选master上Xid(第2步中找到的xid)所在binlog中下一个事务开始的位置
候选master节点log_slave_updates必须为ON
mysqlbinlog --no-defaults --base64-output=decode-rows -vv mysql-bin.000006|grep "Xid = 1095452" -a10
# at 1698
#180529 14:48:59 server id 453346 end_log_pos 1725 Xid = 1095452
COMMIT/*!*/;
# at 1725
Xid为1095452事务,下一个事务的开始位置为1725
4.change master
CHANGE MASTER TO
MASTER_HOST='192.x.x.x',
MASTER_USER='root',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=2039;
5.start slave