0

我们已经有超过 6 个月的主/从设置。复制从来都不是问题。如果 master 宕机,slave 不会被用于“保险单”以外的任何事情。它唯一的活动是在每天早上 2:30 停止从站并完成完整备份,然后重新启动从站。备份通常需要大约 30 分钟,从机在 10 分钟内赶上备份。

从机是一台更强大的机器(24 核对 8 核),我们只是在考虑将其切换为主机并在下周末反转复制。

昨天早上 9 点,奴隶突然开始落后了。主人没有太大的负担。真正不寻常的是从服务器上的平均负载约为 3,大约有 2% 的等待时间(如顶部所示)和大约 1/10% 的 CPU 利用率,但从服务器没有赶上。看起来它几乎处于静止状态。处理 1 秒的复制日志大约需要 10 分钟(从实际时间中减去后面的秒数)。slave IO 线程跟上 master 的 bin 日志,只是 sql 线程在爬取查询。然而,查询正在处理中,对从属状态进行监视会显示 exec 主日志位置的持续更新。

我们已经尝试停止从属 io 线程以查看它是否有帮助,它没有任何影响。好像突然之间每个查询都变得非常昂贵。

我们已经对底层的raid进行了磁盘检查,系统或mysql日志中没有任何内容表明有任何错误。我们已经多次重新启动并重新启动 mysql,清除系统缓存等......

这是在一周内没有任何代码更改并且在此事件之前没有异常操作问题的生产系统上。

我们完全不知道为什么一个没有接近峰值负载的系统似乎无法跟上主系统的速度。

我们还应该研究什么?如果可以帮助某人帮助我们确定什么是“错误”,我将很乐意在此处发布系统统计信息等。

4

2 回答 2

0

我最后一次检查,复制是单线程的,所以我希望你能找到一个阻塞系统的慢查询。我有一个客户端,它的复制还可以,但是落后了 1000 万秒!(哎呀)

SHOW FULL PROCESSLIST 中显示什么查询?它总是相同的查询?如果是这样,那么该查询可能变得更加昂贵。尝试解释它(或变体,如果它是更新等)。

如果您没有立即看到它,请尝试打开慢查询日志,看看您会得到什么。

于 2012-11-30T05:04:42.210 回答
0

事实证明,一个 inodb 表已经变得相当大,并且插入其中变得越来越昂贵。我们将表切换到主服务器(实际上是从服务器)和它追上的从服务器上的 myisam。当将其转换为 myisam 的“更改表”归结为奴隶时,它基本上变成了无操作。

于 2013-07-07T21:20:42.527 回答