LoginSignup
5
6

More than 5 years have passed since last update.

RDSをMagneticからSSDにするときのmy.cnfパラメータ調整など

Last updated at Posted at 2016-06-10

監視用のRDSをMagneticからSSD(gp2の600GB)にしていい(アイテム登録とかが超遅いのはI/Oがキテるせいではないのかという話になった)ということでそれ用パラメータグループの修正箇所の備忘録です。5.6です。はやまって5.7にしたりはしない予定です。

変えたところ:

パラメータ デフォルト値 変更後値 理由
innodb_io_capacity 200 500 本来ディスクのIOPS性能くらいがいいらしいが5.6だと効率悪いらしくそこから1/3から1/4程度をOracleACEのyoku0825先生にオススメされたのとどこかでみたベンチの結果を思い出して。
innodb_open_files 2000 3000 mysqltunerでのアドバイス結果とshow global statusでTable_open_cache_overflowsが増えてるため
innodb_read_io_threads 4 6 読み込むI/Oスレッドが気持ちふえてたほうが早そう
innodb_sync_array_size 1 4 待機中スレッドについての同時実行性を高めるために、内部データ構造をいくつに分割するかを指定します。(mutex/rw_lockのイベント待ち処理の並列性に影響。)だそうです
innodb_write_io_threads 4 6 書き込むI/Oスレッドがきもち増えたほうがパフォーマンスがあがるので
query_cache_size 1048576 0 query_cache_typeがOFFなのとperconaのサイトの推奨値なので
table_open_cache 2000 3000 mysqltunerでのアドバイス結果とshow global statusでTable_open_cache_overflowsが増えてるため
max_heap_table_size 16777216 268435456 show global statusでCreated_tmp_disk_tablesが増えてるため
tmp_table_size 16777216 268435456 show global statusでCreated_tmp_disk_tablesが増えてるため
slow_query_log 0 1 スロークエリログ有効化

もしいっこだけしか調整しちゃいけなかったら迷わずinnodb_io_capacityですがそんな制限もないのでmysqltunerとかshow global status;とかみました。
こちらはgp2で600GBでその3倍のIOPSがベースなので1800だけど、その1/4とか1/3とからへんの値を適宜。
他も色々調整しておきました。さすがにいまよりは早くなるんじゃないですかね。

他に気になったのはinnodb_buffer_pool_instancesとかですが、バッファプールに割り当てられたやつを1GB以上で割った商とかにするといいらしいけど、
5.6だとデフォルト8なので今度割りあたるのは12GBであってまあほっとけばいいのかなという結論です。
(既知情報そうですが一応。innodb_buffer_pool_sizeは搭載メモリの75%とかに勝手になるので放置推奨というのがRDSが未調整で使える理由のひとつかなと。)

あと、innodb_io_capacity_maxですが、デフォルト2000で最大バーストが3000だけどio_capacityと同様に5.6だと効率悪いらしくあんまり増やさないほうがいいようです。
innodb_io_capacityがディスクのI/O性能カタログ値の1/3~1/4とかでinnodb_io_capacity_maxもあわせてギリギリにしないほうがいいらしいけど、減らすのもアレなのでデフォルト値のままにしておきました。
(むかしioDrive的な高速ディスクで%io%らへん調整でとんでもなくチートだった思い出。。最近だとAuroraがいいんですかね?地味に繰り返す大量処理が早くなるような話は聞いた気がします。

移行はReplicaつくってMaster昇格してHost名リネーム(または向き先修正)なつもりでいますがdumpするかも。
Master昇格で3時間ほどかかり(データ量がアレだからですかね。。)reboot後にbackupがとられてbackupにsnapshot的(おそらくsingle-transaction)にdumpとるのがデータ量分(今回1時間くらい)かかるぽくアクセスできるけどそのあとHost名かえるとrebootはしるので断ありみたいなことでbackup中に名前変えずにアクセスするにはRoute53(PrivateHostedZoneのほう)とかつかっとくのが無難そうなのかなというところです。TTLは60秒以上短くするとクエリが増えてお高くなると公式マニュアルに書いてあったので60でよさそうかな。
あとでディスク拡張するのは断なしでいけるようでした。

参考:
https://dev.mysql.com/doc/refman/5.6/ja/slow-query-log.html
https://www.percona.com/blog/2014/11/14/optimizing-mysql-zabbix/
https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
http://qiita.com/sh-ogawa/items/088edd8ef46eaa3ad79c
https://blog.cloudpack.jp/2015/03/02/attention-about-operating-amazon-rds-on-ssd-of-general-purpose/
https://yoku0825.blogspot.jp/2014/10/innodbfileformat-antelopebarracuda.html
http://dev.classmethod.jp/cloud/aws/rds-monitoring-replication-state/
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/white-label-name-servers.html

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6