解决MySQL从库同步失败

1、登陆从库查看从库的状态

show slave status\G

主要关注两个值
Slave_IO_Running : YES
Slave_SQL_Running : NO

2、解决方法

解决方法1:忽略错误,继续同步

\color{red}{注意:这个方法只适合在主库与从库的数据相差不大并且要求数据可以不完全统一,数据要求不严格的情况下使用}

(1)进入从库数据库
mysql -u登陆用户 -p登陆密码
如:mysqldump -uroot -p123456
(2)停止同步服务
stop slave;
(3)设置跳过的错误次数(数字1可以更改)
set global sql_slave_skip_counter=1;
(4)启动同步服务
start slave;
(5)查看从库状态
show slave status\G

主要关注两个值
Slave_IO_Running : YES
Slave_SQL_Running : YES
如果两个值不都为YES,那么可以重复2~5,直到两个值都为YES

解决方法2:重新实现主从,数据完全同步

(1)进入主库数据库
mysql -u登陆用户 -p登陆密码
如:mysqldump -uroot -p123456
(2)在主库加锁,开启只读服务(保证没有新数据写入)
flush tables with read lock;
(3)在主库进行数据备份,把数据备份为.sql的文件
mysqldump -u登陆用户 -p登陆密码  --all-databases > mysql.back.sql
如:mysqldump -uroot -p123456  --all-databases > mysql.back.sql
(4)在主库解锁
unlock tables;
(5)把mysql的备份文件传输到从库服务器上,放到方便找到的路径下
scp -r /root/mysql.bask.sql 服务器用户名@服务器ip:存放路径
如:scp -r /root/mysql.bask.sql [email protected]:/tmp/
(6)进入从库数据库,停止同步服务
stop slave;
(7)在从库数据库中使用备份进行数据同步
source 备份文件存放的路径;
如:source /tmp/mysql.back.sql;
(8)进入主库获取数据

登陆主库数据库后,执行下面命令

show master status

获取File和Position的值

(9)在从库数据库设置同步服务
change master to master_host = '主库的IP’, master_user = '设置主从时设定的主库的用户', master_port=主库的端口, master_password='主库设定的密码', master_log_file = '主库中的File值', master_log_pos=主库中的Position值; 
如:change master to master_host = '192.168.1.153’, master_user = 'back', master_port=3306, master_password='back123456', master_log_file = 'mysqld-bin.001989', master_log_pos=24110520;
(10)在从库数据库启动同步服务
start slave;
(11)查看从库状态
show slave status\G

主要关注两个值
Slave_IO_Running : YES
Slave_SQL_Running : YES

你可能感兴趣的:(解决MySQL从库同步失败)