

# アクティブ/アクティブクラスターの制限と考慮事項
<a name="mysql-active-active-clusters-considerations-limitations"></a>

Amazon RDS のアクティブ/アクティブクラスターは、複数のインスタンスにワークロードを分散することで、可用性とスケーラビリティを向上させます。ただし、このアーキテクチャを使用する際に留意すべき重要な制限と考慮事項があります。

以下のセクションでは、レプリケーションの遅延、競合解決、リソースの割り当て、フェイルオーバー動作などの主要な要因の概要を説明します。これらの考慮事項を理解することは、アクティブ/アクティブクラスターデプロイで最適なパフォーマンスと信頼性を確保するのに役立ちます。

**Topics**
+ [RDS for MySQL アクティブ/アクティブクラスターの制限事項](#mysql-active-active-clusters-limitations)
+ [RDS for MySQL アクティブ/アクティブクラスターに関する考慮事項とベストプラクティス](#mysql-active-active-clusters-considerations)

## RDS for MySQL アクティブ/アクティブクラスターの制限事項
<a name="mysql-active-active-clusters-limitations"></a>

RDS for MySQL のアクティブ/アクティブクラスターには、以下の制限事項が適用されます。
+ アクティブ/アクティブクラスター内の DB インスタンスについては、マスターユーザー名を `rdsgrprepladmin` にすることはできません。このユーザー名は、グループレプリケーション接続用に予約されています。
+ アクティブ/アクティブクラスター内のリードレプリカ付き DB インスタンスの場合、`Replicating` 以外のレプリケーションステータスが長くなると、ログファイルがストレージ制限を超える可能性があります。リードレプリカのステータスについては、「[リードレプリケーションのモニタリング](USER_ReadRepl.Monitoring.md)」を参照してください。
+ ブルー/グリーンデプロイは、アクティブ/アクティブクラスター内の DB インスタンスではサポートされません。詳細については、「[データベース更新のために Amazon RDS ブルー/グリーンデプロイを使用する](blue-green-deployments.md)」を参照してください。
+ Kerberos 認証は、アクティブ/アクティブクラスター内の DB インスタンスではサポートされません。詳細については、「[Amazon RDS for MySQL での Kerberos 認証の使用](mysql-kerberos.md)」を参照してください。
+ マルチ AZ DB クラスターの DB インスタンスをアクティブ/アクティブクラスターに追加することはできません。ただし、マルチ AZ DB インスタンスデプロイの DB インスタンスをアクティブ/アクティブクラスターに追加することはできます。詳細については、「[Amazon RDS でのマルチ AZ 配置の設定と管理](Concepts.MultiAZ.md)」を参照してください。
+ プライマリキーを持たないテーブルは、グループレプリケーションプラグインによって書き込みが拒否されるため、アクティブ/アクティブクラスターにレプリケートされません。
+ InnoDB 以外のテーブルは、アクティブ/アクティブクラスターにレプリケートされません。
+ アクティブ/アクティブクラスターは、クラスター内の異なる DB インスタンスでの DML ステートメントと DDL ステートメントの同時実行をサポートしていません。
+ グループのレプリケーションモードとしてシングルプライマリモードを使用するようにアクティブ/アクティブクラスターを設定することはできません。この設定については、代わりにマルチ AZ DB クラスターを使用することをお勧めします。詳細については、「[Amazon RDS のマルチ AZ DB クラスターデプロイ](multi-az-db-clusters-concepts.md)」を参照してください。
+ マルチソースレプリケーションは、アクティブ/アクティブクラスターの DB インスタンスではサポートされていません。
+ クロスリージョンのアクティブ/アクティブクラスターは、グループレプリケーション接続に認証機関 (CA) 検証を適用できません。

## RDS for MySQL アクティブ/アクティブクラスターに関する考慮事項とベストプラクティス
<a name="mysql-active-active-clusters-considerations"></a>

RDS for MySQL アクティブ/アクティブクラスターを使用する前に、以下の考慮事項とベストプラクティスを確認してください。
+ アクティブ/アクティブクラスターには、10 個以上の DB インスタンスを含めることはできません。
+ グループレプリケーションプラグインを使用すると、アクティブ/アクティブクラスターのトランザクション整合性保証を制御できます。詳細については、MySQL ドキュメントの「[トランザクション整合性保証](https://dev.mysql.com/doc/refman/8.0/en/group-replication-consistency-guarantees.html)」を参照してください。
+ 異なる DB インスタンスがアクティブ/アクティブクラスター内の同じ行を更新すると、競合が発生する可能性があります。競合と競合の解決については、MySQL ドキュメントの「[グループレプリケーション](https://dev.mysql.com/doc/refman/8.0/en/group-replication-summary.html)」を参照してください。
+ 耐障害性を確保するために、アクティブ/アクティブクラスターに少なくとも 3 つの DB インスタンスを含めます。アクティブ/アクティブクラスターは、1 つまたは 2 つの DB インスタンスのみで設定できますが、クラスターは耐障害性がありません。耐障害性の詳細については、MySQL ドキュメントの「[耐障害性](https://dev.mysql.com/doc/refman/8.0/en/group-replication-fault-tolerance.html)」を参照してください。
+ DB インスタンスが既存のアクティブ/アクティブクラスターに参加し、クラスター内の最も低いエンジンバージョンと同じエンジンバージョンを実行している場合、DB インスタンスは読み取り/書き込みモードで参加します。
+ DB インスタンスが既存のアクティブ/アクティブクラスターに参加し、クラスター内の最も低いエンジンバージョンより高いエンジンバージョンを実行している場合、DB インスタンスは読み取り専用モードにとどまる必要があります。
+ DB パラメータグループの `rds.group_replication_enabled` パラメータを `1` に設定することによって DB インスタンスのグループレプリケーションを有効にしても、レプリケーションが開始されていないか、開始に失敗した場合、データの不整合を防ぐために DB インスタンスはスーパー読み取り専用モードになります。スーパー読み取り専用モードの詳細については、「[MySQL ドキュメント](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_super_read_only)」を参照してください。
+ アクティブ/アクティブクラスター内の DB インスタンスをアップグレードできますが、アクティブ/アクティブクラスター内の他のすべての DB インスタンスが同じエンジンバージョンまたはそれ以上のエンジンバージョンにアップグレードされるまで、DB インスタンスは読み取り専用です。DB インスタンスをアップグレードすると、アップグレードが完了したとき、DB インスタンスは同じアクティブ/アクティブクラスターに自動的に参加します。DB インスタンスの意図しない読み取り専用モードへの切り替えを回避するには、自動マイナーバージョンアップグレードを無効にします。MySQL DB インスタンスのアップグレードの詳細については、「[RDS for MySQL DB エンジンのアップグレード](USER_UpgradeDBInstance.MySQL.md)」を参照してください。
+ マルチ AZ DB インスタンスデプロイの DB インスタンスを既存のアクティブ/アクティブクラスターに追加できます。アクティブ/アクティブクラスターのシングル AZ DB インスタンスをマルチ AZ DB インスタンスデプロイに変換することもできます。マルチ AZ 配置のプライマリ DB インスタンスに障害が発生した場合、そのプライマリインスタンスはスタンバイインスタンスにフェイルオーバーします。フェイルオーバーが完了すると、新しいプライマリ DB インスタンスは同じクラスターに自動的に参加します。マルチ AZ DB インスタンスデプロイの詳細については、「[Amazon RDS のマルチ AZ DB インスタンスデプロイ](Concepts.MultiAZSingleStandby.md)」を参照してください。
+ アクティブ/アクティブクラスターの DB インスタンスでは、メンテナンスウィンドウの時間範囲を変更することをお勧めします。この方法により、クラスター内の複数の DB インスタンスがメンテナンスのために同時にオフラインになるのを避けることができます。詳細については、「[Amazon RDS メンテナンスウィンドウ](USER_UpgradeDBInstance.Maintenance.md#Concepts.DBMaintenance)」を参照してください。
+ アクティブ/アクティブクラスターは、DB インスタンス間の接続に SSL を使用できます。SSL 接続を設定するには、[group\$1replication\$1recovery\$1use\$1ssl](https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_recovery_use_ssl) および [ group\$1replication\$1ssl\$1mode](https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_ssl_mode) パラメータを設定します。これらのパラメータの値は、アクティブ/アクティブクラスター内のすべての DB インスタンスで一致する必要があります。

  現在、アクティブ/アクティブクラスターは、AWS リージョン 間の接続の認証機関 (CA) 検証をサポートしていません。そのため、[group\$1replication\$1ssl\$1mode](https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_ssl_mode) パラメータは、クロスリージョンクラスターの場合は `DISABLED` (デフォルト) または `REQUIRED` に設定する必要があります。
+ RDS for MySQL のアクティブ/アクティブクラスターは、マルチプライマリモードで実行します。[group\$1replication\$1enforce\$1update\$1everywhere\$1checks](https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_enforce_update_everywhere_checks) のデフォルト値は `ON` であり、パラメータは静的です。このパラメータが `ON` に設定されると、外部キーのカスケード制約があるテーブルにアプリケーションを挿入できません。
+ RDS for MySQL アクティブ/アクティブクラスターは、XCOM の代わりに MySQL 通信スタックを使用して接続セキュリティを確保します。詳細については、MySQL ドキュメントの「[接続セキュリティ管理のための通信スタック](https://dev.mysql.com/doc/refman/8.0/en/group-replication-connection-security.html)」を参照してください。
+ DB パラメータグループがアクティブ/アクティブクラスター内の DB インスタンスに関連付けられている場合は、この DB パラメータグループをクラスター内の他の DB インスタンスにのみ関連付けることをお勧めします。
+ アクティブ/アクティブクラスターは RDS for MySQL DB インスタンスのみをサポートします。これらの DB インスタンスは、サポートされているバージョンの DB エンジンを実行している必要があります。
+ アクティブ/アクティブクラスター内の DB インスタンスに予期しない障害が発生した場合、RDS は DB インスタンスの回復を自動的に開始します。DB インスタンスが回復しない場合は、クラスター内の正常な DB インスタンスでポイントインタイムリカバリを実行して、新しい DB インスタンスに置き換えることをお勧めします。手順については、「[ポイントインタイムリカバリを使用してアクティブ/アクティブクラスターに DB インスタンスを追加する](mysql-active-active-clusters-adding.md#mysql-active-active-clusters-adding-pitr)」を参照してください。
+ クラスター内の他の DB インスタンスに影響を与えることなく、アクティブ/アクティブクラスター内の DB インスタンスを削除できます。DB インスタンスの削除については、「[DB インスタンスを削除する](USER_DeleteInstance.md)」を参照してください。
+ DB インスタンスが意図せずにアクティブ/アクティブクラスターを離れると、デフォルトで `group_replication_exit_state_action`パラメータが `OFFLINE_MODE` に変わります。この状態では、DB インスタンスにアクセスできず、DB インスタンスを再起動してオンラインに戻し、クラスターを再結合する必要があります。この動作を変更するには、カスタムパラメータグループの `group_replication_exit_state_action` パラメータを変更します。パラメータを `READ_ONLY` に設定することで、DB インスタンスが意図せずにクラスターを離れたときに、オフラインではなくスーパー読み取り専用状態になります。