Como posso usar logs binários de uma instância de banco de dados ativa do Amazon RDS para MySQL para replicar para uma instância on-premises em espera?

4 minuto de leitura
0

Quero copiar uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para MySQL em um servidor on-premises.

Breve descrição

Para migrar dados do Amazon RDS para MySQL para um servidor de banco de dados on-premises, primeiro crie uma réplica de leitura na AWS. Em seguida, altere o destino de replicação da réplica de leitura do Amazon RDS para MySQL para o servidor on-premises.

Se você usar a replicação baseada em GTID, consulte Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa.

Resolução

1.    Confirme se os backups automatizados estão ativados para a instância de banco de dados que você deseja replicar. Neste exemplo, a instância de banco de dados é RDS-active.
Observação: o período mínimo de retenção de backup é de um dia.

2.    Crie uma réplica de leitura da instância de banco de dados usando a mesma configuração. Neste exemplo, a réplica é RDS-standby.

3.    Faça login na instância de banco de dados RDS-standby e confirme se a réplica está atualizada com RDS-active:

mysql> show slave status \G

Observação: seconds_behind_master deve ser 0, o que significa que não há atraso na réplica.

4.    Interrompa a replicação em RDS-standby:

mysql> call mysql.rds_stop_replication;

5.    Registre os dados da réplica e, em seguida, anote os parâmetros -log_file e -log_position:

mysql> show slave status \G

Observação: -log_file é o valor de Relay_Master_Log_File e -log_position é o valor de Exec_Master_Log_Pos.

6.    Saia do terminal e use mysqldump (ou um utilitário similar) para criar um backup de RDS-standby que será replicado no servidor de destino. Neste exemplo, o servidor on-premises de destino é MySQL-target.

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

7.    Depois de criar o backup, transfira o arquivo de backup para o servidor on-premises de destino fazendo login em MySQL-target.

8.    Crie um novo banco de dados e, em seguida, restaure o banco de dados usando dumpfile na nova instância de banco de dados externa:

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

9.    Faça login na instância de banco de dados RDS-active, configure um usuário de replicação e conceda os privilégios necessários ao usuário. Certifique-se de substituir repl_user pelo seu próprio nome de usuário de replicação.

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@'%';

Observação: para obter mais informações, consulte Replicação entre o Aurora e o MySQL ou entre o Aurora e outro cluster de banco de dados do Aurora (replicação de logs binários).

10.    Faça login na instância de banco de dados de destino e, em seguida, interrompa o servidor MySQL.

11.    Modifique os parâmetros do arquivo my.cnf para apontar para a ID exclusiva do servidor e o nome do banco de dados que você deseja replicar da instância de banco de dados. Por exemplo, server_id=2 e replicate-do-db=test.

12.    Salve o arquivo.

13.    Reinicie o servidor MySQL em MySQL-target.

14.    Estabeleça uma conexão com a instância de banco de dados RDS-active. Para fazer isso, execute o seguinte comando em 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.    Confirme se MySQL-target pode se conectar a RDS-active.

Observação: se você usa o Amazon Elastic Compute Cloud (Amazon EC2) como uma instância externa do MySQL, permita conexões do grupo de segurança ou endereço IP no grupo de segurança da instância de banco de dados RDS-active. Se você usa um servidor MySQL externo, execute telnet para testar a conectividade. Para obter mais informações, consulte Como resolvo problemas de conexão com a minha instância de banco de dados do Amazon RDS?

RDS-Endpoint é o endpoint da instância de banco de dados RDS-active. O nome de usuário e a senha são os mesmos que os criados na etapa 9. Os valores MASTER_LOG_FILE e MASTER_LOG_POS são os indicados na etapa 5.

16.    Faça login em MySQL-target e inicie a replicação:

mysql> start slave;

Verifique se a replicação está sincronizando entre RDS-active e MySQL-target:

mysql> Show slave status\G

17.    Depois que os segundos atrás do master forem iguais a zero, você poderá excluir a instância de banco de dados RDS-standby.

Informações relacionadas

Como migrar para uma instância de banco de dados de edição compatível com o Aurora MySQL ou Amazon RDS usando o AWS DMS?

Exportar dados de uma instância de banco de dados do MySQL usando replicação