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 do RDS para MySQL para uma instância do MySQL executada externamente ao Amazon RDS, é possível 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.
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.
Prepare uma instância de banco de dados MySQL externa.
Prepare a instância de banco de dados MySQL de origem para replicação.
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.
Inicie a replicação para o banco de dados MySQL externo.
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
-
Instale o banco de dados MySQL externo.
-
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.
-
Siga as instruções na documentação do MySQL para preparar o banco de dados MySQL externo como uma réplica. Para ter mais informações, consulte Setting the Replica Configuration
, na documentação do MySQL. -
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, consulteControlar acesso com grupos de segurança
-
Se o banco de dados MySQL externo estiver instalado localmente, especifique as regras de saída em um firewall.
-
-
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.
-
-
(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
-
Ao configurar a replicação, verifique se o computador cliente tem espaço suficiente em disco disponível para salvar os logs binários.
-
Conecte-se à instância de banco de dados do 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. -
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.
-
Especifique as regras de saída:
-
Se a instância de banco de dados MySQL de origem estiver em execução em uma VPC, especifique as regras de entrada em um grupo de segurança da VPC. Para ter mais informações, consulte Controlar acesso com grupos de segurança.
-
-
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.
-
-
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 Introdução aos backups.
-
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, consulteAcessar logs binários do MySQL -
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, consulteComo criar uma réplica de leitura
-
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. -
(Opcional) Configure os parâmetros
max_allowed_packet
eslave_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 no Amazon RDS.
Copiar o banco de dados
Execute as etapas a seguir para copiar o banco de dados.
Como copiar o banco de dados
-
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 deSHOW REPLICA STATUS
. Se você estiver usando uma versão do MySQL anterior à 8.0.23, useSHOW SLAVE STATUS
. -
-
Use o utilitário mysqldump para criar um snapshot, que copia os dados do Amazon RDS para seu computador cliente local. 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 mysqldumpna documentação do MySQL. 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
\ -uuser
\ -ppassword
\ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databasesdatabase database2
>path
/rds-dump.sqlPara Windows:
mysqldump -h
source_MySQL_DB_instance_endpoint
^ -uuser
^ -ppassword
^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databasesdatabase database2
>path
\rds-dump.sqlVocê pode carregar o arquivo de backup no banco de dados MySQL externo. Para obter mais informações, consulte Reloading SQL-Format Backups
(Recarregar backups do formato SQL) na documentação do MySQL. É possível executar outro utilitário para carregar os dados no banco de dados MySQL externo.
Concluir a exportação
Execute as etapas a seguir para concluir a exportação.
Como concluir a exportação
-
Use a instrução
CHANGE MASTER
do MySQL para configurar o banco de dados MySQL externo. Especifique o ID e a senha das permissõesREPLICATION SLAVE
concedidas pelo usuário. Especifique os valoresMaster_Host
,Master_Port
,Relay_Master_Log_File
eExec_Master_Log_Pos
obtidos da instruçãoSHOW REPLICA STATUS\G
do MySQL executada na réplica de leitura do RDS. Consulte mais informações em CHANGE MASTER TO Statementna documentação do MySQL. nota
As versões anteriores do MySQL usavam
SHOW SLAVE STATUS
em vez deSHOW REPLICA STATUS
. Se você estiver usando uma versão do MySQL anterior à 8.0.23, useSHOW SLAVE STATUS
. -
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 deSTART REPLICA
. Se você estiver usando uma versão do MySQL anterior à 8.0.23, useSTART SLAVE
. -
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 ter mais informações sobre como interpretar os resultados, consulte SHOW SLAVE | REPLICA STATUS Statementna documentação do MySQL. -
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 deSTOP REPLICA
. Se você estiver usando uma versão do MySQL anterior à 8.0.23, useSTOP SLAVE
. -
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.