Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

AWS RDSのリストア失敗体験談

今日も例によってAWSシリーズですが、今回は恥ずかしながらRDSのリストア時に手こずってしまった内容を記事にしたいと思います。

RDSとは

RDSはAmazon Web Servicesで提供されるリレーショナルデータベースサービスです。
簡単に言ってしまうとMySQLやらPostgreSQLやらをクラウド上でホスティングしてくれます。

なお今回はRDSのリストアについての記事ですので詳細については省略いたします。

RDSのリストア

私の失敗

一般的なサーバ上でMySQLやPostgreSQLを使っていると、一旦データベースを削除してダンプしたファイルをリストアするという場面が多くあります。

この感覚のままRDSを使って「一旦インスタンスを削除して今日の○○時に取得した自動スナップショットからインスタンスを復元」しようとしました。

RDS管理画面上での私の誤った操作

RDS管理画面でインスタンスの操作から削除を選択。

RDS01

○○時の自動スナップショットがあればOKだから最終スナップショットは不要と思い、最終スナップショットを取得せずにインスタンス削除を実行しました。

RDS07

インスタンス削除前後のスナップショット保持状態

インスタンス削除前のスナップショット保持状態。自動的に取得されたスナップショットが1つあります。

RDS06

インスタンス削除後のスナップショット保持状態。

RDS08

というわけで、綺麗さっぱり自動スナップショットが消えてしまいました。

よくよく考えてみれば当然の結果ですが、「自動スナップショット=ダンプファイル」ではなく、インスタンスと紐づいたスナップショットですので、インスタンス削除実行前には任意でスナップショットを取得するなどの対応が必要だと良くわかりました。

ちなみに任意で取得した手動スナップショットや削除時に聞かれた最終スナップショットは削除されませんでした。

手動や自動で取得したスナップショットがインスタンス削除時に消えるか消えないかは以下の通りです。

名称 概要 インスタンス削除後
自動スナップショット 自動的に作成されるスナップショット 消える
手動スナップショット 任意の時点で取得したスナップショット 消えない
最終スナップショット インスタンス削除時に作成をきかれるスナップショット 消えない

自動スナップショットを使った正しいリストア方法

上記のリストアで問題なのは、当然ながらインスタンスを削除してしまったという点に尽きるのですが、自動バックアップ使った正しいリストア方法を行ってみたいと思います。

まず自動スナップショットから復元する

復元したい自動スナップショットを選択して「スナップショットの復元」を実行します。

RDS10

既に使用しているインスタンス識別子(nediatest2)は利用できないので今回はnediatest3として復元しました。

復元完了後のインスタンス状態は以下の通りです。

RDS13

エンドポイント名を変更する

このままnediatest3のエンドポイントを使用しても良いのですが、システムアプリケーション側で接続先エンドポイントの変更作業が必要になってしまいます。

これを防ぐためにインスタンス識別子を変更して対応します。

nediatest2をnediatest12へ変更

インスタンスの操作でnediatest2の変更をクリックします。

RDS14

nediatest2をnediatest12へ変更します。

RDS11

「すぐに適用」にチェックを入れて完了です。

ご覧のように再起動がいったんかかりますが、インスタンス識別子が変更されているのが分かります。

RDS16

nediatest3をnediatest2へ変更

同様にnediatest3をnediatest2へ変更します。

RDS12

完了

無事変更が完了しました。

RDS17

これで元々のエンドポイント名で接続可能です。あとは動作確認ができればnediatest12は削除して良さそうです。

まとめ

というわけで無事RDSのリストアが完了しました。

当然のことをきちんと理解していれば今回の失敗は避けられただけに悔やまれます。失敗は成功の元なんて言いますが、今回の失敗で改めてデータの取り扱いには注意しようと思った千本木でした。

ちなみに誤って自動スナップショットを削除してしまったのは私のテスト用データベースでしたので実害はありませんでした。