2011-06-04 94 views
1

当前配置是基本Master-> Slave复制。每晚在主服务器上运行各种数据导入作业。在此期间,从属复制关闭,流量指向从属(以免导致数据加载作业的性能瓶颈/惩罚影响)。恢复复制后主节点上的MySql复制性能

当作业完成时,复制被重新打开(在从属设备上),意图在不久之后将流量指向从设备(一旦从设备同步备份)。但问题是,在这一点上,主人存在显着的性能问题。可能是因为从属I/O线程正在努力获取从主设备复制的所有数据。

作为一种替代解决方案,关闭从站上的“SQL线程”(保持IO线程始终运行),以免轰炸主站(稍后......一次),一次复制被恢复。然而,这种方法(显然)的问题在于,当主服务器正在运行繁重的数据加载作业(由于IO线程始终处于运行状态并将数据移动)时,从服务器正在引发持续的性能问题。

所以问题是,我怎样才能启动/停止从站上的复制(根据我的数据加载计划/要求),而不会对主站或从站造成性能影响?似乎你应该能够完全关闭复制,然后在不影响主人的情况下再打开它。

在此先感谢!

+0

你的应用程序是什么? – 2011-06-06 14:10:52

+0

该应用程序是一个网站 – Ben 2011-06-06 16:40:52

回答

0

你能描述负载问题吗?你挂在爱荷华州,还是主从站之间的网络连接饱和?你的服务器有多少内存?

您可以通过在主从设备之间放置交叉电缆并将所有复制流量路由到主设备和从设备以改善后者,从而使其脱离LAN。

如果前者是问题,我会说你最好的选择是让自己更多和/或更快的磁盘,甚至SSD!您还可以执行二进制日志记录来分隔磁盘,以便它不会减慢查询活动的速度。

总的来说,这听起来像是你刚刚有一个容量问题,并且你需要提供足够的资源来处理你指向它的负载 - 没有任何的杂耍可以让你解决这个问题。我没有遇到过配置,二进制日志记录是限制因素。任何基本的RAID配置都应该至少处理300M /秒,因此,您需要每秒钟处理超过30秒的事情,这意味着您需要每晚移动超过9Gb的二进制日志 - 你真的会生成那么多的数据吗?

另一种选择是使用DRBD for replication - 这样,从服务器根本不必运行复制查询或处理binlog,尽管它还有其他复杂性。

+0

感谢您的回复。每台服务器上有8个RAM。这个问题是艾奥瓦特。在许多加载操作之前(在主设备上)结束添加“SET SQL_BIN_LOG = 0”。这基本上解决了这个问题,因为我不需要复制大量的临时加载表数据。负载表数据的确是非常重要的。 – Ben 2011-06-16 14:16:24