Come posso utilizzare i log binari di Amazon RDS per un’istanza database attiva MySQL per la replica in un'istanza di standby on-premise?

4 minuti di lettura
0

Come posso replicare un Amazon Relational Database Service (Amazon RDS) per un’istanza database MySQL utilizzando log binari in un ambiente esterno on-premise?

Breve descrizione

Per migrare i dati da Amazon RDS per MySQL a un server di database on-premise, crea innanzitutto una replica di lettura su AWS. Quindi, cambia la destinazione di replica dalla replica di lettura Amazon RDS per MySQL con il server on-premise.

Se utilizzi la replica basata su GTID, consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna.

Risoluzione

1.    Verifica che i backup automatici siano attivati per l'istanza database che desideri replicare. In questo esempio, l'istanza database è RDS-active.
Nota: il periodo minimo di conservazione dei backup è di un giorno.

2.    Crea una replica di lettura dell'istanza database utilizzando la stessa configurazione. In questo esempio, la replica è RDS-standby.

3.    Accedi all'istanza database RDS-Standby e verifica che la replica sia stata eseguita con RDS-active:

mysql> show slave status \G

Nota: seconds_behind_master deve essere 0, il che significa che non vi è alcun ritardo nella replica.

4.    Interrompi la replica in RDS-standby:

mysql> call mysql.rds_stop_replication;

5.    Registra i dati dalla replica, quindi annota i parametri -log_file e -log_position:

mysql> show slave status \G

Nota: -log_file è il valore di Relay_Master_Log\ _File e -log_position è il valore di Exec_Master_Log_Pos.

6.    Esci dal terminale e usa mysqldump (o un'utilità simile) per creare un backup di RDS-Standby che verrà replicato sul server di destinazione. In questo esempio, il server on-premise di destinazione è MySQL-Target.

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.    Dopo aver creato il backup, trasferisci il file di backup sul server on-premise di destinazione accedendo a MySQL-Target.

8.    Crea un nuovo database, quindi ripristina il database utilizzando dumpfile nella nuova istanza database esterna:

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.    Accedi all'istanza database RDS-active, configura un utente di replica, quindi concedi all'utente i privilegi necessari. Assicurati di sostituire repl_user con il tuo nome utente di replica.

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: per ulteriori informazioni, consulta Replica tra Aurora e MySQL o tra Aurora e un altro cluster di database Aurora (replica dei log binari).

10.    Accedi all'istanza database di destinazione, quindi arresta il server MySQL.

11.    Modifica i parametri del file my.cnf file in modo che indichino l'ID univoco del server e il nome del database che desideri replicare dall'istanza database. Ad esempio, server_id=2 e replicate-do-db=test.

12.    Salva il file.

13.    Riavvia il server MySQL in MySQL-target.

14.    Stabilisci una connessione all'istanza database RDS-active. Per effettuare questa operazione, esegui il seguente comando su MySQL-target:

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;

15.    Verifica che MySQL-target possa connettersi a RDS-active.

Nota: se utilizzi Amazon Elastic Compute Cloud (Amazon EC2) come istanza MySQL esterna, devi autorizzare le connessioni dal gruppo di sicurezza o dall'indirizzo IP nel gruppo di sicurezza dell'istanza database RDS-active. Se utilizzi un server MySQL esterno, esegui telnet per testare la connettività. Per ulteriori informazioni, consulta In che modo è possibile risolvere i problemi durante la connessione all'istanza database di Amazon RDS?

RDS-Endpoint è l'endpoint dell'istanza database RDS-active. Il nome utente e la password sono gli stessi nome utente e password che hai creato nel passaggio 9. MASTER_LOG_FILE e MASTER_LOG_POS sono i valori annotati al passaggio 5.

16.    Accedi a MySQL-target e avvia la replica:

mysql> start slave;

Verifica che la replica sia sincronizzata tra RDS-active e MySQL-target:

mysql> Show slave status\G

17.    Quando i secondi di ritardo rispetto al master sono uguali a zero, è possibile eliminare l'istanza database RDS-standby.

Informazioni correlate

How do I migrate to an Amazon RDS or Aurora MySQL-Compatible Edition DB instance using AWS DMS?

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