背景:
2台mysql数据库做了主从,发现主从不同步了,不想停应用(可以停主库)的情况下,采用物理拷贝mysql data目录方式搭建mysql主从。数据库版本8.0.39
思路:
1.主库/etc/my.cnf添加如下2个参数,设为只读
read_only=1
super_read_only=1
2.登录主库,将主库设为只读
set global read_only=on;
set global super_read_only=on;
show variables like ‘%read_only%’; --确认为只读
3.在主库上执行查看binlog日志名称和日志position,并记录
show master status\G;
注:只读模式下,不会写binlog日志,多次查看 position不会改变
4.关闭主库
mysqladmin -uroot -p shutdown
5.备份并清理从库的data目录,并备份从库的auto.cnf文件
6.执行scp 拷贝主库data目录到从库
scp -rp ./data mysql@从库ip:/路径
7.修改从库data目录下 auto.cnf,修改UUID为原从库的uuid
8.启动从库
9.在从库上执行reset slave all;
10.启动主库
11.在从库上执行 change master...,其中binlog日志和position参考步骤3中的。
12.从库上执行start slave;
13.从库上执行show slave status\G;确保主从同步
14.主库开启读写
set global read_only=off;
set global super_read_only=off;
15.编辑主库的/etc/my.cnf
注释掉 super_read_only和read_only行。