Amazon RDSのインスタンスタイプの変更やストレージ変更などをダウンタイムなしで行うための備忘録です。
通常のDBインスタンスの変更の設定変更でも、ダウンタイムは数分程度なのでそれが許容範囲の場合は通常の変更方法でいいと思いますが、ダウンタイムなしで変更をしたいということがあったのでその方法を書いていきます。
作業手順
- 変更対象のインスタンスからスナップショット作成
- 作成したスナップショットから復元する(新規インスタンスを作成)
- 新規インスタンスのセキュリティグループとパラメータグループを元のインスタンスと同じにする
- 3を反映させるためにインスタンスの再起動
- DB接続先のホストを新規インスタンスのエンドポイントに変更
スナップショットを作成
RDS → インスタンス → 対象インスタンスの選択 → インスタンスの操作 → スナップショットの取得

上記手順で、まずは変更対象DBのスナップショットを作成します。
このスナップショットを使用するので、それ以降は変更対象DBの更新はしないようにしましょう。
作成したスナップショットから復元する
RDS → スナップショット → 対象スナップショットの選択 → スナップショットのアクション → スナップショットの復元

上記手順で、作成したスナップショットから新規インスタンスを作成します。
この際、復元の元となるインスタンスのDBインスタンス識別子を変更して、元々使用していた識別子を新規インスタンスに設定する方法もありますが、この場合ダウンタイムが発生してしまうのでDBインスタンス識別子は新たなものを設定し、DB接続の際のホストを変更する形をとります。
新規インスタンスのセキュリティグループとパラメータグループを元のインスタンスと同じにする
新規で作成したインスタンスのセキュリティグループなどは、デフォルトのグループになっているので元のインスタンスと異なる場合は、同じグループを設定するようにしてください。
インスタンスの再起動
インスタンスの操作 → 再起動
セキュリティグループなどの変更を反映させるために、インスタンスを再起動させます。
DB接続先のホストを新規インスタンスのエンドポイントに変更
あとは、DB接続プログラムのホストを設定している箇所を新しいエンドポイントに変更すれば完了です。
最後に
上記の流れで、ダウンタイムなしでインスタンスタイプの変更などができるようになるかと思います。
ちなみに、新規インスタンスを作成するので古いインスタンスは通常必要無くなりますが、完全に復元できていない場合も考えられますので、しばらくは削除せずに残しておいた方が無難だと思います。