Configurar replicação atrasada com o MySQL
Você pode usar a replicação atrasada como uma estratégia para a recuperação de desastres. Com a replicação atrasada, você especifica o tempo mínimo, em segundos, para atrasar a replicação da origem para a réplica de leitura. Em caso de um desastre, como uma tabela excluída acidentalmente, você executa as seguintes etapas para recuperar-se rapidamente do desastre:
-
Interrompa a replicação da réplica de leitura antes que a alteração que causou o desastre seja enviada para ela.
Use o procedimento armazenado mysql.rds_stop_replication para interromper a replicação.
-
Inicie a replicação e especifique que a replicação deve ser interrompida automaticamente em um local do arquivo de log.
Especifique um local imediatamente antes do desastre usando o procedimento armazenado mysql.rds_start_replication_until.
-
Promova a réplica de leitura para ser a nova instância de banco de dados de origem usando as instruções em Promoção de uma réplica de leitura a uma instância de banco de dados autônoma.
nota
-
No RDS para MySQL 8.4, a replicação atrasada tem suporte para o MySQL 8.4.3 e versões posteriores. No RDS para MySQL 8.0, a replicação atrasada tem suporte para o MySQL 8.0.28 e versões posteriores. No RDS para MySQL 5.7, a replicação atrasada é compatível com o MySQL 5.7.44 e posterior.
-
Use procedimentos armazenados para configurar a replicação atrasada. Você não pode configurar a replicação atrasada com o AWS Management Console, a AWS CLI ou a API do Amazon RDS.
-
Você pode usar a replicação com base em identificadores de transação global (GTIDs) em uma configuração de replicação atrasada para as seguintes versões:
-
RDS para MySQL versão 5.7.44 e versões 5.7 posteriores
-
RDS para MySQL versão 8.0.28 e versões 8.0 posteriores
-
RDS para MySQL versão 8.4.3 e versões 8.4 posteriores
Caso você use a replicação baseada em GTID, use o procedimento armazenado mysql.rds_start_replication_until_gtid em vez do procedimento armazenado mysql.rds_start_replication_until. Para obter mais informações sobre a replicação baseada em GTID, consulte Usar a replicação baseada em GTID.
-
Tópicos
Configurar replicação atrasada durante a criação da réplica de leitura
Para configurar a replicação atrasada para qualquer réplica de leitura futura criada a partir de uma instância de banco de dados, execute o procedimento armazenado mysql.rds_set_configuration com o parâmetro target delay
.
Para configurar a replicação atrasada durante a criação da réplica de leitura
-
Usando um cliente MySQL, conecte-se à instância de banco de dados MySQL que será a origem para réplicas de leitura como o usuário mestre.
-
Execute o procedimento armazenado mysql.rds_set_configuration com o parâmetro
target delay
.Por exemplo, execute o procedimento armazenado a seguir para especificar que a replicação é atrasada em pelo menos uma hora (3,600 segundos) para qualquer réplica de leitura criada a partir da instância de banco de dados atual.
call mysql.rds_set_configuration('target delay', 3600);
nota
Após executar esse procedimento armazenado, qualquer réplica de leitura que você criar usando a AWS CLI ou a API do Amazon RDS será configurada com a replicação atrasada pelo número de segundos especificado.
Modificar replicação atrasada de uma réplica de leitura existente
Para modificar a replicação atrasada para uma réplica de leitura existente, execute o procedimento armazenado mysql.rds_set_source_delay.
Para modificar a replicação atrasada para uma réplica de leitura existente
-
Usando um cliente do MySQL, conecte-se à réplica de leitura como o usuário mestre.
-
Use o procedimento armazenado mysql.rds_stop_replication para interromper a replicação.
-
Execute o procedimento armazenado mysql.rds_set_source_delay.
Por exemplo, execute o procedimento armazenado a seguir para especificar que a replicação para a réplica de leitura é atrasada em pelo menos uma hora (3.600 segundos) para qualquer réplica de leitura criada a partir da instância de banco de dados atual.
call mysql.rds_set_source_delay(3600);
-
Use o procedimento armazenado mysql.rds_start_replication para iniciar a replicação.
Configurar um local para interromper a replicação para uma réplica de leitura
Após interromper a replicação para a réplica de leitura, você pode começar a replicação e interrompê-la em um local especificado do arquivo de log binário usando o procedimento armazenado mysql.rds_start_replication_until.
Para iniciar a replicação para uma Réplica de leitura e interrompê-la em um local específico
-
Usando um cliente do MySQL, conecte-se à instância de banco de dados MySQL de origem como o usuário mestre.
-
Execute o procedimento armazenado mysql.rds_start_replication_until.
O exemplo a seguir inicia a replicação e replica as alterações até que ela atinja o local
120
no arquivo de log bináriomysql-bin-changelog.000777
. Em um cenário de recuperação de desastres, suponha que o local120
é imediatamente antes do desastre.call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
A replicação é interrompida automaticamente quando o ponto de interrupção é atingido. O seguinte evento do RDS é gerado: Replication has been stopped since the replica reached the stop point specified by the
rds_start_replication_until stored procedure
.
Promover uma réplica de leitura
Após a replicação ser interrompida, em um cenário de recuperação de desastres, você pode promover uma réplica de leitura para ser a nova instância de banco de dados de origem. Para obter informações sobre como promover uma réplica de leitura, consulte Promoção de uma réplica de leitura a uma instância de banco de dados autônoma.