Como faço para migrar minha instância de banco de dados do Amazon RDS for MySQL usando um horário de início personalizado?

6 minuto de leitura
0

Quero migrar minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para MySQL a uma outra instância de banco de dados MySQL usando um horário de início personalizado. Como posso fazer isso?

Breve descrição

Para migrar dados do Amazon RDS for MySQL a uma outra instância de banco de dados MySQL, você pode usar um dos seguintes métodos:

  • Replicação baseada em log binário
    Observação: se você estiver usando a versão MySQL 8.0.17, o mecanismo talvez não registre a última posição do arquivo de log binário e o nome do arquivo durante uma recuperação de falha. Por isso, você não poderá usar a abordagem de replicação de log binário para migrar seus dados. Verifique o site do MySQL para esse problema conhecido.
  • AWS DMS

Resolução

Replicação de log binário

Pré-requisitos:

  • A replicação de log binário usa arquivos de log binário gerados na fonte para registrar as alterações em andamento. Defina o parâmetro binlog_format para o formato de registro binário de sua escolha (ROW, STATEMENT ou MIXED).
  • Aumente o parâmetro de horas de retenção de log binário para um valor superior ao valor atual. Dessa forma, os logs binários que ainda não foram enviados permanecem na instância de origem do Amazon RDS for MySQL.
  • Certifique-se de que a instância do Amazon RDS for MySQL seja acessível a partir do host de destino.

Para migrar dados do Amazon RDS for MySQL a uma outra instância de banco de dados MySQL usando replicação de log binário, execute o seguinte:

1.    Realize a restauração point-in-time da instância de banco de dados do Amazon RDS de origem com uma hora de início personalizada (ou um valor point-in-time).

2.    Crie um backup da instância do RDS de restauração point-in-time.

Por exemplo, você pode usar mysqldump para executar esta tarefa:

mysqldump -h rdsendpoint -u username -p dbname > backupfile.sql

3.    Verifique o arquivo de log de erros da instância do RDS de restauração point-in-time e registre a mensagem relacionada ao último arquivo de log binário aplicado e à posição. 

Aqui está um exemplo de mensagem de arquivo de log:

[Note] InnoDB: Last MySQL binlog file position 0 456, file name mysql-bin-changelog.152707

Observação: você precisará acessar o arquivo de log binário de registro e quaisquer arquivos de log binário subsequentes para replicação. A replicação da instância do RDS de origem só pode ser executada usando esses arquivos. O período máximo de retenção de log binário no RDS MySQL pode ser definido como apenas sete dias e o valor padrão é “NULL”. (Para obter mais informações, consulte mysql.rds_set_configuration.) Portanto, mantenha esses arquivos de log binário na instância de origem para concluir em etapas posteriores.

4.    Configure um usuário de replicação e conceda os privilégios necessários ao usuário na instância de origem do Amazon RDS for MySQL:

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

5.    Transfira o arquivo de backup para o servidor local de destino fazendo login no MySQL-target. Crie um novo banco de dados e restaure o banco de dados usando dumpfile para a nova instância de banco de dados externa:

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

6.    Interrompa o mecanismo MySQL de destino:

$ service mysqld stop
  1. Modifique os parâmetros do arquivo my.cnf para apontar para o ID de servidor exclusivo e o banco de dados que você está tentando replicar.

Por exemplo:

server_id=2
replicate-do-db=testdb

Se você estiver replicando vários bancos de dados, poderá usar a opção replicate-do-db várias vezes e especificar esses bancos de dados em linhas separadas, como esta:

replicate-do-db=<db_name_1>
replicate-do-db=<db_name_2>
replicate-do-db=<db_name_N>

Para obter mais informações sobre como criar um filtro de replicação com o nome do banco de dados, consulte replicate-do-db no site do MySQL.

8.    Salve o arquivo e reinicie o mecanismo de banco de dados MySQL na instância de banco de dados MySQL de destino.

Por exemplo, se você estiver em um sistema Linux, poderá usar a seguinte sintaxe:

service mysqld restart

9.    Estabeleça uma conexão com a instância de banco de dados RDS para MySQL de origem.

Por exemplo:

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.152707', master_log_pos= 456;

master_host: endpoint da instância de origem do Amazon RDS for MySQL.
master_user: nome do usuário de replicação (criado na Etapa 4).
master_password: senha do usuário de replicação.
master_log_file: nome do arquivo de log binário registrado na Etapa 3. (Na Etapa 3, a saída de exemplo indicou “mysql-bin-changelog.152707” como o nome do arquivo de log binário.)
master_log_pos: posição do log binário registrada na Etapa 3. Na Etapa 3, a saída de exemplo indicava “456” como a posição do arquivo de log binário.

  1.     Faça login na instância de banco de dados RDS para MySQL de destino e inicie a replicação com o seguinte comando:
mysql> start slave;

11.  Confirme se a replicação está sendo sincronizada entre a instância de banco de dados do RDS para MySQL de origem e a instância de banco de dados MySQL de destino:

mysql> show slave status\G

AWS DMS

Antes de configurar a replicação usando o AWS Database Migration Service (AWS DMS), verifique os seguintes recursos:

  • Para fazer um backup da instância restaurada point-in-time, consulte as Etapas 1 a 5 na seção Replicação de log binário. É uma prática recomendada seguir essas etapas, pois a hora de início personalizada pode ser definida em qualquer point-in-time (anterior) dentro do período de retenção de backup. Depois de restaurar o backup da instância de banco de dados de destino, registre o número de sequência de log do ponto de verificação (LSN) gerado durante o processo de recuperação de banco de dados. Você precisará fazer referência ao LSN para definir uma hora de início da coleta de dados de alteração (CDC). Para obter o LSN do ponto de verificação, revise o arquivo de log de erros da instância MySQL do RDS restaurada, imediatamente após a conclusão da operação de restauração point-in-time. Por exemplo:
[Note] InnoDB: Log scan progressed past the checkpoint lsn 44326835524