使用新的資料庫執行個體設定作用中叢集 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用新的資料庫執行個體設定作用中叢集

完成下列步驟,使用新的 Amazon RDS for MySQL 資料庫執行個體設定作用中叢集。

如果您要在多個 中設定具有資料庫執行個體的作用中叢集VPC,請務必在 中完成先決條件準備跨VPC作用中叢集

步驟 1:在一或多個自訂參數群組中設定作用中叢集參數

作用中叢集中的 RDS for MySQL 資料庫執行個體必須與具有必要參數正確設定的自訂參數群組相關聯。如需每個參數和所需設定的相關資訊,請參閱 作用中-作用中叢集的必要參數設定

您可以在新的參數群組或現有的參數群組中設定這些參數。不過,為了避免意外影響不屬於作用中叢集的資料庫執行個體,強烈建議您建立新的自訂參數群組。作用中叢集中的資料庫執行個體可與相同的資料庫參數群組或不同的資料庫參數群組相關聯。

您可以使用 AWS Management Console 或 AWS CLI 建立新的自訂參數群組。如需詳細資訊,請參閱在 Amazon RDS Amazon 中創建數據庫參數組。下列範例會執行 create-db-parameter-group AWS CLI 命令,以建立名為 的自訂資料庫參數群組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 Amazon 數據庫參數組中的參數

下列範例會執行 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為作用中叢集的 MySQL 資料庫執行個體建立新的 。

RDS MySQL 資料庫執行個體的 8.0.35 版及更新版本支援主動叢集。您可以為叢集建立最多九個新的資料庫執行個體。

您可以使用 AWS Management Console 或 AWS CLI 建立新的資料庫執行個體。如需建立資料庫執行個體的詳細資訊,請參閱 建立 Amazon RDS 資料庫執行個體。當您建立資料庫執行個體時,請將其與您在上一個步驟中建立或修改的資料庫參數群組建立關聯。

步驟 3:在作用中叢集中指定資料庫執行個體

在與每個資料庫執行個體相關聯的資料庫參數群組中,將group_replication_group_seeds參數設定為您要包含在叢集中的資料庫執行個體端點。

您可以使用 AWS Management Console 或 AWS CLI 來設定 參數。設定此參數後,您不需要重新啟動資料庫執行個體。如需設定參數的詳細資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

下列範例會執行 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"
提示

請確定您在與作用中叢集group_replication_group_seeds中的資料庫執行個體相關聯的每個資料庫參數群組中設定 參數。

步驟 4:初始化資料庫執行個體上的群組並開始複寫

您可以選擇任何新的資料庫來初始化群組並開始複寫。若要這樣做,請完成下列步驟:

  1. 選擇作用中叢集中的資料庫執行個體,並連線至SQL用戶端中的該資料庫執行個體。如需連線至 RDS for MySQL 資料庫執行個體的詳細資訊,請參閱 連線至執行 MySQL 資料庫引擎的資料庫執行個體

  2. 在SQL用戶端中,執行下列預存程序並取代 group_replication_user_password 使用者的密碼rdsgrprepladminrdsgrprepladmin 使用者會保留給作用中叢集中的群組複寫連線。此使用者的密碼在作用中叢集中的所有資料庫執行個體上都必須相同。

    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,這表示二進位日誌檔案會在資料庫執行個體上保留七天。您可以調整此值以符合您的需求。

    此範例1mysql.rds_group_replication_start預存程序中指定使用目前的資料庫執行個體初始化新群組。

    如需在 範例中呼叫的預存程序的詳細資訊,請參閱 管理主動-主動叢集

步驟 5:在作用中叢集中的其他資料庫執行個體上開始複寫

對於作用中叢集中的每個資料庫執行個體,請使用SQL用戶端連線至執行個體,並執行下列預存程序。Replace (取代) 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,這表示二進位日誌檔案會在每個資料庫執行個體上保留七天。您可以調整此值以符合您的需求。

此範例0mysql.rds_group_replication_start預存程序中指定將目前的資料庫執行個體加入現有群組。

提示

請務必在作用中叢集中的所有其他資料庫執行個體上執行這些預存程序。

步驟 6:(建議) 檢查作用中叢集的狀態

若要確保叢集的每個成員都已正確設定,請連線至作用中叢集中的資料庫執行個體,並執行下列SQL命令來檢查叢集的狀態:

SELECT * FROM performance_schema.replication_group_members;

您的輸出應ONLINE會顯示每個資料庫執行個體MEMBER_STATE的 ,如下列範例輸出所示:

+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | 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值的資訊,請參閱我的SQL文件中的群組複寫伺服器狀態

步驟 7:(選用) 將資料匯入作用中叢集中的資料庫執行個體

您可以將資料從我的SQL資料庫匯入作用中叢集中的資料庫執行個體。匯入資料後,群組複寫會將其複寫到叢集中的其他資料庫執行個體。

如需有關匯入資料的資訊,請參閱 將資料匯入至 Amazon RDS MariaDB 或 MySQL 資料庫,並減少停機時間