RDS の Multi-AZ構成から Single-AZ構成へ変更したとき Availability Zone はどこになるか確認してみた
今回はMulti-AZ構成から Single-AZ構成へ変更した時に Availability Zone はプライマリ
が稼働しているAZになるのか、セカンダリ
が稼働しているAZになるのか確認してみましたのでご紹介します。
概要
RDS for MySQL で確認しました。 また、以下4つのパターンでAZがどうなるか確認していきます。
- Multi-AZ構成からSingle-AZ構成に変更した場合
- Single-AZ構成からMulti-AZ構成に変更した場合
- Multi-AZ構成からSingle-AZ構成への変更とインスタンスクラスを変更した場合
- Single-AZ構成からMulti-AZ構成への変更とインスタンスクラスを変更した場合
Multi-AZ構成からSingle-AZ構成に変更した場合 (フェイルオーバーなし)
現在のDBインスタンス情報
現在は MultiAZ が true
、us-west-2a がプライマリ
となっています。
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": true, "AvailabilityZone": "us-west-2a" }
Single-AZ構成へ変更
- Multi-AZからSingle-AZへ変更
$ aws rds modify-db-instance \ --db-instance-identifier test-db \ --no-multi-az \ --apply-immediately
変更後のDBインスタンス情報
Single-AZ構成へ変更後、 Multi-AZ構成のときにプライマリ
だった us-west-2a にDBインスタンスが起動していることが確認できます。
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": false, "AvailabilityZone": "us-west-2a" }
イベントログ
$ aws rds describe-events --source-identifier test-db --source-type db-instance | jq -c '.Events[] | {Date, Message}' {"Date":"2018-09-03T16:56:44.351Z","Message":"Applying modification to convert to a standard (Single-AZ) DB Instance"} {"Date":"2018-09-03T17:00:53.925Z","Message":"Finished applying modification to convert to a standard (Single-AZ) DB Instance"}
Single-AZ構成からMulti-AZ構成に変更した場合
続いての検証のためにSingle-AZ構成から、Multi-AZ構成へ戻しましたがこの場合もAZの変更はありませんでした。
Multi-AZ構成へ変更
- Single-AZからMulti-AZへ変更
aws rds modify-db-instance \ --db-instance-identifier test-db \ --multi-az \ --apply-immediately
変更後のDBインスタンス情報
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": true, "AvailabilityZone": "us-west-2a" }
イベントログ
$ aws rds describe-events --source-identifier test-db --source-type db-instance | jq -c '.Events[] | {Date, Message}' {"Date":"2018-09-03T17:09:19.244Z","Message":"Applying modification to convert to a Multi-AZ DB Instance"} {"Date":"2018-09-03T17:17:41.706Z","Message":"Finished applying modification to convert to a Multi-AZ DB Instance"}
Multi-AZ構成からSingle-AZ構成への変更とインスタンスクラスを変更した場合 (フェイルオーバーあり)
次に、フェイルオーバーが発生する変更と合わせてMulti-AZ構成から Single-AZ構成へ変更してみます。 今回は、フェイルオーバーが発生するインスタンスクラスの変更を一緒にしています。
現在のDBインスタンス情報
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": true, "AvailabilityZone": "us-west-2a" }
Single-AZ構成へ変更
- インスタンスクラスを変更
- Multi-AZからSingle-AZへ変更
aws rds modify-db-instance \ --db-instance-identifier test-db \ --no-multi-az \ --db-instance-class db.t2.small \ --apply-immediately
変更後のDBインスタンス情報
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": false, "AvailabilityZone": "us-west-2b" }
DBインスタンスの稼働するAZが変わりました。 イベントログを確認してみます。
イベントログ
インスタンスクラスの変更の際にMulti-AZ instance failover
が発生していることがわかります。
その後、Single-AZ
になっているのでAZが変更したようです。
$ aws rds describe-events --source-identifier test-db --source-type db-instance | jq -c '.Events[] | {Date, Message}' {"Date":"2018-09-03T17:25:36.553Z","Message":"Applying modification to database instance class"} {"Date":"2018-09-03T17:29:50.993Z","Message":"DB instance shutdown"} {"Date":"2018-09-03T17:30:53.738Z","Message":"Multi-AZ instance failover started"} {"Date":"2018-09-03T17:31:03.340Z","Message":"DB instance restarted"} {"Date":"2018-09-03T17:31:33.748Z","Message":"Multi-AZ instance failover completed"} {"Date":"2018-09-03T17:40:46.647Z","Message":"Finished applying modification to DB instance class"} {"Date":"2018-09-03T17:40:51.886Z","Message":"Applying modification to convert to a standard (Single-AZ) DB Instance"} {"Date":"2018-09-03T17:45:01.242Z","Message":"Finished applying modification to convert to a standard (Single-AZ) DB Instance"}
最後にSingle-AZ構成からMulti-AZへAZ構成とインスタンスクラスを変更した場合を試してみます。
Single-AZ構成からMulti-AZ構成への変更とインスタンスクラスを変更した場合
インスタンスクラスを変更と同時にSingle-AZ構成から、Multi-AZ構成へ戻しましたがこの場合もAZの変更はありませんでした。
Multi-AZ構成へ変更
- インスタンスクラスを変更
- Single-AZからMulti-AZへ変更
$ aws rds modify-db-instance \ --db-instance-identifier test-db \ --no-multi-az \ --db-instance-class db.t2.micro \ --apply-immediately
変更後のDBインスタンス情報
$ aws rds describe-db-instances --db-instance-identifier test-db | jq '.DBInstances[] | {MultiAZ, AvailabilityZone}' { "MultiAZ": false, "AvailabilityZone": "us-west-2b" }
イベントログ
$ aws rds describe-events --source-identifier test-db --source-type db-instance | jq -c '.Events[] | {Date, Message}' {"Date":"2018-09-03T17:59:38.155Z","Message":"Applying modification to database instance class"} {"Date":"2018-09-03T18:01:04.717Z","Message":"DB instance shutdown"} {"Date":"2018-09-03T18:04:30.623Z","Message":"DB instance restarted"} {"Date":"2018-09-03T18:05:19.334Z","Message":"Finished applying modification to DB instance class"} {"Date":"2018-09-03T18:05:25.811Z","Message":"DB instance shutdown"} {"Date":"2018-09-03T18:05:35.110Z","Message":"DB instance restarted"}
結果
変更内容 | DBインスタンスのプライマリAZの変更 |
---|---|
Multi-AZからSingle-AZへ変更(フェイルオーバーなし) | なし |
Multi-AZからSingle-AZへ変更(フェイルオーバーあり) | あり |
Single-AZからMulti-AZへ変更 | なし |
まとめ
RDSのMulti-AZ構成から Single-AZ構成と構成を変更したときのDBインスタンスが稼働するAvailability Zoneについてご紹介しました。