Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa - Amazon Relational Database Service

Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa

É possível configurar a replicação entre uma instância de banco de dados do RDS for MySQL ou do MariaDB e uma instância do MySQL ou do MariaDB externa ao Amazon RDS usando a replicação de arquivos de log binários.

Antes de começar

Você pode configurar a replicação usando a posição do arquivo de log binário de transações replicadas.

As permissões necessárias para iniciar a replicação em uma instância de banco de dados do Amazon RDS são restritas e não estão disponíveis ao seu usuário mestre do Amazon RDS. Por isso, certifique-se de usar os comandos mysql.rds_set_external_master e mysql.rds_start_replication do Amazon RDS para configurar a replicação entre seu banco de dados online e seu banco de dados do Amazon RDS.

Para definir o formato de registro em log binário para um banco de dados MySQL e MariaDB, atualize o parâmetro binlog_format. Se a instância de banco de dados usar o grupo de parâmetros da instância de banco de dados padrão, crie um novo grupo de parâmetros de banco de dados para modificar as configurações de binlog_format. Recomendamos usar a configuração padrão para binlog_format, que é MIXED. No entanto, você também pode definir o binlog_format como ROW ou STATEMENT se precisar de um formato específico de log binário (binlog). Reinicie a instância de banco de dados para que a alteração entre em vigor.

Para obter informações sobre como definir o parâmetro binlog_format, consulte Configurar o registro em log binário do MySQL. Para obter informações sobre as implicações de tipos de replicação do MySQL diferentes, consulte Vantagens e desvantagens da replicação baseada em instrução e baseada em linha na documentação do MySQL.

Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa

Siga estas diretrizes ao configurar uma instância de origem externa e uma réplica no Amazon RDS:

  • Monitore eventos de failover para a instância do banco de dados do Amazon RDS, que é sua réplica. Se ocorrer um failover, a instância de banco de dados que for a sua réplica poderá ser recriada em um novo host com um endereço de rede diferente. Para obter informações sobre como monitorar eventos de failover, consulte Trabalhar com a notificação de eventos do Amazon RDS.

  • Retenha os logs binários na instância de origem até confirmar que eles foram aplicados à réplica. Esta manutenção garante que seja possível restaurar sua instância de origem em caso de falha.

  • Ative backups automatizados na sua instância de banco de dados do Amazon RDS. Ativar backups automáticos garante que seja possível restaurar sua réplica para um determinado ponto no tempo, caso seja necessário ressincronizar sua instância de origem e sua réplica. Para obter informações sobre backups e restauração Point-In-Time, consulte Como fazer backup e restauração de uma instância de banco de dados do Amazon RDS.

Como configurar a replicação do arquivo de log binário com uma instância de origem externa

  1. Torne a instância de origem MySQL ou MariaDB somente leitura.

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. Execute o comando SHOW MASTER STATUS na instância do MySQL ou MariaDB de origem para determinar a localização do log binário.

    Você recebe um resultado semelhante ao seguinte exemplo.

    File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
  3. Copie o banco de dados da instância externa para a instância de banco de dados do Amazon RDS usando mysqldump. Para bancos de dados muito grandes, convém usar o procedimento em Importar dados para uma instância de banco de dados MariaDB ou MySQL do Amazon RDS com tempo de inatividade reduzido.

    Para Linux, macOS ou Unix:

    mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -plocal_password | mysql \ --host=hostname \ --port=3306 \ -u RDS_user_name \ -pRDS_password

    Para Windows:

    mysqldump --databases database_name ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u local_user ^ -plocal_password | mysql ^ --host=hostname ^ --port=3306 ^ -u RDS_user_name ^ -pRDS_password
    nota

    Confirme que não há um espaço entre a opção -p e a senha inserida.

    Para especificar o nome do host, o nome do usuário, a porta e a senha para se conectar à instância de banco de dados Amazon RDS, use as opções --host, --user (-u), --port e -p no comando mysql. O nome do host é o nome do Serviço de Nome de Domínio (DNS) do endpoint da instância de banco de dados do Amazon RDS, por exemplo, myinstance.123456789012.us-east-1.rds.amazonaws.com. Você pode encontrar o valor do endpoint nos detalhes da instância no AWS Management Console.

  4. Torne a instância MySQL ou MariaDB de origem novamente gravável.

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;

    Para obter mais informações sobre como fazer backups para usar com a replicação, consulte a documentação do MySQL.

  5. No AWS Management Console, adicione o endereço IP do servidor que hospeda o banco de dados externo ao grupo de segurança da nuvem privada virtual (VPC) para a instância de banco de dados Amazon RDS. Para obter mais informações sobre como modificar um grupo de segurança da VPC, consulte Grupos de segurança para a VPC no Guia do usuário da Amazon Virtual Private Cloud.

    O endereço IP poderá ser alterado se as seguintes condições forem atendidas:

    • Se você estiver usando um endereço IP público para a comunicação entre a instância de origem externa e a instância de banco de dados.

    • A instância de origem externa foi interrompida e reiniciada.

    Se essas condições forem atendidas, verifique o endereço IP antes de adicioná-lo.

    Você também pode precisar configurar a rede local para permitir conexões com o endereço IP da instância de banco de dados do Amazon RDS. Isso é realizado para que a rede local consiga se comunicar com a instância do MySQL ou do MariaDB externa. Para localizar o endereço IP da instância de banco de dados do Amazon RDS, use o comando host.

    host db_instance_endpoint

    O nome do host é o nome de DNS do endpoint da instância de banco de dados do Amazon RDS.

  6. Usando o cliente de sua preferência, conecte-se à instância externa e crie um usuário a ser usado para a replicação. Use essa conta unicamente para replicação e restrinja-a ao seu domínio para melhorar a segurança. Veja um exemplo a seguir.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
  7. Para a instância externa, conceda os privilégios REPLICATION CLIENT e REPLICATION SLAVE para seu usuário de replicação. Por exemplo, para conceder os privilégios de REPLICATION CLIENT e REPLICATION SLAVE em todos os bancos de dados para o usuário 'repl_user' de seu domínio, emita o seguinte comando.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  8. Transforma a instância de banco de dados do Amazon RDS na réplica. Para fazer isso, primeiro se conecte à instância de banco de dados do Amazon RDS como usuário mestre. Depois disso, identifique o banco de dados MySQL ou MariaDB externo como a instância de origem usando o comando mysql.rds_set_external_master. Use o nome do arquivo de log mestre e a posição do log mestre que você determinou na etapa 2. Veja um exemplo a seguir.

    CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
    nota

    No RDS for MySQL, é possível optar por usar a replicação atrasada executando o procedimento armazenado mysql.rds_set_external_master_with_delay. No RDS for MySQL, um motivo para usar a replicação atrasada é ativar a recuperação de desastres com o procedimento armazenado mysql.rds_start_replication_until. Atualmente, o RDS for MariaDB é compatível com a replicação atrasada, mas não com o procedimento mysql.rds_start_replication_until.

  9. Na instância de banco de dados do Amazon RDS, emita o comando mysql.rds_start_replication para iniciar a replicação.

    CALL mysql.rds_start_replication;