xiaoming728

xiaoming728

MySQL主从同步异常解决办法

2023-12-11
MySQL主从同步异常解决办法

来源:CSDN-a2589293499

日期:2019-07-04 14:52:44

链接:https://blog.csdn.net/a2589293499/article/details/94617907

主从同步共有两个进程,I/O线程(stop slave IO_THREAD;)和SQL线程(stop slave SQL_THREAD;)

I/O线程会维护master.info信息的更新

SQL线程会维护relay-log.info信息的更新

一、查看同步异常问题

登录mysql从库,查看同步状态,发现Slave_SQL_Running状态不正常,Last_Error提示主存同步失败的问题。

mysql -u root -p
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No

二、解决方案-跳过错误

跳过一步错误,继续同步

mysql> stop slave;
mysql> set global sql_slave_skip_counter =1;
mysql> start slave;

查看同步状态

mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

恢复正常

三、解决方案-重新同步

登录主库mysql,加只读锁

mysql -uroot -ppassword
mysql> flush tables with read lock;
mysql> exit

备份数据(数据量大的话,时间会很长)

mysqldump -uroot -p -hpassword > /tmp/mysql.bak.sql

传递到从库

scp /tmp/mysql.bak.sql root@192.168.0.200:/tmp/

登录到从库mysql

mysql -u root -p

停止同步

mysql> stop slave;

导入数据

mysql> source /tmp/mysql.bak.sql

重新设置从库同步,同步点是主库show master status信息里的File、Position两项

CHANGE MASTER TO 
MASTER_HOST='192.168.0.100', 
MASTER_USER='slave1', 
MASTER_PASSWORD='123456', 
MASTER_LOG_FILE='mysql-bin.000005', 
MASTER_LOG_POS=154;

开启同步

mysql> start slave;

查看同步状态是否回复正常,Slave_IO_Running和Slave_SQL_Running都为Yes表示正常

mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

切回主库,关闭主库只读锁

mysql> unlock tables;