MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 7540|回复: 3
打印 上一主题 下一主题

[同步(Replication)] MySQL同步故障诊断与排除

[复制链接]
跳转到指定楼层
1#
发表于 2007-8-17 16:41:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在浏览此帖时请先查看本论坛中的另一帖子:MySQL同步常见问题解答(FAQ)

如果你遵从了上述说明,复制设置仍然不工作,首先检查下面各项:

·检查错误日志的消息。许多用户遇到问题后没有及时地这样做而浪费了时间。

·主服务器记录到了二进制日志?用SHOW MASTER STATUS检查。如果已经记录,Position应为非零。如果没有记录,确认正用log-bin和server-id选项运行主服务器。

· 是否从服务器在运行?使用SHOWSHOW SLAVE STATUS检查是否slave_IO_Running和slave_SQL_Running的值均为Yes。如果不是,验证当启动从服务器时使用的选项。

·如果从服务器正在运行,建立了与主服务器的连接吗?使用SHOW PROCESSLIST,找出I/O和SQL线程并检查它们的State列看它们如何显示。如果I/O线程状态为Connecting to master,验证主服务器上复制用户的权限、主服务器主机名、DNS设置,是否主服务器真正在运行,以及是否可以从从属服务器访问。

·如果从服务器以前在运行但是现在已经停止,原因通常是在主服务器上成功的部分语句在从服务器上失败了。如果你正确快照了主服务器,并且从来没有不通过服务器线程修改从服务器上的数据,这种现象不应发生。如果发生,应为一个bug或你遇到了一个手册复制特性和已知问题章节中描述的已知的复制限制。如果是一个bug,就通报吧。

·如果某个在主服务器上成功的语句拒绝在从服务器上运行,并且不能执行完全的数据库重新同步(即删除从服务器的数据库并从主服务器复制新的快照),尝试:

1.确定是否从服务器的表与主服务器的不同。尽力了解发生的原因。然后让从服务器的表与主服务器的一样并运行START SLAVE。

2.如果前面的步骤不工作或不适合,尽力了解手动更新是否安全(如果需要),然后忽视来自主服务器的下一个语句。

3.如果你确定可以跳过来自主服务器的下一个语句,执行下面的语句:

4.mysql> SET GLOBAL SQL_slave_SKIP_COUNTER = n

5.mysql> START SLAVE;

如果来自主服务器的下一个语句不使用AUTO_INCREMENT或LAST_INSERT_ID(),n
值应为1。否则,值应为2。使用AUTO_INCREMENT或LAST_INSERT_ID()的语句使用值2的原因是它们从主服务器的二进制日志中取两个事件。

6.如果你确保从服务器启动时完好地与主服务器同步,并且没有更新从服务器线程之外的表,则大概诧异是由于bug。如果你正运行最近的版本,请通报该问题。如果你正运行旧版本MySQL,尽力升级到最新的产品版本。

[ 本帖最后由 kider 于 2007-8-17 16:43 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
发表于 2008-4-9 16:36:48 | 只看该作者
4.mysql> SET GLOBAL SQL_slave_SKIP_COUNTER = n
这之前是不要 stop slave; 啊?
还是当从机拒绝执行语句时,就已经自动 stop slave; 了?

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-20 20:27 , Processed in 0.063303 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表