【问题标题】:mysql slave database problemmysql从数据库问题
【发布时间】:2010-10-27 15:54:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql master-slave


    【解决方案1】:

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

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


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

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

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

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

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

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

    【讨论】:

    • 好的,所以它是零星的,服务器轮流变慢。问题仍然存在:这些服务器上还运行着什么可能会消耗资源?
    • 从库本身没有运行其他任何东西
    • 有没有自动的方法,比如说,找出原因?
    • 可能不是自动方式。但是有一些方法可以监控和衡量复制滞后,以及在考虑复制的情况下重写查询的策略。我添加了一些您应该阅读的文章的链接。祝你好运。
    【解决方案2】:

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

    【讨论】:

    • 应该不是网络问题,因为轮流变慢了。
    猜你喜欢
    • 2011-02-13
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2012-01-17
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多