Configurar a replicação baseada em GTID com uma instância de origem externa - Amazon Relational Database Service

Configurar a replicação baseada em GTID com uma instância de origem externa

Você pode configurar a replicação com base em identificadores de transação global (GTIDs) de uma instância externa do MariaDB da versão 10.0.24 ou posteriores em uma instância de banco de dados do MariaDB. Siga estas diretrizes ao configurar uma instância de origem externa e uma réplica no Amazon RDS:

  • Monitore eventos de failover da instância do banco de dados do RDS para MariaDB 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.

  • Mantenha os logs binários (binlogs) em sua instância de origem até confirmar que foram aplicados à réplica. Essa manutenção garante que seja possível restaurar a instância de origem em caso de falha.

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

nota

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

Para iniciar a replicação entre uma instância de origem externa e uma instância de banco de dados MariaDB no Amazon RDS, use o seguinte procedimento.

Como iniciar a replicação
  1. Confirme que a instância de origem MariaDB é somente leitura:

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. Obtenha o GTID atual da instância externa do MariaDB. Você pode fazer isso usando mysql ou o editor de consulta de sua preferência para executar SELECT @@gtid_current_pos;.

    O GTID é formatado como <domain-id>-<server-id>-<sequence-id>. Um GTID típico é parecido com 0-1234510749-1728. Para obter mais informações sobre GTIDs e suas partes de componentes, consulte ID de transação global na documentação do MariaDB.

  3. Copie o banco de dados da instância do MariaDB externa para a instância do banco de dados MariaDB usando mysqldump. Para bancos de dados muito grandes, convém usar o procedimento em Importar dados para um 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.

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

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

  4. Confirme que é possível gravar na instância do MariaDB novamente.

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
  5. No console de gerenciamento do Amazon RDS, adicione o endereço IP do servidor, que hospeda o banco de dados MariaDB externo, ao grupo de segurança da VPC para a instância de banco de dados MariaDB. Para obter mais informações sobre como modificar um grupo de segurança da VPC, acesse 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.

    Talvez também seja necessário configurar sua rede local para permitir conexões com o endereço IP de sua instância de banco de dados MariaDB, para que ela possa se comunicar com sua instância externa do MariaDB. Para encontrar o endereço IP da instância de banco de dados MariaDB, 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 MariaDB.

  6. Usando o cliente de sua preferência, conecte-se à instância MariaDB externa e crie um usuário do MariaDB a ser usado para a replicação. Esta conta é usada unicamente para replicação e deve estar restrita ao seu domínio para melhorar a segurança. Veja um exemplo a seguir.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    nota

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

  7. Para a instância externa do MariaDB, conceda privilégios de 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. Torne uma réplica a instância de banco de dados MariaDB. Conecte-se à instância de banco de dados MariaDB como o usuário mestre e identifique o banco de dados MariaDB externo como a instância de origem de replicação usando o comando mysql.rds_set_external_master_gtid. Use o GTID que você determinou na etapa 2. Veja um exemplo a seguir.

    CALL mysql.rds_set_external_master_gtid ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'GTID', 0);
    nota

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

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

    CALL mysql.rds_start_replication;