【发布时间】:2014-05-04 04:06:44
【问题描述】:
我运行的服务需要能够支持大约 4000+ IOPS 并保持副本延迟
我正在使用 AWS RDS MySQL 实例并且有 2 个只读副本。我的服务在只读副本上遇到了巨大的副本延迟峰值,因此我与 AWS 支持人员联系了一周,试图了解我遇到延迟的原因——我预置了 6000 IOPS,并且我的实例非常强大。他们给了我各种各样的理由。
更改实例类型后,从 5.5 升级到 MySQL 5.6 以利用多线程,并且它们替换了底层硬件,我仍然随机看到明显的副本延迟。
最终,我决定开始修改参数组,将我的配置更改为只读副本的任何我能找到的与复制过程有关的东西,现在终于体验到
以下是我更改的设置及其看似成功的值(我复制了默认的 mysql 5.6 参数组并将这些值更改为仅将更新的参数组应用于只读副本):
innodb_flush_log_at_trx_commit=0
sync_binlog=0
sync_master_info=0
sync_relay_log=0
sync_relay_log_info=0
请阅读其中的每一项以了解修改的影响:http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html
其他需要注意的事项:
Convert any MyISAM tables to InnoDB
Upgrade from MySQL < 5.6 to MySQL >= 5.6
Ensure that your provisioned IOPS are > the combined read/write IOPS you require
Ensure that your read replica instances are >= master instance
如果其他人有任何其他参数可以在只读副本或主数据库上进行修改以获得最佳复制性能,我很乐意听到更多信息。
2014 年 7 月 8 日更新
为了利用我设置的 Mysql 5.6 多线程复制:
slave_parallel_workers=5 (Set it to the number of read replica DBs you have running)
我在这里找到了这个:
https://blogs.oracle.com/MySQL/entry/benchmarking_mysql_replication_with_multi
【问题讨论】:
-
您能否澄清“确保您的只读副本实例 >= 主实例” - 您是指实例类吗?
-
是的,如果不是更大,请确保实例类至少相同
标签: mysql amazon-web-services amazon-rds database-replication