mysql - rds是什么 - aws rds集群



AWS RDS MySQL只读副本滞后问题 (1)

我运行的服务需要能够支持大约4000+的IOPS,并保持复制滞后<= 1秒才能正常工作。

我正在使用AWS RDS MySQL实例并拥有2个只读副本。 我的服务在复制副本上遇到了巨大的副本滞后高峰,所以我在一周之内联系了AWS支持,试图理解为什么我遇到了延迟 - 我已经配置了6000 IOPS,并且实例功能非常强大。 他们给了我各种各样的理由。

在更改实例类型之后,从5.5升级到MySQL 5.6以利用多线程,并且它们替换底层硬件,我仍然看到随机的显着副本滞后。

最终,我决定开始修改参数组,改变我的配置只读副本的任何我可以找到,涉及复制过程,现在最终经历<= 1秒的复制滞后。

这里是我改变的设置和他们的值似乎是成功的(我复制了默认的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

如果其他人有任何额外的参数,可以在只读副本或主数据库上修改,以获得最佳的复制性能,我很想听听更多。

更新7-8-2014

为了利用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复制按顺序执行单个数据库上的所有事务,而master - 可以并行执行这些事务。

您可能在单个DA上执行了大部分更新,这就是不能让您获得多线程复制的优势。

检查副本服务器上的iostat 。 大多数情况下,这些问题是由于机器上的IO高。

为了减少机器上的IO,你可以做一些额外的改变:

  • 增加innodb_buffer_pool_size - 这是你应该从默认改变的第一件事。 如果这个实例只运行mysql - 你可以在这里分配大约80%的可用内存。

  • 验证以下参数:

     log_slave_updates = false
     binlog_format = STATEMENT

    (如果你有混合或行binlog_format配置 - 验证你明白这是什么意思,从这里http://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html

  • 如果你有很多数据正在改变几次 - 增加

    innodb_max_dirty_pages_pct至90或95%值得检查。