[size=medium]数据库主从同步做了有1年,期间遇到一些错误,自己查资料摸索解决
和大家分享一下
1 如果:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0
mysql> slave stop ;
mysql> slave start;
mysql> show slave status ;
如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0
那么,数据库的replication已经成功启动。
如果提示有duplicated数据,直接delete那条数据之后的,然后
mysql> slave stop ;
mysql> slave start;
mysql> show slave status ;
如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0
那么,数据库的replication已经成功启动。
2 如果: Slave_IO_Running=YES,Slave_SQL_Running=NO,Last_Errno>0
这个问题,基本上是因为数据库的replication的状态文件被删除引起的。
解决方法:
2、1) mysql> show slave status ;
2、2) 查看Last_Error,的值(基本上是一个replication产生的SQL语句)
2、3) 如果你确定ERROR里面的SQL对数据没有太大的影响,执行下面的步骤,否则,请跟相关人员确定这个SQL对数据库的影响有多大。
2、4) mysql> slave stop ;
2、5) mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
2、6) mysql > slave start ;
2、7) mysql > show slave status ;
2、8) 如果 Slave_IO_Running=YES,Slave_SQL_Running=YES,
Last_Error=0 。
那么数据的replication状态已经恢复。
否则,从2、1 ) 重新开始做。直到replication状态恢复。
3 如果还不行,查看错误日志,看看是卡在那个binlog上了,比如 : 卡在000079
则:
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000080', MASTER_LOG_POS=0;
SLAVE START;
4 如果错误提示: [mysql]Table tblName is marked as crashed and should be repaired
Mysql提示tblName表格已损坏,需要修复,解决方法:
进入到对应的数据库目录:
cd /var/lib/mysql/dbname
使用myisamchk修复:
shell> myisamchk -r tblName
如果提示failed
shell> myisamchk -f tblName
强制修复
恢复时间比较长,耐心等待修复完成
然后重启mysql就行
[/size]
和大家分享一下
1 如果:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0
mysql> slave stop ;
mysql> slave start;
mysql> show slave status ;
如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0
那么,数据库的replication已经成功启动。
如果提示有duplicated数据,直接delete那条数据之后的,然后
mysql> slave stop ;
mysql> slave start;
mysql> show slave status ;
如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0
那么,数据库的replication已经成功启动。
2 如果: Slave_IO_Running=YES,Slave_SQL_Running=NO,Last_Errno>0
这个问题,基本上是因为数据库的replication的状态文件被删除引起的。
解决方法:
2、1) mysql> show slave status ;
2、2) 查看Last_Error,的值(基本上是一个replication产生的SQL语句)
2、3) 如果你确定ERROR里面的SQL对数据没有太大的影响,执行下面的步骤,否则,请跟相关人员确定这个SQL对数据库的影响有多大。
2、4) mysql> slave stop ;
2、5) mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
2、6) mysql > slave start ;
2、7) mysql > show slave status ;
2、8) 如果 Slave_IO_Running=YES,Slave_SQL_Running=YES,
Last_Error=0 。
那么数据的replication状态已经恢复。
否则,从2、1 ) 重新开始做。直到replication状态恢复。
3 如果还不行,查看错误日志,看看是卡在那个binlog上了,比如 : 卡在000079
则:
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000080', MASTER_LOG_POS=0;
SLAVE START;
4 如果错误提示: [mysql]Table tblName is marked as crashed and should be repaired
Mysql提示tblName表格已损坏,需要修复,解决方法:
进入到对应的数据库目录:
cd /var/lib/mysql/dbname
使用myisamchk修复:
shell> myisamchk -r tblName
如果提示failed
shell> myisamchk -f tblName
强制修复
恢复时间比较长,耐心等待修复完成
然后重启mysql就行
[/size]
本文分享了在数据库主从同步过程中遇到错误时的排查步骤和解决方法,包括如何处理Slave_IO_Running和Slave_SQL_Running状态不一致的情况,以及如何解决replication状态文件丢失、数据损坏等问题。
4639

被折叠的 条评论
为什么被折叠?



