mysql数据库主从同步I/O问题,下面介绍比较靠谱的修复方法。
主节点IP:10.99.202.25,从节点IP:10.99.202.26,修复步骤如下:
1,查看主库repl账号访问权限
mysql -h10.99.202.25 -P3306 -uroot -p"密码"; #进入主数据库后执行: select user,host from mysql.user; #注意查看repl用户的host列要允许从节点访问。
1.1,调整主库repl账号访问权限
如果上一步查询repl访问权限不正确,需要调整:
update mysql.user set host=‘%‘ where user=‘repl‘; flush privileges;
2,查看主库repl账号操作权限
进入主数据库后执行:
show grants for ‘repl‘@‘%‘; #注意%可以按实际的来
2.1,调整主库repl账号操作权限
如果上一步查询repl操作权限不正确,需要调整:
GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘%‘ identified by ‘repl的密码‘; show grants for ‘repl‘@‘%‘; #注意%可以按实际的来
3,主库锁表,注意窗口不要关闭
进入主数据库后执行:
flush table with read lock; #锁表
4,备份主库数据
cd /data/kube/ #进入数据目录执行
mysqldump -h10.99.202.25 -P3306 -uroot -p"密码" --all-databases --single-transaction --default-character-set=utf8 > /data/kube/mysql_bak20210118_2205.sql
5,查看主库binlog日志信息
进入主数据库后执行:
show master status\G
记住mysql-bin.000xxx找出File名称和Position位置
6,把主库备份文件移动到从库所在节点
将备份数据拷贝到从节点:
#通过scp命令将主节点备份数据拷贝到从节点 scp -rp /data/kube/mysql_bak20210118_2205.sql root@10.99.202.26:/data/kube/
7,在从库上停止slave
新开窗口登录从库
mysql -h10.99.202.26 -P3306 -uroot -p"密码" #进入从数据库后执行: stop slave;
8,在从库上导入主库的备份数据
在从数据库执行导入数据:
#进入从数据库后执行 source /data/kube/mysql_bak20210118_2205.sql
9,查看主库与从库的server_id
在主库,从库分别查看:
show variables like ‘server_id‘;
#要求值不能相同。
10,查看主库与从库的server-uuid
在主库,从库分别查看 sudo vi /data/kube/mysql/auto.cnf 里面有生成的server-uuid值
#要求值不能相同。
10.1,解决server-uuid重复问题
在从节点执行:
sudo mv /data/kube/mysql/auto.cnf /data/kube/mysql/auto.cnf.bak
然后重启mysql服务:
sudo docker restart mysql-slave
#重启从节点mysql服务后,新生成的server-uuid值与原来不同
12,解锁主数据库
#进入主数据库后执行解锁:
unlock tables;
13,重置从库同步
#进入从库执行:
reset slave;
14,从库上重新设置同步节点
CHANGE MASTER TO MASTER_HOST=‘10.99.202.25‘, MASTER_PORT=3306, MASTER_USER=‘repl‘, MASTER_PASSWORD=‘repl‘, MASTER_LOG_FILE=‘mysql-bin.000005‘, MASTER_LOG_POS=1158; #host,port,user,password请根据你的主库设置相应修改,log_file和log_pos根据主库中master status相应修改。
host,port,user,password请根据你的主库设置相应修改,log_file和log_pos根据主库中master status相应修改。
15,从库上开启slave
start slave;
16,从库上查看slave状态
show slave status\G;
#显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
17,主库上确认从库Slave_UUID
进入主数据库后执行:
show variables like ‘server_uuid‘; show slave hosts; #确认主从节点对应正确即完成
【完】
参考文档:
MySQL 手动主从同步不锁表
https://www.cnblogs.com/cheyunhua/p/14060051.html
mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
https://blog.csdn.net/mergerly/article/details/50068589
slave have equal MySQL Server UUIDs原因及解决
https://www.cnblogs.com/cxxjohnson/p/7522515.html
MySQL Master command COM_REGISTER_SLAVE failed: Access denied for user
https://blog.csdn.net/snowhite91/article/details/102816441