0

目前我们有3个从数据库,

但几乎总是有一个比其他的慢得多(可能是主数据库后一个小时)

有没有人遇到过类似的问题?可能是什么原因?

4

2 回答 2

1

我猜想其他一些进程正在与慢速副本相同的主机上运行,​​并且它正在占用资源。

尝试运行“top”(或使用 Nagios 或 Cactus 之类的)来监控三个副本主机上的系统性能,看看是否有任何可以观察到的趋势。CPU 使用率与 mysqld 之外的另一个进程挂钩,或者 I/O 不断饱和,诸如此类。


更新:阅读 MySQL 性能专家 Peter Zaitsev 的以下两篇文章:

作者指出复制是单线程的,副本按顺序执行查询,而不是像在主服务器上那样并行执行。因此,如果您有一些运行时间很长的复制查询,它们可能会“阻塞队列”。

他建议补救措施是简化长时间运行的 SQL 查询,使它们运行得更快。例如:

  • 如果您有一个影响数百万行的 UPDATE,请将其分解为多个作用于行子集的 UPDATE。

  • 如果您将复杂的 SELECT 语句合并到您的 UPDATE 或 INSERT 查询中,请将 SELECT 分离到它自己的语句中,在应用程序代码中生成一组文字值,然后在这些上运行您的 UPDATE 或 INSERT。当然 SELECT 不会被复制,副本只会看到带有文字值的 UPDATE/INSERT。

  • 如果您有一个长时间运行的批处理作业正在运行,它可能会阻止其他更新在副本上执行。您可以在批处理作业中放置一些睡眠,或者甚至编写批处理作业以检查复制延迟并在需要时睡眠。

于 2009-05-21T04:49:02.197 回答
0

所有从服务器是否都位于同一位置?就我而言,其中一个从属服务器位于另一个位置,这是一个网络问题。

于 2009-05-21T05:02:49.587 回答