

# リードレプリカを使用してマルチ AZ DB クラスターに移行する
<a name="multi-az-db-clusters-migrating-to-with-read-replica"></a>

シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターデプロイに少ないダウンタイムで移行するには、マルチ AZ DB クラスターリードレプリカを作成します。ソースとして、シングル AZ デプロイの DB インスタンス、またはマルチ AZ DB インスタンスデプロイのプライマリ DB インスタンスを指定します。DB インスタンスは、マルチ AZ DB クラスターへの移行時に書き込みトランザクションを処理できます。

以下は、マルチ AZ DB クラスターのリードレプリカを作成する前の考慮事項です。
+ ソース DB インスタンスは、マルチ AZ DB クラスターをサポートするバージョンである必要があります。詳細については、「[Amazon RDS のマルチ AZ DB クラスターでサポートされているリージョンと DB エンジン](Concepts.RDS_Fea_Regions_DB-eng.Feature.MultiAZDBClusters.md)」を参照してください。
+ マルチ AZ DB クラスターのリードレプリカは、ソースと同じメジャーバージョンで、同じかそれ以上のマイナーバージョンでなければなりません。
+ バックアップ保持期間を 0 以外の値に設定することで、ソース DB インスタンスで自動バックアップを有効にする必要があります。
+ ソース DB インスタンスに割り当てられるストレージは 100 GiB 以上でなければなりません。
+ RDS for MySQL では、`gtid-mode` と `enforce_gtid_consistency` パラメータの両方は、ソース DB インスタンスの `ON` に設定する必要があります。デフォルトのパラメータグループではなく、カスタムパラメータグループを使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの DB パラメータグループ](USER_WorkingWithDBInstanceParamGroups.md)」を参照してください。
+ アクティブな長時間実行トランザクションの場合、リードレプリカの作成プロセスに時間がかかることがあります。長時間実行トランザクションが完了してから、リードレプリカを作成することをお勧めします。
+ マルチ AZ DB クラスターのリードレプリカのソース DB インスタンスを削除した場合、リードレプリカはスタンドアロンのマルチ AZ DB クラスターに昇格されます。

## マルチ AZ DB クラスターのリードレプリカの作成と昇格
<a name="multi-az-db-clusters-migrating-to-create-promote"></a>

マルチAZ DB クラスターのリードレプリカの作成と昇格には、AWS マネジメントコンソール、AWS CLI、または RDS API を使用します。

**注記**  
ソース DB インスタンスの Amazon VPC に基づいて、すべてのリードレプリカを同じ仮想プライベートクラウド (VPC) に作成することを強くお勧めします。  
リードレプリカをソース DB インスタンスとは異なる VPC に作成すると、クラスレスドメイン間ルーティング (CIDR) の範囲がレプリカと Amazon RDS システムとの間で重複する可能性があります。CIDR が重複すると、レプリカが不安定になり、レプリカに接続するアプリケーションに悪影響を及ぼす可能性があります。リードレプリカの作成時にエラーが発生した場合は、別のターゲット DB サブネットグループを選択します。詳細については、「[VPC 内の DB インスタンスの使用](USER_VPC.WorkingWithRDSInstanceinaVPC.md)」を参照してください。

### コンソール
<a name="multi-az-db-clusters-migrating-to-create-promote-console"></a>

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、AWS マネジメントコンソール を使用して次の手順を実行します。

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) を開きます。

1. マルチ AZ DB クラスターのリードレプリカを作成します。

   1. ナビゲーションペインで、[**データベース**] を選択します。

   1. リードレプリカのソースとして使用する DB インスタンスを選択します。

   1. [**アクション**] で [**リードレプリカの作成**] を選択します。

   1. **[Availability and durability]** (可用性と耐久性) で、**[Multi-AZ DB cluster]** (マルチ AZ DB クラスター) を選択します。

   1. **DB インスタンス識別子**に、リードレプリカの名前を入力します。

   1. 残りのセクションで、DB クラスター設定を指定します。設定の詳細については、「[マルチ AZ DB クラスターを作成するための設定](create-multi-az-db-cluster.md#create-multi-az-db-cluster-settings)」を参照してください。

   1. [**Create read replica**] を選択します。

1. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

   1. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

      データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。`ReplicaLag` メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「[リードレプリケーションのモニタリング](USER_ReadRepl.Monitoring.md)」を参照してください。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールで、[**Databases (データベース)**] を選択します。

      [**Databases (データベース)**] ペインが表示されます。各リードレプリカには､[**Role (ロール)**] 列に [**Replica (レプリカ)**] があります｡

   1. 昇格するマルチ AZ DBクラスターのリードレプリカを選択します。

   1. [**アクション**] で、[**Promote (昇格)**] を選択します。

   1. **[Promote read replica]** (リードレプリカの昇格) ページで、新しく昇格されたマルチ AZ DB クラスターのバックアップ保持期間とバックアップウィンドウを入力します。

   1. 希望通りの設定になったら、**[Promote read replica]** (リードレプリカの昇格) を選択します。

   1. 昇格されたマルチ AZ DB クラスターのステータスが `Available` になるまで待ちます。

   1. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

   必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、[DB インスタンスを削除する](USER_DeleteInstance.md) を参照してください。

### AWS CLI
<a name="multi-az-db-clusters-migrating-to-create-promote-cli"></a>

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、AWS CLI を使用して次の手順を実行します。

1. マルチ AZ DB クラスターのリードレプリカを作成します。

   ソース DB インスタンスからリードレプリカを作成するには、AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) を使用します。`--replication-source-identifier` として、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。

   Linux、macOS、Unix の場合:

   ```
   aws rds create-db-cluster \
     --db-cluster-identifier mymultiazdbcluster \
     --replication-source-identifier arn:aws:rds:us-east-2:123456789012:db:mydbinstance
     --engine postgres \
     --db-cluster-instance-class db.m5d.large \
     --storage-type io1 \
     --iops 1000 \
     --db-subnet-group-name defaultvpc \
     --backup-retention-period 1
   ```

   Windows の場合:

   ```
   aws rds create-db-cluster ^
     --db-cluster-identifier mymultiazdbcluster ^
     --replication-source-identifier arn:aws:rds:us-east-2:123456789012:db:mydbinstance
     --engine postgres ^
     --db-cluster-instance-class db.m5d.large ^
     --storage-type io1 ^
     --iops 1000 ^
     --db-subnet-group-name defaultvpc ^
     --backup-retention-period 1
   ```

1. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

   データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。`Replica Lag` メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「[リードレプリケーションのモニタリング](USER_ReadRepl.Monitoring.md)」を参照してください。

1. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

   マルチ AZ DB クラスターのリードレプリカを昇格するには、AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html) を使用します。`--db-cluster-identifier` として、マルチ AZ DB クラスターリードレプリカの ID を指定します。

   ```
   aws rds promote-read-replica-db-cluster --db-cluster-identifier mymultiazdbcluster
   ```

1. 昇格されたマルチ AZ DB クラスターのステータスが `Available` になるまで待ちます。

1. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、[DB インスタンスを削除する](USER_DeleteInstance.md) を参照してください。

### RDS API
<a name="multi-az-db-clusters-migrating-to-create-promote-api"></a>

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、RDS AAPI を使用して次の手順を実行します。

1. マルチ AZ DB クラスターのリードレプリカを作成します。

   マルチ AZ DB クラスターのリードレプリカを作成するには、必須パラメータ `DBClusterIdentifier` を指定して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) オペレーションを使用します。`ReplicationSourceIdentifier` として、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。

1. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

   データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。`Replica Lag` メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「[リードレプリケーションのモニタリング](USER_ReadRepl.Monitoring.md)」を参照してください。

1. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

   マルチ AZ DB クラスターのリードレプリカを昇格するには、必須パラメータ `DBClusterIdentifier` を指定して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplicaDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplicaDBCluster.html) オペレーションを使用します。マルチ AZ DB クラスターリードレプリカの ID を指定します。

1. 昇格されたマルチ AZ DB クラスターのステータスが `Available` になるまで待ちます。

1. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、[DB インスタンスを削除する](USER_DeleteInstance.md) を参照してください。

## マルチ AZ DB クラスターのリードレプリカの作成に関する制限事項
<a name="multi-az-db-clusters-migrating-to-limitations"></a>

次の制限は、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイから マルチ AZ DB クラスターのリードレプリカを作成する際に適用されます。
+ ソース DB インスタンスを所有する AWS アカウント とは異なる AWS アカウント では、マルチ AZ DB クラスターのリードレプリカを作成することはできません。
+ マルチ AZ DB クラスターのリードレプリカは、ソース DB インスタンスとは異なる AWS リージョン で作成することはできません。
+ マルチ AZ DB クラスターのリードレプリカを指定の時点に復元することはできません。
+ ストレージ暗号化は、ソース DB インスタンスとマルチ AZ DB クラスターで同じ設定にする必要があります。
+ ソース DB インスタンスが暗号化されている場合、マルチ AZ DB クラスターのリードレプリカは同じ KMS キーを使用して暗号化する必要があります。
+ ソース DB インスタンスが汎用 SSD (gp3) ストレージを使用しており、割り当てられたストレージが 400 GiB 未満の場合、マルチ AZ DB クラスターのリードレプリカのプロビジョンド IOPS は変更できません。
+ ソース DB インスタンスでマイナーバージョンアップグレードを実行するには、まず、マルチ AZ DB クラスターリードレプリカでマイナーバージョンアップグレードを実行する必要があります。
+ RDS for PostgreSQL マルチ AZ DB クラスターのリードレプリカでマイナーバージョンアップグレードを実行すると、アップグレード後にリーダー DB インスタンスがライター DB インスタンスに切り替えられません。したがって、Amazon RDS がライターインスタンスをアップグレードしている間に、DB クラスターでダウンタイムが発生する可能性があります。
+ マルチ AZ DB クラスターのリードレプリカでメジャーバージョンアップグレードを実行することはできません。
+ マルチ AZ DB クラスターリードレプリカのソース DB インスタンスでメジャーバージョンアップグレードを実行できますが、リードレプリカへのレプリケーションは停止し、再開できません。
+ マルチ AZ DB クラスターのリードレプリカは、カスケードリードレプリカをサポートしていません。
+ RDS for PostgreSQL では、マルチ AZ DB クラスターのリードレプリカはフェイルオーバーできません。