読者です 読者をやめる 読者になる 読者になる

vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

AWS RDS デフォルトDBパラメータグループ運用止めませんか?

デフォルト設定で構築してあったAmazon RDSMySQLの運用でちょっと困った事があったので。

SlowQueryを取りたいんだけど?

MySQL運用あるあるです。
デフォルトOFFなので必要に迫られてONにするケースは多々あります。

どうぞどうぞ

  • slow_query_log または log-slow-queries
    • スロークエリログの有効/無効
  • slow_query_log_file
    • スロークエリログファイル名
  • long_query_time
    • スロークエリログに出力する閾値(デフォルト10秒)

この辺りの 動的パラメーター を設定すれば良いのです。
もちろん 動的パラメーター なのでデータベースを停止することなく変更可能です。

では、適用しましょう

まず、RDSなので権限が無いためSET GLOBALコマンドでの変更は行えません。

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

ではどうするかと言うと、パラメーターグループを使用して設定変更を行います。
が、ここで問題が

デフォルトDBパラメーターグループのパラメーター設定は変更できません

RDS · AWS Console.jpg

今回対象となっていたRDS MySQL5.6はほぼデフォルトで作成がされていました。
その場合パラメーターグループは default.mysql5.6 になります。
パラメーターグループを変更しようとしてもEditボタンがグレーアウトされています。

デフォルトDBパラメーターグループのパラメーター設定は変更できません
公式ドキュメントに記載があります。

デフォルト DB パラメーターグループのパラメーター設定は変更できません。
デフォルト値からパラメーター設定を変更するには、独自の DB パラメーターグループを作成する必要があります。

パラメーターグループの付け替えは再起動を伴います

DB インスタンスに関連付けられている DB パラメータグループを変更する場合、DB インスタンスで新しい DB パラメータグループを使用する前に、インスタンスを手動で再起動する必要があります。

パラメーター値に一切が変更がない場合でも、 パラメーターグループの付け替えには再起動が必須になります
本番稼働中の再起動は調整含めると結構骨が折れそうです。

RDS作成時にパラメーターグループを選択できます

RDSmysqlDatabaseOption.jpg

パラメーター値を変更する予定がなくとも、RDS作成時にデフォルトとは異なるパラメーターグループを適用しておくべきでしょう。
そうしないと後々変更・即時反映したい場合に泣きを見ます。

尚、追加機能を設定するオプショングループという設定も存在しますが、 こちらもデフォルトのオプショングループは変更できず、デフォルトとは別に作成したオプショングループを適用する形になります。
MySQLに関しては付与できるオプションはmemcachedのみで、付け替えに再起動は伴いませんでした。

まとめ

  • デフォルトDBパラメーターグループのパラメーター設定は変更できません
  • パラメーターグループの付け替えは再起動を伴います

RDSはとても簡単にリレーショナルデータベースを構築できるサービスで、デフォルト設定のまま使っても不都合が無いかもしれません。
しかし、運用していく中でパラメーター設定変更が必要になるケースは少なくないと思います。
動的パラメーターの変更なのにデータベース再起動が必要になるという悲しい事にならぬよう、デフォルトパラメーターグループのまま運用することは避けるべきと考えます。

RDSのデフォルトDBパラメータグループでの運用止めませんか?