デフォルト設定で構築してあった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 MySQL5.6はほぼデフォルトで作成がされていました。
その場合パラメーターグループは default.mysql5.6 になります。
パラメーターグループを変更しようとしてもEditボタンがグレーアウトされています。
デフォルトDBパラメーターグループのパラメーター設定は変更できません
公式ドキュメントに記載があります。
デフォルト DB パラメーターグループのパラメーター設定は変更できません。
デフォルト値からパラメーター設定を変更するには、独自の DB パラメーターグループを作成する必要があります。
パラメーターグループの付け替えは再起動を伴います
DB インスタンスに関連付けられている DB パラメータグループを変更する場合、DB インスタンスで新しい DB パラメータグループを使用する前に、インスタンスを手動で再起動する必要があります。
パラメーター値に一切が変更がない場合でも、
パラメーターグループの付け替えには再起動が必須になります
本番稼働中の再起動は調整含めると結構骨が折れそうです。
RDS作成時にパラメーターグループを選択できます
パラメーター値を変更する予定がなくとも、RDS作成時にデフォルトとは異なるパラメーターグループを適用しておくべきでしょう。
そうしないと後々変更・即時反映したい場合に泣きを見ます。
尚、追加機能を設定するオプショングループという設定も存在しますが、
こちらもデフォルトのオプショングループは変更できず、デフォルトとは別に作成したオプショングループを適用する形になります。
MySQLに関しては付与できるオプションはmemcachedのみで、付け替えに再起動は伴いませんでした。
まとめ
- デフォルトDBパラメーターグループのパラメーター設定は変更できません
- パラメーターグループの付け替えは再起動を伴います
RDSはとても簡単にリレーショナルデータベースを構築できるサービスで、デフォルト設定のまま使っても不都合が無いかもしれません。
しかし、運用していく中でパラメーター設定変更が必要になるケースは少なくないと思います。
動的パラメーターの変更なのにデータベース再起動が必要になるという悲しい事にならぬよう、デフォルトパラメーターグループのまま運用することは避けるべきと考えます。
RDSのデフォルトDBパラメータグループでの運用止めませんか?