MySQL Slave relay_log损坏修复过程 - MySQL教程
时间:2013-04-18 11:32
故障:数据库服务器无故重启,当Slave启动后,报relay_log损坏,SQL线程无法进行。 故障原因:OS的重启,可能会导致relay_log 无法正常同步 此时的解决办法是重新进行change master to ,但master log pos 采用的是Exec_Master_Log_Pos(show slave statusG变量输出)从slave已经执行到的位置开始重新接受数据。 本以为万事ok,但slave上却报出duplicate key的错误,之后可想而知 是设置sql_slave_skip_counter =1 不断跳过。 对duplicate key 原因解释为MYSQL 本身问题 Slave 提交事务和更新复制信息并不是原子性操作: I/O线程同步:对于中继日志刷新到磁盘,和更新master.info 分别是fsync调用。 发生如下情况可能会造成接受重复事件: server 刷新relay_log,正要更新master.info文件的master读位置时,server宕机,master.info未更新,导致replication启动时,导致事件重复。 SQL线程同步:SQL线程是先将事务提交到存储引擎,然后再更新relay_log.info文件 事件在数据库上已经应用,但未更新relay-log.info。恢复时,SQL会重复执行某些事件。 本文出自 “技术成就梦想” 博客,请务必保留此出处http://weipengfei.blog.51cto.com/1511707/1180913 查看本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/ (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |