Salta al contenuto

Come posso utilizzare i log binari di un'istanza database Amazon RDS per MySQL attiva per replicare su un server di standby on-premises?

5 minuti di lettura
0

Desidero replicare un'istanza database Amazon Relational Database Service (Amazon RDS) per MySQL su un server di standby on-premises.

Breve descrizione

Per eseguire la migrazione di dati da un'istanza database Amazon RDS per MySQL a un server on-premises, crea una replica in lettura su AWS. Quindi cambia la destinazione di replica passando dalla replica in lettura Amazon RDS per MySQL al server on-premises.

Se utilizzi la replica basata sull'identificatore di transazione globale (GTID), consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna.

Risoluzione

Crea una replica in lettura dell'istanza database attiva

Completa i seguenti passaggi:

  1. Verifica di aver attivato i backup automatici per l'istanza database attiva che desideri replicare.
    Nota: il periodo minimo di conservazione dei backup è di 1 giorno. Quando esegui il backup dei dati, incorri in costi aggiuntivi. Per ulteriori informazioni, consulta Prezzi di Amazon RDS.

  2. Crea una replica in lettura dell'istanza database attiva con la stessa configurazione.

  3. Accedi all'istanza database della replica in lettura.

  4. Esegui questo comando per verificare che l'istanza database della replica in lettura corrisponda all'istanza database attiva.
    Per MySQL versione 8.0.23 e successive:

    mysql> show replica status \G

    Per MySQL versioni precedenti alla 8.0.23:

    mysql> show slave status \G

    Nota: quando l'istanza di replica non è in ritardo rispetto all'istanza database, il parametro Seconds_Behind_Master risulta pari a 0.

  5. Esegui questo comando per interrompere la replica sull'istanza database della replica in lettura:

    mysql> call mysql.rds_stop_replication;
  6. Per registrare i parametri -log_file e -log_position, esegui questo comando sull'istanza database della replica in lettura.
    Per MySQL versione 8.0.23 e successive:

    mysql> show replica status \G

    Per MySQL versioni precedenti alla 8.0.23:

    mysql> show slave status \G

    Nota: -log_file è il valore di relay_source_log_file e -log_position è il valore di exec_source_log_pos.

Crea un file di dump dell'istanza database della replica in lettura

Completa i seguenti passaggi:

  1. Esegui questo comando nel client mysqldump o in un'utilità simile per creare un backup dell'istanza database della replica in lettura:

    mysqldump -h hostname -u username -p dbname > backup_file_name.sql
  2. Accedi al server on-premises, quindi trasferisci il file di dump sul server.

Ripristina il file dump nella nuova istanza database

Completa i seguenti passaggi:

  1. Crea una nuova istanza database esterna sul server on-premises.

  2. Esegui questo comando per ripristinare il file dump nella nuova istanza database esterna:

    mysql -h hostname -u username -p dbname < backup_file_name.sql
  3. Accedi all'istanza database attiva.

  4. Esegui questo comando per configurare un utente di replica e concedergli le autorizzazioni necessarie:

    mysql> create user repl_user@'%' identified by 'repl_user';     
    mysql> grant replication slave, replication client on *.* to repl_user@'%';  
    mysql> show grants for repl_user@'%';

    Nota: sostituisci repl_user con il nome del tuo utente di replica.

  5. Accedi alla nuova istanza database esterna e arresta il server on-premises.

  6. Modifica i parametri del file my.cnf in modo che puntino all'ID del server univoco e al nome del database che desideri replicare. Ad esempio, server_id=2 e replicate-do-db=test.

  7. Salva il file.

  8. Riavvia il server on-premises.

Verifica che la nuova istanza database esterna possa connettersi all'istanza database attiva

Se utilizzi Amazon Elastic Compute Cloud (Amazon EC2) come istanza MySQL esterna, aggiorna l'istanza per consentire le connessioni dal gruppo di sicurezza. Oppure consenti le connessioni dall'indirizzo IP nel gruppo di sicurezza dell'istanza database attiva. Se utilizzi un server MySQL esterno, esegui telnet per testare la connettività. Per ulteriori informazioni, consulta Perché non riesco a connettermi alla mia istanza database Amazon RDS?

Completa i seguenti passaggi:

  1. Per modificare i parametri utilizzati dal server di replica per connettersi all'origine, esegui questo comando sulla nuova istanza database esterna.
    Per MySQL versione 8.0.23 e successive:
    mysql> change replication source to source_host='rds-endpoint', source_user='repl_user', source_password='password', source_log_file='mysql-bin.000001', source_log_pos=107;
    Per MySQL versioni precedenti alla 8.0.23:
    mysql> change master to master_host='rds-endpoint', master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=107;  
    
    Nota: sostituisci rds-endpoint con l'endpoint dell'istanza database attiva. Utilizza il nome utente e la password che hai creato quando hai ripristinato il file di dump nel nuovo database. Sostituisci i valori relay_source_file e exec_source_log_pos con i valori -log_file e -log_position della replica in lettura.
  2. Verifica che il server on-premises sia in grado di connettersi all'istanza database attiva.

Avvia la replica

Completa i seguenti passaggi:

  1. Accedi al server on-premises.

  2. Esegui questo comando per avviare la replica:
    Per MySQL versione 8.0.23 e successive:

    mysql> start replica;

    Per MySQL versioni precedenti alla 8.0.23:

    mysql> start slave;
  3. Esegui questo comando per verificare che la replica sia sincronizzata tra l'istanza database attiva e il server on-premises:
    Per MySQL versione 8.0.23 e successive:

    mysql> show replica status\G

    Per MySQL versioni precedenti alla 8.0.23:

    mysql> show slave status\G
  4. Quando il parametro Seconds_Behind_Master è uguale a 0, elimina l'istanza database della replica in lettura.

Informazioni correlate

Come posso migrare a un'istanza database Amazon RDS o Amazon Aurora utilizzando AWS DMS?

Esportazione di dati da un'istanza database MySQL utilizzando la replica

Replica tra Aurora e MySQL o tra Aurora e un altro cluster di database Aurora (replica di log binari)