[ 来源:http://www.it55.com | 作者: | 时间:2007-09-07 | 收藏 | 推荐 ] 【大 中 小】
现在我们就运行着一个完整的自动选择master的MySQL同步系统,不过在它准备好之前,需要创建自己的监控工具。
6.10 同步疑难解答
如果按照上述步骤设定好同步之后,它不能正常工作的话,首先检查以下内容:
http://www.it55.com
* 查看一下错入日志信息。不少用户都在这方面做得不够好以至于浪费时间。
* master是否在记录二进制日志?用 SHOW MASTER STATUS 检查一下状态。如果是,Position 的值不为零;否则,确定master上使用了 log-bin 和 server-id 选项。
* slave是否运行着?运行 SHOW SLAVE STATUS 语句检查 Slave_IO_Running 和 Slave_SQL_Running 的值是否都是。如果不是,确定是否用同步参数启动slave服务器了。
* 如果slave正在运行,它是否建立了到master的连接?运行 SHOW PROCESSLIST 语句检查I/O和SQL线程的 State 字段值。详情请看"6.3 Replication Implementation Details"。如果I/O线程状态为 Connecting to master,就检查一下master上同步用户的权限是否正确,master的主机名,DNS设置,master是否确实正在运行着,以及slave是否可连接到master,等等。
* 如果slave以前运行着,但是现在停止了,原因通常是一些语句在master上能成功但在slave上却失败了。如果salve已经取得了master的全部快照,并且除了slave线程之外不会修改他的数据,那么应该不会发生这样的情形。如果确实发生了,那么可能是一个bug或者你碰到了"6.7 Replication Features and Known Problems"中提到的同步限制之一。如果是一个bug,那么请按照"6.11 Reporting Replication Bugs"的说明报告它。
http://www.it55.com在线教程
vd;k;l http://www.it55.com rdfg
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
mysql> START SLAVE;
sflj http://www.it55.com kg^&fgd
如果下一个语句没有使用 AUTO_INCREMENT 或 LAST_INSERT_ID(),那么 n 的值应为为 1。否则,它的值为 2。设定为 2 是因为 AUTO_INCREMENT 或 LAST_INSERT_ID() 在master的二进制日志中占用了2条日志。
4. 如果确定slave精确地同步master了,并且没有除了slave线程之外的对数据表的更新操作,则推断这是因为bug产生的差异。如果是使用最近的版本,请报告这个问题,如果使用的是旧版本,试着升级一下。 免费网页模版下载http://www.it55.com
6.11 报告同步Bugs http://www.it55.com
当确定没有包含用户的错误,并且同步还是不能正常工作或者不稳定,就可以报告bug了。我们需要你尽量多的跟踪bug的信息。请花点时间和努力准备一个好的bug报告。
如果有一个演示bug的可重现测试案例的话,请进入我们的bug数据库http://bugs.mysql.com/。如果碰到一个幽灵般的问题(不可重现),请按照如下步骤:
http://www.it55.com在线教程
1. 确定没有包含用户错误。例如,在slave线程以外更新slave的数据,那么数据就会不能保持同步,也可能会导致违反更新时的唯一键问题。这是外部干涉导致同步失败的问题。
2. 使用 --log-slave-updates 和 --log-bin 选项启动slave。这会导致slave将从master读取的更新操作写到自己的二进制日志中。
3. 在重设同步状态之前保存所有的证据。如果我们没有任何信息或者只有粗略的信息,这将很难或者不可能追查到这个问题。需要收集以下证据:
* master上的所有二进制日志
* slave上的所有二进制日志
* 发现问题时,在master上执行 SHOW MASTER STATUS 的结果
* 发现问题时,在master上执行 SHOW SLAVE STATUS 的结果
* 记录master和slave的错误日志
4. 用 mysqlbinlog 来检查二进制日志。例如,用以下方法有助于找到有问题的查询: http://www.it55.com
shell> mysqlbinlog -j pos_from_slave_status \
/path/to/log_from_slave_status head 免费壁纸下载http://www.it55.com
一旦收集好了问题的证据,首先将它隔离到一个独立的测试系统上。然后在我们的bug数据库http://bugs.mysql.com/上进可能详细地报告问题。 免费矢量图片素材下载http://www.it55.com
(编辑:IT资讯之家 www.it55.com)