RDSのパラメータグループが「デフォルト」に戻せない原因?

こんにちは。 エキサイト株式会社の三浦です。

みなさん、Amazon RDSは使っているでしょうか? RDSでは「パラメータグループ」という機能を使ってDBのパラメータを変更するのですが、今回はそのパラメータグループに関するちょっとしたTipsを書いていきます。

Amazon RDS とは

Amazon RDS は、AWSが提供しているマネージドなDBサービスです。

Amazon Relational Database Service (Amazon RDS) を使用すると、クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを自動化しながら、コスト効率とサイズ変更可能なキャパシティーを提供します。

DBである以上 sort_buffer_size などの細かいパラメータも変更できる必要があるのですが、これはRDS内の「パラメータグループ」という機能によって提供されています。

f:id:excite-takayuki-miura:20210802112656p:plain
RDSのパラメータグループ

各種パラメータには最初はデフォルト値が設定されていて、このパラメータグループ上で値を変更することで変更値をDBに反映させることができます。

パラメータに変更を加えた後でもデフォルト値に戻すことができるのですが、実はたまに戻らないことがあります。

デフォルト値に戻らない原因?

ある日、パフォーマンステストのためにいくつかのパラメータを変更し、テストが終わった後にデフォルト値に戻そうとしたら一部パラメータが戻らない事がありました。 Webコンソール上ではエラーが起きている様子はなく、DB自体にもエラーは見受けられないのですが、パラメータはデフォルト値に戻っていないのです。

その後、色々な検証をしていく中で一つの可能性に行き当たりました。

RDSにはステータスがあり、通常は「利用可能」となっています。

f:id:excite-takayuki-miura:20210802113545p:plain
ステータス

パラメータグループでパラメータを変更すると、これが変更中を示す状態になるのですが、どうやら変更中にデフォルト値に戻そうとすると正しく戻ってくれないようです。

一見当然のことのように思えるのですが、

  • パラメータを変更した画面からはすぐにはDBのステータスが見られない
  • デフォルト値に戻すのに失敗しても、戻っていないのは確認できるが原因は表示されない
  • 場合によっては、パラメータを変更しても変更中を示す表示にならないことがある?
    • 変更自体は終わっているが、裏側でまだ副次的な処理が続いているとか?

ために見落とすことが意外と多いのではないでしょうか。 こういった場合は、しばらく時間をおいて再度実行してみると良いでしょう。

最後に

今回書いた理由以外にも、もしかしたら戻らない理由があるかもしれないのでご了承ください。

なお、もしTerraformで管理している場合は、Terraformから変更すればそのあたりも込み込みで変更してくれるのか、こういったことを気にすることなくデフォルト値に戻ります。 限定的な場面ですが、

  1. Terraformで管理しているRDSについて
  2. テストのために手動でパラメータグループをデフォルト値から変更して
  3. いざ手動で戻そうとしたら戻らなかった

場合は、Terraformから戻してみるのも手かと思います。