Amazon RDS インスタンスをアベイラビリティーゾーンの外に移動する方法を教えてください。
Amazon Relational Database Service (Amazon RDS) または Amazon Aurora インスタンスをアベイラビリティーゾーンの外に移動したいです。Amazon RDS DB サブネットグループにあるサブネットも削除したいです。
簡単な説明
Amazon RDS DB インスタンスを起動するには、DB サブネットグループに少なくとも 2 つのサブネットが含まれている必要があります。RDS インスタンスは、関連する DB サブネットグループ内のサブネットでのみ起動できます。サブネットは、同じ AWS リージョン内の別々のアベイラビリティーゾーンにある必要があります。中断を最小限に抑えるには、少なくとも 3 つのアベイラビリティーゾーンのサブネットを用意するのがベストプラクティスです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
アベイラビリティーゾーンを特定する
アベイラビリティーゾーン ID
アベイラビリティーゾーン ID を使用して、ある AWS アカウント内のリソースの場所を別のアカウント内のリソースと関連付けて特定します。たとえば、use1-az2 にあるアカウントで実行されている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスがあるとします。これらの EC2 インスタンスは、use1-az3 にあるアカウントで実行されている RDS データベースと通信します。AZ 間トラフィックによる追加コストや遅延を回避するには、両方のインスタンスを同じアベイラビリティーゾーンで実行します。障害が発生した場合のダウンタイムを減らすには、マルチ AZ 配置を使用します。
アカウントのアベイラビリティーゾーンのマッピングを確認してアベイラビリティーゾーン名を取得するには、describe-availability-zones コマンドを実行します。
aws ec2 describe-availability-zones --zone-ids ZONE ID --region REGION
注: ZONE ID はアベイラビリティーゾーンの ID に、REGION はお使いのリージョンに置き換えてください。
移動する RDS インスタンスを特定する
移動する RDS インスタンスを特定するには、AWS Config でアベイラビリティーゾーン名を使用するか、AWS CLI で list コマンドを実行します。
AWS Config
AWS Config を有効にします。次に、以下のコマンドを実行して、アベイラビリティーゾーンで実行されている、またはセカンダリノードがある DB インスタンスのリストを返します。
SELECT resourceId, resourceName, accountId, awsRegion, configuration.availabilityZone, configuration.secondaryAvailabilityZone WHERE resourceType = 'AWS::RDS::DBInstance' AND ( configuration.availabilityZone = 'us-east-1e' OR configuration.secondaryAvailabilityZone = 'us-east-1e' )
注: 上記のクエリでは、アベイラビリティーゾーンはアカウントのマッピングにあるゾーン名と一致する必要があります。
AWS CLI
describe-db-instances コマンドを実行して、アベイラビリティーゾーンに現在デプロイされている RDS DB インスタンスを一覧表示します。
aws rds describe-db-instances \ --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \ --region us-east-1
describe-db-instances コマンドを実行して、アベイラビリティーゾーンに現在デプロイされている Aurora DB インスタンスを一覧表示します。
aws rds describe-db-instances \ --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")' \ --region us-east-1
インスタンスをアベイラビリティーゾーンの外に移動する
RDS DB インスタンス
注: シングル AZ 配置のアベイラビリティーゾーンは変更できません。
RDS インスタンスをアベイラビリティーゾーンの外に移動するには、次の手順を実行します。
- RDS インスタンスがシングル AZ 配置の場合は、DB インスタンスをマルチ AZ 配置に変更します。マルチ AZ 配置では、別のサブネットを使用する別のアベイラビリティーゾーンにスタンバイ DB インスタンスが作成されます。
- DB インスタンスをフェイルオーバーで再起動します。スタンバイ DB インスタンスがプライマリ DB インスタンスになります。
注: フェイルオーバー後に DB インスタンスが新しいアベイラビリティーゾーンに発生することを確認します。 - DB インスタンスをシングル AZ DB インスタンスに変更します。その後、シングル AZ DB インスタンスは、削除対象のサブネットから削除されます。
Aurora DB インスタンス
Aurora インスタンスをアベイラビリティーゾーンの外に移動するには、次の手順を実行します。
- Aurora DB インスタンスがシングル AZ 配置の場合は、Aurora DB クラスターに新しいリーダーインスタンスを追加します。新しいリーダーインスタンスを作成するときに、DB サブネットグループからアベイラビリティーゾーンのいずれかを選択します。
- DB クラスターのフェイルオーバーを強制して、新しいリーダーインスタンスを新しいライター DB インスタンスとして昇格させます。
注: ターゲットとなるリーダーインスタンスが複数あり、そのうち 1 つを指定しなかった場合、Amazon RDS は最も高い昇格階層を持つリーダーインスタンスを昇格させます。優先度の範囲は、最高優先度の 0 から最低優先度の 15 までです。詳細については、「Aurora DB クラスターのフォールトトレランス」を参照してください。 - 以前のプライマリ DB インスタンスを削除します。
DB サブネットグループからサブネットを削除する
注: サブネットでインスタンスを起動した場合、そのサブネットは削除できません。削除するサブネットで DB インスタンスを起動した場合、次のエラーメッセージが表示されます。 「DB サブネットグループの変更リクエストが失敗しました。削除するサブネットの一部が現在使用中です:」
DB サブネットグループからサブネットを削除するには、次の手順を実行します。
-
Amazon RDS コンソールを開きます。
-
ナビゲーションペインで [サブネットグループ] を選択します。
-
DB インスタンスが関連付けられているサブネットグループを選択し、[編集] を選択します。
-
[DB サブネットグループを編集] ページの [サブネットを追加] で、削除対象のサブネットを削除します。
-
どの RDS DB インスタンスがアベイラビリティーゾーンに残っているかを確認するには、describe-db-instances コマンドを実行します。
aws rds describe-db-instances \ --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \ --region us-east-1
どの Aurora DB インスタンスがアベイラビリティーゾーンに残っているかを確認するには、describe-db-instances コマンドを実行します。
aws rds describe-db-instances \ --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")' \ --region us-east-1
-
[保存] を選択します。
RDS インスタンスを元のデプロイに戻す
マルチ AZ 配置から開始した場合は、DB インスタンスをマルチ AZ 配置に変更します。シングル AZ 配置から開始した場合は、それ以上の手順は必要ありません。
Aurora DB クラスターからリーダーインスタンスを削除した場合は、クラスターに新しいリーダー DB インスタンスを追加します。シングル AZ 配置から開始した場合は、それ以上の手順は必要ありません。
関連情報
Amazon RDS DB インスタンスをパブリックサブネットから同じ VPC 内のプライベートサブネットに移動する方法を教えてください
関連するコンテンツ
- 質問済み 2ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 7年前lg...
- 質問済み 2ヶ月前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 3年前
- AWS公式更新しました 1年前
- AWS公式更新しました 3年前