[小ネタ] RDSのSingle-AZ構成でAvailability Zoneを変更する方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。先日、RDSをSingle-AZ構成で構築していた際、Availability Zone(AZ)を間違えてしまいました。 ちょうど以下の様な状態です。

rds-change-az-001

EC2インスタンスのAZはap-northeast-1aに寄せていますが、RDSだけap-northeast-1cに構築してしまいました。

これは、、RDSを作りなおす(起動済みのものを削除して、再度、意図したAZを指定して起動し直す)ことをしないとダメかな、、と思いましたが、ちょっと工夫することでRDSの作りなおしをすることなく、AZを移すことができましたのでまとめてみます。

なお、RDSのエンジンについてはMySQLを想定しています。

Single-AZ構成でのAvailability Zoneの変更方法

先に手順をまとめてみますと、以下となります。

  • Multi-AZに変更
  • フェイルオーバーの強制実行
  • Single-AZに変更

Multi-AZに変更

まず、RDSをSingle-AZの構成からMulti-AZ構成に変更します。

こちらが変更前の状態です。 ap-northeast-1aに起動したかったのですが、間違えてap-northeast-1cに起動しまった状態です。

rds-change-az-002

対象のDBインスタンスを選択して、インスタンスの操作 > 変更 をクリックします。

rds-change-az-003

マルチAZ配置の項目を「いいえ」から「はい」に変更します。

rds-change-az-004

必要に応じて「すぐに適用」にチェックを付けて、次ページで変更内容を確認、[DBインスタンスの変更]ボタンを押して変更内容を反映させます。 (「すぐに適用」がOffの場合は、次回メンテンナス時間中に適用されます)

DBインスタンスのステータスが変更中から利用可能になると、Multi-AZ構成に変更されています。

rds-change-az-005

フェイルオーバーの強制実行

続いて、Multi-AZ構成にしたDBインスタンスを強制フェイルオーバーさせ、プライマリの稼働しているAZを変更します。

対象のDBインスタンスを選択して、インスタンスの操作 > 再起動 をクリックします。

rds-change-az-006

確認画面に進みます。「フェイルオーバーし再起動しますか?」に チェックを付けて [再起動]ボタンを押します。

rds-change-az-007

DBインスタンスのステータスが再起動から利用可能に変われば、フェイルオーバーされてMulti-AZでプライマリの稼働しているAZが変更された状態となります。 (ap-northeast-1aになりました)

rds-change-az-008

Single-AZ構成に変更

この状態で、Multi-AZ構成ながらもそのプライマリは意図したAZ(ap-northeast-1a)に配備し直すことができました。

ここから、Multi-AZ構成をSingle-AZ構成に戻すことで、当初意図していたSingle-AZでap-northeast-1aでの配備に変更します。

Multi-AZに変更した手順と同様、対象のDBインスタンスを選択して、インスタンスの操作 > 変更 をクリック、マルチAZ配置の項目を「はい」から「いいえ」に変更します。 必要に応じて「すぐに適用」にチェックを付けて、変更内容を確認後、[DBインスタンスの変更]を行います。

rds-change-az-009

ステータスが変更中から利用可能になれば、当初予定していた「Single-AZでap-northeast-1a」という構成になりました。

rds-change-az-010

まとめ

Single-AZ構成のRDS(MySQL)でAvailablility Zoneを変更する方法をまとめてみました。

ポイントとしては、以下2つの点になります。

  • Multi-AZ構成なら再起動のフェイルオーバーオプションでAZの変更が可能
  • 一度起動したDBインスタンスでもSingle-AZ構成からMulti-AZ構成への変更、またその逆も可能

私のように構築段階でAZを指定し忘れてしまって意図したAZに起動していなかった時や、検証環境などで構成を変更する場合などの参考になれば幸いです。