本文共 1024 字,大约阅读时间需要 3 分钟。
今天发现主从数据库没有同步,需要进行解决。先上主库查看状态,使用show processlist;
检查进程状态,发现没有异常。接着查看show master status;
,结果正常。然后再到从库查看,使用show slave status\G
,发现Slave_IO_Running: Yes,但Slave_SQL_Running: No,说明从库没有完成同步。
针对这种情况,可以采用以下两种解决方案:
解决方法一:忽略错误后继续同步
在my.cnf
文件中添加配置:slave_skip_errors=all
。这种方法适用于主从库数据差异不大,或者对数据一致性要求不高的情况。操作步骤如下: stop slave;
set global sql_slave_skip_counter = 1;
start slave;
同步完成后,检查从库状态,应发现Slave_SQL_Running: Yes
,说明同步正常。解决方法二:重新做主从,完全同步
这种方法适用于主从库数据差异较大,或者要求数据完全一致的情况。操作步骤如下:flush tables with read lock;
mysqldump -uroot -p -hlocalhost > mysql.bak.sql
注意:数据库备份需定期进行,确保数据安全。
show master status;
,获取最新的文件和位置信息。scp mysql.bak.sql root@192.168.128.101:/tmp/
stop slave;
source /tmp/mysql.bak.sql;
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
start slave;
最后,检查从库状态,确保Slave_IO_Running: Yes
和Slave_SQL_Running: Yes
,说明同步完成。转载地址:http://oubfk.baihongyu.com/