新しい DB インスタンスを使用したアクティブ/アクティブクラスターのセットアップ
新しい Amazon RDS for MySQL DB インスタンスを使用してアクティブ/アクティブクラスターを設定するには、以下のステップを実行します。
複数の VPC に DB インスタンスを持つアクティブ/アクティブクラスターを設定する場合は、「クロス VPC アクティブ/アクティブクラスターの準備」の前提条件を満たしていることを確認してください。
トピック
- ステップ 1: 1 つ以上のカスタムパラメータグループでアクティブ/アクティブクラスターパラメータを設定する
- ステップ 2: アクティブ/アクティブクラスターの新しい RDS for MySQL DB インスタンスを作成する
- ステップ 3: アクティブ/アクティブクラスターの DB インスタンスを指定する
- ステップ 4: DB インスタンスでグループを初期化し、レプリケーションを開始する
- ステップ 5: アクティブ/アクティブクラスター内の他の DB インスタンスでレプリケーションを開始する
- ステップ 6: (推奨) アクティブ/アクティブクラスターのステータスを確認する
- ステップ 7: (オプション) アクティブ/アクティブクラスターの DB インスタンスにデータをインポートする
ステップ 1: 1 つ以上のカスタムパラメータグループでアクティブ/アクティブクラスターパラメータを設定する
アクティブ/アクティブクラスターの RDS for MySQL DB インスタンスは、必須パラメータに正しい設定を持つカスタムパラメータグループに関連付けられている必要があります。パラメータとそれぞれの必須パラメータの詳細については、「アクティブ/アクティブクラスターに必要なパラメータ設定」を参照してください。
これらのパラメータは、新しいパラメータグループまたは既存のパラメータグループで設定できます。ただし、アクティブ/アクティブクラスターに含まれていない DB インスタンスに誤って影響しないように、新しいカスタムパラメータグループを作成することを強くお勧めします。アクティブ/アクティブクラスター内の DB インスタンスは、同じ DB パラメータグループまたは異なる DB パラメータグループに関連付けることができます。
AWS Management Console または AWS CLI を使用して、新しいカスタムパラメータグループを作成できます。詳細については、「Amazon RDS での DB パラメータグループの作成」を参照してください。次の例では、create-db-parameter-group AWS CLI コマンドを実行して、
という名前のカスタム DB パラメータグループを作成します。myactivepg
Linux、macOS、Unix の場合:
aws rds create-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --db-parameter-group-family mysql8.0 \ --description "Parameter group for active-active clusters
"
Windows の場合:
aws rds create-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --db-parameter-group-family mysql8.0 ^ --description "Parameter group for active-active clusters
"
AWS Management Console または AWS CLI を使用して、カスタムパラメータグループのパラメータを設定することもできます。詳細については、「Amazon RDS の DB パラメータグループのパラメータの変更」を参照してください。
次の例では、modify-db-parameter-group AWS CLI コマンドを実行して、パラメータを設定します。
Linux、macOS、Unix の場合:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
Windows の場合:
aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^ "ParameterName='group_replication_group_name',ParameterValue='
11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
ステップ 2: アクティブ/アクティブクラスターの新しい RDS for MySQL DB インスタンスを作成する
アクティブ/アクティブクラスターは、バージョン 8.0.35 以降の RDS for MySQL DB インスタンスでサポートされています。クラスターには最大 9 つの新しい DB インスタンスを作成できます。
AWS Management Console または AWS CLI を使用して、新しい DB インスタンスを作成できます。DB インスタンスの作成の詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。DB インスタンスを作成するとき、前のステップで作成または変更した DB パラメータグループに関連付けます。
ステップ 3: アクティブ/アクティブクラスターの DB インスタンスを指定する
各 DB インスタンスに関連付けられている DB パラメータグループで、group_replication_group_seeds
パラメータを、クラスターに含める DB インスタンスのエンドポイントに設定します。
AWS Management Console または AWS CLI を使用して、パラメータを設定できます。このパラメータを設定した後に DB インスタンスを再起動する必要はありません。パラメータの設定の詳細については、「Amazon RDS の DB パラメータグループのパラメータの変更」を参照してください。
次の例では、modify-db-parameter-group AWS CLI コマンドを実行して、パラメータを設定します。
Linux、macOS、Unix の場合:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
ヒント
アクティブ/アクティブクラスターの DB インスタンスに関連付けられている各 DB パラメータグループで group_replication_group_seeds
パラメータが設定されていることを確認します。
ステップ 4: DB インスタンスでグループを初期化し、レプリケーションを開始する
新しい DB を選択してグループを初期化し、レプリケーションを開始できます。そのためには、以下のステップを実行します。
-
アクティブ/アクティブクラスター内の DB インスタンスを選択し、SQL クライアントでその DB インスタンスに接続します。RDS for Oracle DB インスタンスへの接続の詳細については、「MySQL データベースエンジンを実行している DB インスタンスへの接続」を参照してください。
-
SQL クライアントで、次のストアドプロシージャを実行し、
group_replication_user_password
をrdsgrprepladmin
ユーザーのパスワードに置き換えます。rdsgrprepladmin
ユーザーは、アクティブ/アクティブクラスターのグループレプリケーション接続用に予約されています。このユーザーのパスワードは、アクティブ/アクティブクラスター内のすべての DB インスタンスで同じである必要があります。call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(1);この例では、
binlog retention hours
値を168
に設定します。つまり、バイナリログファイルは DB インスタンスで 7 日間保持されます。この値は、要件に合わせて調整できます。この例では、
mysql.rds_group_replication_start
ストアドプロシージャで1
を指定し、現在の DB インスタンスで新しいグループを初期化します。この例で呼び出されるストアドプロシージャの詳細については、「アクティブ/アクティブクラスターの管理」を参照してください。
ステップ 5: アクティブ/アクティブクラスター内の他の DB インスタンスでレプリケーションを開始する
アクティブ/アクティブクラスター内の各 DB インスタンスについて、SQL クライアントを使用してインスタンスに接続し、次のストアドプロシージャを実行します。group_replication_user_password
を rdsgrprepladmin
ユーザーのパスワードに置き換えます。
call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(0);
この例では、binlog retention hours
値を 168
に設定します。つまり、バイナリログファイルは DB インスタンスで 7 日間保持されます。この値は、要件に合わせて調整できます。
この例では、mysql.rds_group_replication_start
ストアドプロシージャで 0
を指定して、現在の DB インスタンスを既存のグループに結合します。
ヒント
これらのストアドプロシージャは、アクティブ/アクティブクラスター内の他のすべての DB インスタンスで実行してください。
ステップ 6: (推奨) アクティブ/アクティブクラスターのステータスを確認する
クラスターの各メンバーが正しく設定されていることを確認するには、アクティブ/アクティブクラスター内の DB インスタンスに接続し、次の SQL コマンドを実行して、クラスターのステータスを確認します。
SELECT * FROM performance_schema.replication_group_members;
出力には、次のサンプル出力のように、各 DB インスタンスの MEMBER_STATE
の ONLINE
が表示されます。
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)
可能な MEMBER_STATE
値の詳細については、MySQL ドキュメントの「グループレプリケーションサーバーの状態
ステップ 7: (オプション) アクティブ/アクティブクラスターの DB インスタンスにデータをインポートする
MySQL データベースからアクティブ/アクティブクラスターの DB インスタンスにデータをインポートできます。データがインポートされると、グループレプリケーションはクラスター内の他の DB インスタンスにレプリケートします。
データのインポートの詳細については、「ダウンタイムを短縮して Amazon RDS MariaDB または MySQL データベースにデータをインポートする」を参照してください。