Exportar dados de uma instância de banco de dados MySQL usando replicação - Amazon Relational Database Service

Exportar dados de uma instância de banco de dados MySQL usando replicação

Para exportar dados de uma instância de banco de dados MySQL 5.6 ou posterior para uma instância MySQL executada externamente ao Amazon RDS, você pode usar a replicação. Nesse cenário, a instância de banco de dados MySQL é a instância de banco de dados MySQL de origem e a instância MySQL executada externamente em relação ao Amazon RDS é o banco de dados MySQL externo.

A instância de banco de dados MySQL de origem deve estar executando a versão 5.6.13 ou posterior. O banco de dados MySQL externo pode ser executado localmente em seu datacenter ou em uma instância do Amazon EC2. O banco de dados MySQL externo deve executar a mesma versão da instância de banco de dados MySQL de origem ou uma versão posterior.

A replicação para um banco de dados MySQL externo só é compatível durante o tempo necessário para exportar um banco de dados da instância de banco de dados MySQL de origem. A replicação deve ser encerrada quando os dados tiverem sido exportados e os aplicativos puderem começar a acessar a instância MySQL externa.

A lista a seguir mostra as etapas a serem realizadas. Cada etapa é discutida em maiores detalhes nas seções mais adiante.

  1. Prepare uma instância de banco de dados MySQL externa.

  2. Prepare a instância de banco de dados MySQL de origem para replicação.

  3. Use o utilitário mysqldump para transferir o banco de dados da instância de banco de dados MySQL de origem para o banco de dados MySQL externo.

  4. Inicie a replicação para o banco de dados MySQL externo.

  5. Após a conclusão da exportação, pare a replicação.

Preparar um banco de dados MySQL externo

Execute as etapas a seguir para preparar o banco de dados MySQL externo.

Como preparar o banco de dados MySQL externo

  1. Instale o banco de dados MySQL externo.

  2. Conecte-se ao banco de dados MySQL externo como o usuário mestre. Depois, crie os usuários necessários para dar suporte aos administradores, aplicativos e serviços que acessam o banco de dados.

  3. Siga as instruções na documentação do MySQL para preparar o banco de dados MySQL externo como uma réplica. Para obter mais informações, consulte a documentação do MySQL.

  4. Configure uma regra de saída para o banco de dados MySQL externo operar como uma réplica de leitura durante a exportação. A regra de saída permite que o banco de dados MySQL externo se conecte à instância de banco de dados MySQL de origem durante a replicação. Especifique uma regra de saída que permita conexões Transmission Control Protocol (TCP) com a porta e o endereço IP da instância de banco de dados MySQL de origem.

    Especifique as regras de saída apropriadas para o ambiente:

    • Se o banco de dados MySQL externo estiver sendo executado em uma instância do Amazon EC2 em uma nuvem privada virtual (VPC) com base no serviço da Amazon VPC, especifique as regras de saída em um grupo de segurança da VPC. Para obter mais informações, consulte . Controlar acesso com grupos de segurança.

    • Se o banco de dados MySQL externo estiver sendo executado em uma instância do Amazon EC2 que não esteja em uma VPC, especifique as regras de saída em um grupo de segurança do EC2-Classic.

    • Se o banco de dados MySQL externo estiver instalado localmente, especifique as regras de saída em um firewall.

  5. Se o banco de dados MySQL externo estiver sendo executado em uma VPC, configure regras para a lista de controle de acesso (ACL) da VPC, além da regra de saída do grupo de segurança:

    • Configure uma regra de entrada da ACL que permita o tráfego TCP para as portas 1024–65535 a partir do endereço IP da instância de banco de dados MySQL de origem.

    • Configure uma regra de saída da ACL que permita o tráfego TCP de saída para a porta e o endereço IP da instância de banco de dados MySQL de origem.

    Para obter mais informações sobre network ACLs da Amazon VPC, consulte Network ACLs​ no Guia do usuário da Amazon VPC.

  6. (Opcional) Defina o parâmetro max_allowed_packet como o tamanho máximo para evitar erros de replicação. Recomendamos essa configuração.

Preparar a instância de banco de dados MySQL

Execute as etapas a seguir para preparar a instância de banco de dados MySQL de origem como a origem de replicação.

Como preparar a instância de banco de dados MySQL de origem

  1. Ao configurar a replicação, verifique se o computador cliente tem espaço suficiente em disco disponível para salvar os logs binários.

  2. Conecte-se à instância de banco de dados MySQL de origem e crie uma conta de replicação seguindo as instruções em Creating a user for replication na documentação do MySQL.

  3. Configure regras de entrada no sistema que executa a instância de banco de dados MySQL de origem para permitir que o banco de dados MySQL externo se conecte durante a replicação. Especifique uma regra de entrada que permita conexões TCP com a porta usada pela instância de banco de dados MySQL de origem do endereço IP do banco de dados MySQL externo.

  4. Especifique as regras de saída:

  5. Se a instância de banco de dados MySQL de origem estiver sendo executada em uma VPC, configure regras de ACL da VPC, além da regra de entrada do grupo de segurança:

    • Configure uma regra de entrada de ACL para permitir conexões TCP com a porta usada pela instância do Amazon RDS do endereço IP do banco de dados MySQL externo.

    • Configure uma regra de saída de ACL para permitir conexões TCP das portas 1024–65535 com o endereço IP do banco de dados MySQL externo.

    Para obter mais informações sobre network ACLs da Amazon VPC, consulte Network ACLs​ no Guia do usuário da Amazon VPC.

  6. Certifique-se de que o período de retenção de backup seja definido o tempo suficiente para que nenhum log binário seja removido durante a exportação. Se algum dos logs for limpo antes da conclusão da exportação, será necessário reiniciar a replicação desde o início. Para obter mais informações sobre como configurar o período de retenção de backup, consulte Trabalhar com backups.

  7. Use o procedimento armazenado mysql.rds_set_configuration para definir o período de retenção de logs binários pelo tempo suficiente para que os logs binários não sejam limpos durante a exportação. Para obter mais informações, consulte . Acessar logs binários do MySQL.

  8. Crie uma réplica de leitura do Amazon RDS na instância de banco de dados MySQL de origem como uma garantia adicional de que os logs binários da instância de banco de dados MySQL de origem não sejam limpos. Para obter mais informações, consulte . Como criar uma réplica de leitura.

  9. Depois que a réplica de leitura do Amazon RDS tiver sido criada, chame o procedimento armazenado mysql.rds_stop_replication para interromper o processo de replicação. A instância de banco de dados MySQL de origem não limpa mais seus arquivos de log binários, portanto, eles estão disponíveis para o processo de replicação.

  10. (Opcional) Configure os parâmetros max_allowed_packet e slave_max_allowed_packet com o tamanho máximo, para evitar erros de replicação. O tamanho máximo de ambos os parâmetros é de 1 GB. Recomendamos essa configuração para ambos os parâmetros. Para obter informações sobre como configurar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.

Copiar o banco de dados

Execute as etapas a seguir para copiar o banco de dados.

Como copiar o banco de dados

  1. Conecte-se à réplica de leitura do RDS da instância de banco de dados MySQL de origem e execute a instrução SHOW REPLICA STATUS\G do MySQL. Anote os seguintes valores:

    • Master_Host

    • Master_Port

    • Master_Log_File

    • Exec_Master_Log_Pos

    nota

    As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

  2. Use o utilitário mysqldump para criar um snapshot, que copia os dados do Amazon RDS para seu computador cliente local. Depois, execute outro utilitário para carregar os dados no banco de dados MySQL externo. Verifique se o computador cliente tem espaço suficiente para armazenar os arquivos mysqldump dos bancos de dados a serem replicados. Esse processo pode levar várias horas para bancos de dados muito grandes. Siga as instruções em Creating a data snapshot using mysqldump na documentação do MySQL.

    O exemplo a seguir executa mysqldump em um cliente e, depois, direciona o despejo para o utilitário de cliente mysql, que carrega os dados no banco de dados MySQL externo.

    Para Linux, macOS ou Unix:

    mysqldump -h source_MySQL_DB_instance_endpoint \ -u user \ -ppassword \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 \ --compress \ --port 3306

    Para Windows:

    mysqldump -h source_MySQL_DB_instance_endpoint ^ -u user ^ -ppassword ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 ^ --compress ^ --port 3306

    O exemplo a seguir executa mysqldump em um cliente e grava o despejo em um arquivo.

    Para Linux, macOS ou Unix:

    mysqldump -h source_MySQL_DB_instance_endpoint \ -u user \ -ppassword \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 > path/rds-dump.sql

    Para Windows:

    mysqldump -h source_MySQL_DB_instance_endpoint ^ -u user ^ -ppassword ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 > path\rds-dump.sql

Concluir a exportação

Execute as etapas a seguir para concluir a exportação.

Como concluir a exportação

  1. Use a instrução CHANGE MASTER do MySQL para configurar o banco de dados MySQL externo. Especifique o ID e a senha das permissões REPLICATION SLAVE concedidas pelo usuário. Especifique os valores Master_Host, Master_Port, Relay_Master_Log_File e Exec_Master_Log_Pos obtidos da instrução SHOW REPLICA STATUS\G do MySQL executada na réplica de leitura do RDS. Para obter mais informações, consulte a documentação do MySQL.

    nota

    As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

  2. Use o comando START REPLICA do MySQL para iniciar a replicação da instância de banco de dados MySQL de origem para o banco de dados MySQL externo.

    Isso inicia a replicação da instância de banco de dados MySQL de origem e exporta todas as alterações de origem que ocorreram após a interrupção da replicação da réplica de leitura do Amazon RDS.

    nota

    As versões anteriores do MySQL usavam START SLAVE em vez de START REPLICA. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use START SLAVE.

  3. Execute o comando SHOW REPLICA STATUS\G do MySQL no banco de dados MySQL externo para verificar se ele está operando como uma réplica de leitura. Para obter mais informações sobre como interpretar os resultados, consulte a documentação do MySQL.

  4. Após a replicação no banco de dados MySQL externo estar sincronizada com a instância de banco de dados MySQL de origem, use o comando STOP REPLICA do MySQL para interromper a replicação da instância de banco de dados MySQL de origem.

    nota

    As versões anteriores do MySQL usavam STOP SLAVE em vez de STOP REPLICA. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use STOP SLAVE.

  5. Na réplica de leitura do Amazon RDS, chame o procedimento armazenado mysql.rds_start_replication. Isso permite que o Amazon RDS comece a limpar os arquivos de log binários da instância de banco de dados MySQL de origem.