【问题标题】:Heavy replication write load on MySQL slaveMySQL slave 上的繁重复制写入负载
【发布时间】:2016-11-17 17:31:01
【问题描述】:

我们在 Debian 8 上使用 Percona MySQL 5.6 作为电子商务聚合器。为此,有一个主后端服务器执行整个 ETL(处理来自合作伙伴的产品馈送)和一个由前端 Web 服务器使用的从 MySQL 服务器。这是一个单一的产品数据库,大约有 600GB 的数据。

两台机器都有 RAID10 和数据中心系列 SSD。主 MySQL 是具有 128GB RAM 的双 Xeon E5,从属是具有 64GB RAM 的单个 Xeon E5。我们的问题是,ETL 的 I/O 如此繁重(具有数千 IOPS),以至于主服务器能够处理 I/O 负载,但从服务器无法跟上复制的速度。大多数工作都是在 ramdisk 中完成的,并且只有真正必要的数据已经写入数据库。

slave 的读多于写,但是复制跟不上。有哪些选项可用于扩展从属服务器上的复制写入(即 I/O 负载)?

编辑 2016-11-18:通过“选项”,我不仅要求优化 MySQL,而且要求完全其他可以更好地处理这种情况的技术或软件。

【问题讨论】:

  • @Michael 否。并行复制已处于活动状态。但正如我所写的,它是一个单一的数据库,因此并行复制在这种情况下没有效果。
  • 我怀疑可能是这种情况。主服务器上的@@BINLOG_FORMAT 和副本上的@@INNODB_FLUSH_LOG_AT_TRX_COMMIT 的值是多少,你有没有没有主键的表?
  • Binlog格式为ROW@@INNODB_FLUSH_LOG_AT_TRX_COMMIT为2。所有表都有主键。
  • 嗯,我的“要检查的明显事项”清单差不多到此结束了。 :( 基于此,我希望在slave上问@@innodb_buffer_pool_size,或者在slave上问@@log_slave_updates是多余的……

标签: mysql io database-replication


【解决方案1】:

升级到 5.7 应该有望解决您当前的问题:http://mysqlhighavailability.com/multi-threaded-replication-performance-in-mysql-5-7/

这通常是主服务器写入容量不足的前兆。您应该尽快开始考虑分片。您可以查看我参与的 YouTube 的 vitess.io 项目。

【讨论】:

    猜你喜欢
    • 2015-12-04
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2019-12-27
    • 2013-12-22
    • 2012-05-28
    相关资源
    最近更新 更多