Configurar replicação atrasada com o MySQL - Amazon Relational Database Service

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:

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.

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
  1. 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.

  2. 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
  1. Usando um cliente do MySQL, conecte-se à réplica de leitura como o usuário mestre.

  2. Use o procedimento armazenado mysql.rds_stop_replication para interromper a replicação.

  3. 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);
  4. 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
  1. Usando um cliente do MySQL, conecte-se à instância de banco de dados MySQL de origem como o usuário mestre.

  2. 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ário mysql-bin-changelog.000777. Em um cenário de recuperação de desastres, suponha que o local 120 é 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.