Conversione di un’istanza database esistente in un cluster attivo-attivo - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Conversione di un’istanza database esistente in un cluster attivo-attivo

La versione del motore di database dell’istanza database da migrare in cluster attivo-attivo deve essere una delle seguenti:

  • Tutte le versioni di MySQL 8.4

  • MySQL 8.0.35 e versioni secondarie successive

Se è necessario aggiornare la versione del motore, consulta Aggiornamenti del motore di database RDS per MySQL.

Se configuri un cluster attivo-attivo con istanze database in più di un cloud privato virtuale, verifica che i prerequisiti in Preparazione per un cluster attivo-attivo tra VPC siano soddisfatti.

Per migrare un’istanza database esistente in un cluster attivo-attivo per RDS per MySQL, esegui queste operazioni.

Fase 1: impostare i parametri del cluster attivo-attivo in uno o più gruppi di parametri personalizzati

Le istanze database RDS per MySQL in un cluster attivo-attivo devono essere associate a un gruppo di parametri personalizzato con l’impostazione corretta per i parametri richiesti. Per ulteriori informazioni sui parametri e la relativa impostazione per ciascuno, consulta Impostazioni dei parametri richieste per i cluster attivi-attivi.

È possibile impostare i parametri in nuovi gruppi di parametri o in gruppi di parametri esistenti. Tuttavia, per evitare di influire accidentalmente sulle istanze database che non fanno parte del cluster attivo-attivo, si consiglia di creare un nuovo gruppo di parametri personalizzato. Le istanze database di un cluster attivo-attivo possono essere associate allo stesso gruppo di parametri di database oppure a gruppi di parametri di database diversi.

Per creare un nuovo gruppo di parametri personalizzato, è possibile utilizzare la AWS Management Console o la AWS CLI. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri database in Amazon RDS. L’esempio seguente utilizza il comando create-db-parameter-group della AWS CLI per creare un gruppo di parametri di database personalizzato denominato myactivepg per RDS per MySQL 8.0:

Per Linux, macOS o 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"

Per 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"

È anche possibile utilizzare la AWS Management Console o la AWS CLI per impostare i parametri nel gruppo di parametri personalizzato. Per ulteriori informazioni, consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.

L’esempio seguente utilizza il comando modify-db-parameter-group della AWS CLI per impostare i parametri per RDS per MySQL 8.0. Per utilizzare questo esempio con RDS per MySQL 8.4, modificare slave_preserve_commit_order in replica_preserve_commit_order.

Per Linux, macOS o 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"

Per 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"

Fase 2: associare l’istanza database a un gruppo di parametri di database con i parametri di replica di gruppo richiesti impostati

Associa l’istanza database a un gruppo di parametri di database creato o modificato nella fase precedente. Per istruzioni, consultare Associazione di un gruppo di parametri database a un’istanza database in Amazon RDS.

Affinché le nuove impostazioni del parametro abbiano effetto, riavvia l’istanza database. Per istruzioni, consultare Riavvio di un'istanza database.

Fase 3: creare il cluster attivo-attivo

Nel gruppo di parametri di database associato a ciascuna istanza database, imposta il parametro group_replication_group_seeds sull’endpoint delle istanze database in fase di conversione.

Per impostare il parametro, è possibile utilizzare la AWS Management Console o la AWS CLI. Dopo aver impostato il parametro, non è necessario riavviare l’istanza database. Per informazioni sull'estensione dei parametri consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.

L’esempio seguente utilizza il comando modify-db-parameter-group della AWS CLI per impostare i parametri:

Per Linux, macOS o 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',ApplyMethod=immediate"

Per 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',ApplyMethod=immediate"

Fase 4: creare istanze database RDS per MySQL per il cluster attivo-attivo

Per creare istanze database aggiuntive per il cluster attivo-attivo, esegui il recupero point-in-time sull’istanza database in fase di conversione. Per istruzioni, consultare Aggiunta di un’istanza database a un cluster attivo-attivo tramite il recupero point-in-time.

Nei cluster attivi-attivi possono essere presenti fino a nove istanze database. Esegui il recupero point-in-time sull’istanza database fino a ottenere il numero di istanze database desiderate per il cluster. Quando esegui il recupero point-in-time, assicurati di associare l’istanza database in fase di aggiunta a un gruppo di parametri di database con rds.group_replication_enabled impostato su 1. In caso contrario, la replica di gruppo non verrà avviata sull’istanza database aggiunta.

Fare 5: inizializzare il gruppo sull’istanza database in fase di conversione

Inizializza il gruppo e avvia la replica:

  1. Connettiti all’istanza database in fase di conversione in un client SQL. Per ulteriori informazioni sulla connessione a un’istanza database RDS per MySQL, consulta Connessione all’istanza database MySQL.

  2. Nel client SQL, esegui queste stored procedure e sostituisci group_replication_user_password con la password per l’utente rdsgrprepladmin. In un cluster attivo-attivo, l’utente rdsgrprepladmin è riservato alle connessioni di replica di gruppo. La password di tale utente deve essere la stessa su tutte le istanze database di un cluster attivo-attivo.

    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);

    Questo esempio imposta il valore binlog retention hours su 168 in modo che i file di log binari vengano mantenuti per sette giorni nell’istanza database. È possibile modificare questo valore per soddisfare i requisiti specifici.

    Questo esempio specifica 1 nella stored procedure mysql.rds_group_replication_start per inizializzare un nuovo gruppo con l’istanza database corrente.

    Per ulteriori informazioni sulle stored procedure chiamate nell’esempio, consulta Gestione di cluster attivi-attivi.

Fase 6: avviare la replica sulle altre istanze database nel cluster attivo-attivo

Per ciascuna istanza database del cluster attivo-attivo, utilizza un client SQL per connetterti all’istanza ed esegui queste stored procedure. Sostituisci group_replication_user_password con la password per l’utente 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);

Questo esempio imposta il valore binlog retention hours su 168 in modo che i file di log binari vengano mantenuti per sette giorni in ciascuna istanza database. È possibile modificare questo valore per soddisfare i requisiti specifici.

L’esempio specifica 0 nella stored procedure mysql.rds_group_replication_start per unire l’istanza database corrente a un gruppo esistente.

Suggerimento

Assicurati di eseguire queste stored procedure su tutte le altre istanze database del cluster attivo-attivo.

Fase 7 (consigliata): verificare lo stato del cluster attivo-attivo

Per verificare che ogni membro del cluster sia configurato correttamente, connettiti a un’istanza database del cluster attivo-attivo ed esegui questo comando SQL per controllare lo stato del cluster:

SELECT * FROM performance_schema.replication_group_members;

L’output deve essere ONLINE per l’elemento MEMBER_STATE di ogni istanza database, come nell’output di esempio seguente:

+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | 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)

Per informazioni sui possibili valori MEMBER_STATE, consulta Group Replication Server States nella documentazione MySQL.