前言
很多时候,RDS用户经常会问如何调优RDS MySQL的参数,为了回答这个问题,写一篇blog来进行解释:
哪一些参数不能修改,那一些参数可以修改;
这些提供修改的参数是不是已经是最佳设置,如何才能利用好这些参数;
哪些参数可以改
细心的用户在购买RDS的时候都会看到,不同规格能够提供的最大连接数以及内存是不同的,所以这一些产品规格的限制参数:连接数、内存用户是不能够修改的,如果内存或者连接数出现了瓶颈:
内存瓶颈:实例会出现OOM,然后导致主备发生切换
连接数瓶颈:应用不能新建立连接到数据库
则需要进行应用优化、慢SQL优化或者进行弹性升级实例规格来解决。
还有一些涉及主备数据安全的参数比如innodb_flush_log_at_trx_commit、sync_binlog、gtid_mode、semi_sync、binlog_format等为了保证主备的数据安全,目前还暂不提供给用户进行修改。
除上述的这些参数外,绝大部分的参数都已经由DBA团队和源码团队优化过,用户不需要过多调整线上的参数就可以把数据库比较好的运行起来。但这些参数只是适合大多数的应用场景,个别特殊的场景还是需要个别对待,比如使用了tokudb引擎,这个时候就需要调整tokudb引擎能使用的内存比例(tokudb_buffer_pool_ratio);又比如我的应用特点本身需要很大的一个锁超时时间,那么则需要调整innodb_lock_wait_timeout参数的大小以适应应用等等。
如何调参数
下面我将把控制台中能够修改的一些比较重要的参数给大家介绍一下,这些参