Importar dados para uma instância de banco de dados MariaDB ou MySQL do Amazon RDS com tempo de inatividade reduzido
Em alguns casos, pode ser preciso importar dados de um banco de dados MariaDB ou MySQL compatível com uma aplicação ativa para uma instância de banco de dados do MariaDB, uma instância de banco de dados do MySQL ou um cluster de banco de dados multi-AZ do MySQL. Use o procedimento a seguir para minimizar o impacto sobre a disponibilidade das aplicações. Este procedimento também pode ser útil se você está trabalhando com um banco de dados muito grande. Usando esse procedimento, você pode reduzir o custo da importação ao diminuir a quantidade de dados transmitidos pela rede para a AWS.
Neste procedimento, você transfere uma cópia dos dados do banco de dados para uma instância do Amazon EC2 e importa os dados em um novo banco de dados do Amazon RDS. Depois, use a replicação para atualizar o banco de dados do Amazon RDS em relação à instância externa dinâmica, antes de redirecionar sua aplicação ao banco de dados do Amazon RDS. Configure a replicação do MariaDB com base em identificadores de transação global (GTIDs) se a instância externa for o MariaDB 10.0.24 ou superior e a instância de destino for o RDS para MariaDB. Caso contrário, configure a replicação com base nas coordenadas do log binário. Recomendamos a replicação baseada em GTID caso o banco de dados externo comporte esse tipo de replicação, já que é um método mais confiável. Para obter mais informações, consulte Global Transaction ID
nota
Se você quiser importar dados para uma instância de banco de dados do MySQL e o seu cenário for compatível, recomendamos mover dados para dentro e para fora do Amazon RDS usando arquivos de backup e o Amazon S3. Para ter mais informações, consulte Restauração de um backup em uma instância de banco de dados MySQL.
![Importar um banco de dados MySQL externo para um banco de dados MySQL no Amazon RDS.](images/MigrateMySQLToRDS_1.png)
nota
Não recomendamos esse procedimento com bancos de dados MySQL de origem de versões MySQL anteriores à versão 5.5, devido a possíveis problemas de replicação. Para obter mais informações, consulte Replication Compatibility Between MySQL Versions
Criar uma cópia do seu banco de dados existente
A primeira etapa no processo de migração de uma grande quantidade de dados para um banco de dados do RDS para MariaDB ou RDS para MySQL com o mínimo de tempo de inatividade é criar uma cópia dos dados de origem.
![Criar um backup do banco de dados MySQL.](images/MigrateMySQLToRDS_2.png)
Você pode usar o utilitário mysqldump para criar um backup de banco de dados no formato SQL ou de texto delimitado. Recomendamos que você faça uma execução de teste com cada formato em um ambiente que não seja de produção para ver qual método minimiza o tempo de execução de mysqldump.
Recomendamos também que você pondere a performance de mysqldump em comparação com o benefício oferecido usando o formato de texto delimitado para o carregamento. Um backup usando o formato de texto delimitado cria um arquivo de texto separado por tabulação para cada tabela que está sendo despejada. Você pode carregar esses arquivos em paralelo usando o comando LOAD DATA LOCAL INFILE
para reduzir a quantidade de tempo necessária para importar seu banco de dados. Para obter mais informações sobre como escolher um formato para mysqldump e depois carregar os dados, consulte Using mysqldump for backups
Antes de iniciar a operação de backup, certifique-se de definir as opções de replicação no banco de dados MariaDB ou MySQL que está copiando para o Amazon RDS. As opções de replicação incluem ativar o registro em log binário e definir um ID de servidor exclusivo. Configurar essas opções faz com que seu servidor comece a registrar em log transações de banco de dados e o prepara para ser um uma instância de replicação de origem mais adiante nesse processo.
nota
Use a opção --single-transaction
com mysqldump porque ela despeja um estado consistente do banco de dados. Para garantir um arquivo de despejo válido, não execute instruções de Data Definition Language (DDL – Linguagem de definição de dados) enquanto mysqldump estiver em execução. É possível programar uma janela de manutenção para essas operações.
Exclua os seguintes esquemas do arquivo de despejo: sys
, performance_schema
e information_schema
. O utilitário mysqldump exclui esses esquemas por padrão.
Para migrar usuários e privilégios, considere o uso de uma ferramenta que gera a Data Control Language (DCL – Linguagem de controle de dados) para recriá-los, como o utilitário pt-show-grants
Como definir opções de replicação
-
Edite o arquivo
my.cnf
(esse arquivo normalmente se encontra em/etc
).sudo vi /etc/my.cnf
Adicione as opções
log_bin
eserver_id
à seção[mysqld]
. A opçãolog_bin
fornece um identificador de nome de arquivo para arquivos de log binário. A opçãoserver_id
fornece um identificador exclusivo para o servidor em relações entre origem e réplica.O exemplo a seguir mostra a seção
[mysqld]
atualizada de um arquivomy.cnf
:[mysqld] log-bin=mysql-bin server-id=1
Para ter mais informações, consulte a documentação do MySQL
. -
Para replicação com um cluster de banco de dados multi-AZ, defina os parâmetros
ENFORCE_GTID_CONSISTENCY
eGTID_MODE
comoON
.mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
mysql> SET @@GLOBAL.GTID_MODE = ON;
Essas configurações não são necessárias para a replicação com uma instância de banco de dados.
-
Reinicie o serviço
mysql
.sudo service mysqld restart
Como criar uma cópia de backup do banco de dados existente
-
Crie um backup dos seus dados usando o utilitário mysqldump, especificando o formato SQL ou texto delimitado.
Especifique
--master-data=2
para criar um arquivo de backup que possa ser usado para iniciar a replicação entre servidores. Para obter mais informações, consulte a documentação de mysqldump. Para melhorar a performance e garantir a integridade dos dados, use as opções
--order-by-primary
e--single-transaction
de mysqldump.Para evitar a inclusão do banco de dados do sistema MySQL no backup, não use a opção
--all-databases
com mysqldump. Para obter mais informações, consulte Creating a Data Snapshot Using mysqldumpna documentação do MySQL. Use
chmod
, se necessário, para garantir que o diretório no qual o arquivo de backup está sendo criado seja gravável.Importante
No Windows, execute a janela de comando como um administrador.
-
Para produzir a saída SQL, use o comando a seguir.
Para Linux, macOS ou Unix:
sudo mysqldump \ --databases
database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -ulocal_user
\ -ppassword
nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
Para Windows:
mysqldump ^ --databases
database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -ulocal_user
^ -ppassword
nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
-
Para produzir uma saída de texto delimitado, use o comando a seguir.
Para Linux, macOS ou Unix:
sudo mysqldump \ --tab=
target_directory
\ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword
Para Windows:
mysqldump ^ --tab=
target_directory
^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
Certifique-se de criar procedimentos armazenados, acionadores, funções ou eventos manualmente no seu banco de dados Amazon RDS. Se algum desses objetos está no banco de dados que você está copiando, exclua-os quando executar mysqldump. Para fazer isso, inclua estes argumentos com o comando mysqldump:
--routines=0 --triggers=0 --events=0
.Ao usar o formato de texto delimitado, um comentário
CHANGE MASTER TO
é retornado quando você executa mysqldump. Esse comentário contém o nome e a posição do arquivo de log mestre. Se a instância externa for diferente do MariaDB versão 10.0.24 ou posteriores, observe os valores paraMASTER_LOG_FILE
eMASTER_LOG_POS
. Esses valores são necessários ao configurar a replicação.-- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
Se estiver usando o formato SQL, você poderá obter o nome e a posição do arquivo de log primário no comentário
CHANGE MASTER TO
no arquivo de backup. Se a instância externa for o MariaDB versão 10.0.24 ou posteriores, você poderá obter o GTID na próxima etapa.
-
-
Se a instância externa que você está usando for o MariaDB versão 10.0.24 ou posteriores, use a replicação baseada em GTID. Execute
SHOW MASTER STATUS
na instância MariaDB externa para obter o nome e a posição do arquivo de log binário. Em seguida, converta-o em um GTID executandoBINLOG_GTID_POS
na instância MariaDB externa.SELECT BINLOG_GTID_POS('
binary log file name
',binary log file position
);Observe o GTID retornado. Você precisará dele para configurar a replicação.
-
Compacte os dados copiados para reduzir a quantidade de recursos de rede necessários para copiar seus dados para o banco de dados do Amazon RDS. Anote o tamanho do arquivo de backup. Você precisará dessas informações ao determinar o tamanho de uma instância do Amazon EC2 a ser criada. Quando terminar, compacte o arquivo de backup usando o GZIP ou seu utilitário de compactação preferido.
-
Para compactar a saída SQL, use o comando a seguir.
gzip backup.sql
-
Para compactar a saída de texto delimitado, use o comando a seguir.
tar -zcvf backup.tar.gz
target_directory
-
Criar uma instância do Amazon EC2 e copiar o banco de dados compactado
Copiar seu arquivo de backup de banco de dados compactado para uma instância do Amazon EC2 requer menos recursos de rede do que fazer uma cópia direta de dados não compactados entre instâncias de bancos de dados. Depois que seus dados estiverem no Amazon EC2, você poderá copiá-los de lá diretamente para o banco de dados MariaDB ou MySQL. Para economizar no custo dos recursos de rede, a instância do Amazon EC2 deve estar na mesma região da AWS que a sua instância de banco de dados do Amazon RDS. Ter a instância do Amazon EC2 na mesma região da AWS que o banco de dados do Amazon RDS também reduz a latência da rede durante a importação.
![Copiar o backup do banco de dados para uma instância do EC2.](images/MigrateMySQLToRDS_3.png)
Como criar uma instância do Amazon EC2 e copiar seus dados
-
Na Região da AWS em que você planeja criar o banco de dados do RDS, crie uma nuvem privada virtual (VPC), um grupo de segurança de VPC e uma sub-rede de VPC. Certifique-se de que as regras de entrada para o grupo de segurança da VPC permitam os endereços IP necessários para a aplicação se conectar ao AWS. Você pode especificar uma variedade de endereços IP (por exemplo,
203.0.113.0/24
) ou outro grupo de segurança de VPC. Você pode usar o Console de gerenciamento da Amazon VPCpara criar e gerenciar VPCs, sub-redes e grupos de segurança. Para obter mais informações, consulte o tópico de Conceitos básicos sobre a Amazon VPC no Guia de conceitos básicos sobre a Amazon Virtual Private Cloud. -
Abra o console de gerenciamento do Amazon EC2
e escolha a região da AWS para conter tanto a instância do Amazon EC2 como o banco de dados do Amazon RDS. Inicie uma instância do Amazon EC2 usando a VPC, a sub-rede e o grupo de segurança que você criou na Etapa 1. Certifique-se de selecionar um tipo de instância com armazenamento suficiente para o arquivo de backup de banco de dados quando ele não estiver compactado. Para obter detalhes sobre instâncias do Amazon EC2, consulte o tópico de Conceitos básicos sobre instâncias Linux do Amazon EC2 no Guia do usuário do Amazon Elastic Compute Cloud para Linux. -
Para se conectar ao banco de dados do Amazon RDS pela sua instância do Amazon EC2, edite seu grupo de segurança da VPC. Adicione uma regra de entrada especificando o endereço IP privado da sua instância do EC2. Você pode encontrar o endereço IP privado na guia Details (Detalhes) do painel Instance (Instância) na janela do console do EC2. Para editar o grupo de segurança de VPC e adicionar uma regra de entrada, escolha Security Groups (Grupos de segurança) no painel de navegação do console do EC2, escolha o grupo de segurança e, em seguida, adicione uma regra de entrada para MySQL ouAurora especificando o endereço IP privado da sua instância do EC2. Para saber como adicionar uma regra de entrada a um grupo de segurança de VPC, consulte Adicionar e remover regras no Guia do usuário da Amazon VPC.
-
Copie o arquivo de backup de banco de dados compactado do seu sistema local para a sua instância do Amazon EC2. Se necessário, use
chmod
para garantir que você tenha permissão de gravação para o diretório de destino da instância do Amazon EC2. Você pode usarscp
ou um cliente Secure Shell (SSH) para copiar o arquivo. Veja um exemplo a seguir.scp -r -i
key pair
.pem backup.sql.gz ec2-user@EC2 DNS
:/target_directory
/backup.sql.gzImportante
Certifique-se de copiar dados confidenciais usando um protocolo de transferência da rede segura.
-
Conecte-se à sua instância do Amazon EC2 e instale as atualizações e as ferramentas do cliente MySQL mais recentes usando os comandos a seguir.
sudo yum update -y sudo yum install mysql -y
Para obter mais informações, consulte o tópico sobre como Conectar-se à sua instância no Guia do usuário do Amazon Elastic Compute Cloud para Linux.
Importante
Este exemplo instala o cliente MySQL em uma distribuição de imagem de máquina da Amazon (AMI) do Amazon Linux. Para instalar o cliente MySQL em uma distribuição diferente, como Ubuntu ou Red Hat Enterprise Linux, este exemplo não funciona. Para obter informações sobre como instalar o MySQL, consulte Instalar e atualizar o MySQL
na documentação do MySQL. -
Enquanto estiver conectado à sua instância do Amazon EC2, descompacte o arquivo de backup do banco de dados. Veja os exemplos a seguir.
-
Para descompactar a saída SQL, use o comando a seguir.
gzip backup.sql.gz -d
-
Para descomprimir a saída de texto delimitada, use o comando a seguir.
tar xzvf backup.tar.gz
-
Crie um banco de dados MariaDB ou MySQL e importe os dados da sua instância do Amazon EC2
Ao criar uma instância de banco de dados do MariaDB, uma instância de banco de dados do MySQL ou um cluster de banco de dados multi-AZ do MySQL na mesma região da AWS que a instância do Amazon EC2, você pode importar o arquivo de backup do banco de dados do EC2 mais rapidamente do que pela Internet.
![Importar o backup da instância do EC2 para o banco de dados MySQL.](images/MigrateMySQLToRDS_4.png)
Como criar um banco de dados MariaDB ou MySQL e importar seus dados
-
Determine qual classe de instância de banco de dados e que quantidade de espaço de armazenamento são necessários para atender à workload esperada para esse banco de dados do Amazon RDS. Como parte desse processo, decida sobre o espaço suficiente e a capacidade de processamento para os seus procedimentos de carregamento de dados. Decida também o que é necessário para lidar com a workload de produção. Você pode estimar isso com base no tamanho e nos recursos do banco de dados MySQL ou MariaDB de origem. Para ter mais informações, consulte Classes de instância de banco de dados .
-
Crie uma instância de banco de dados ou um cluster de banco de dados multi-AZ na região da AWS que contém sua instância do Amazon EC2.
Para criar um cluster de banco de dados multi-AZ do MySQL, siga as instruções em Criar um cluster de banco de dados multi-AZ.
Para criar uma instância de banco de dados do MariaDB ou MySQL, siga as instruções em Criar uma instância de banco de dados do Amazon RDS e use as seguintes diretrizes:
-
Especifique uma versão do mecanismo de banco de dados que seja compatível com a sua instância de banco de dados de origem, da seguinte maneira:
Se a instância de origem for do MySQL 5.5.x, a instância de banco de dados do Amazon RDS deverá ser do MySQL.
Se a instância de origem for do MySQL 5.6.x ou 5.7.x, a instância de banco de dados do Amazon RDS deverá ser do MySQL ou do MariaDB.
Se a sua instância de origem for o MySQL 8.0.x, a instância de banco de dados do Amazon RDS deverá ser o MySQL 8.0.x.
Se a instância de origem for do MariaDB 5.5 ou superior, a instância de banco de dados do Amazon RDS deverá ser do MariaDB.
-
Especifique a mesma nuvem privada virtual (VPC) e o grupo de segurança da VPC para sua instância do Amazon EC2. Essa abordagem garante que sua instância do Amazon EC2 e sua instância do Amazon RDS sejam visíveis uma para a outra na rede. Verifique se sua instância de banco de dados pode ser acessada publicamente. Para configurar a replicação com o banco de dados de origem, conforme descrito mais adiante, a instância de banco de dados deve ser acessível ao público.
-
Não configure várias zonas de disponibilidade, retenção de backup nem réplicas de leitura até depois de ter importado o backup do banco de dados. Quando a importação estiver concluída, você poderá configurar o recurso multi-AZ e a retenção de backup para a instância de produção.
-
-
Reveja as opções de configuração padrão para o banco de dados do Amazon RDS. Se o grupo de parâmetros padrão para o banco de dados não tiver as opções de configuração desejadas, encontre outro que as inclua ou crie um grupo de parâmetros. Para obter mais informações sobre como criar um grupo de parâmetros, consulte Trabalhar com grupos de parâmetros.
-
Conecte-se ao novo banco de dados do Amazon RDS como usuário principal. Crie os usuários necessários para dar suporte aos administradores, aplicações e serviços que precisam acessar a instância. O nome do host para o banco de dados do Amazon RDS é o valor de Endpoint dessa instância, sem incluir o número da porta. Um exemplo é
mysampledb.123456789012.us-west-2.rds.amazonaws.com
. Você pode encontrar o valor do endpoint nos detalhes do banco de dados no console de gerenciamento do Amazon RDS. Conecte-se à sua instância Amazon EC2. Para obter mais informações, consulte o tópico sobre como Conectar-se à sua instância no Guia do usuário do Amazon Elastic Compute Cloud para Linux.
Conecte-se ao seu banco de dados do Amazon RDS como um host remoto pela sua instância do Amazon EC2 usando o comando
mysql
. Veja um exemplo a seguir.mysql -h
host_name
-P 3306 -udb_master_user
-pO nome do host é o endpoint do banco de dados do Amazon RDS.
-
No prompt
mysql
, execute o comandosource
e transmita a ele o nome do arquivo de despejo do banco de dados para carregar os dados na instância de banco de dados do Amazon RDS:-
Para o formato SQL, use o comando a seguir.
mysql> source backup.sql;
-
Para o formato de texto delimitado, primeiro crie o banco de dados, se ele não for o banco de dados padrão que você criou ao configurar o banco de dados do Amazon RDS.
mysql> create database
database_name
; mysql> usedatabase_name
;Em seguida, crie as tabelas.
mysql> source
table1
.sql mysql> sourcetable2
.sql etc...Em seguida, importe os dados.
mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...
Para melhorar a performance, você pode realizar essas operações em paralelo de várias conexões, para que todas as tabelas sejam criadas e carregadas ao mesmo tempo.
nota
Se você usou qualquer opção de formatação de dados com mysqldump quando despejou inicialmente a tabela, use as mesmas opções com
LOAD DATA LOCAL INFILE
para assegurar uma interpretação adequada do conteúdo do arquivo de dados.
-
Execute uma consulta
SELECT
simples em uma ou duas das tabelas no banco de dados importado para verificar se a importação foi bem-sucedida.
Se você não precisa mais da instância do Amazon EC2 usada neste procedimento, encerre-a para reduzir o uso de recursos de uso da AWS. Para terminar uma instância do EC2, consulte Como encerrar uma instância no Guia do usuário do Amazon EC2.
Replicar entre o banco de dados externo e o novo banco de dados do Amazon RDS
Seu banco de dados de origem provavelmente foi atualizado durante o tempo decorrido entre a cópia e a transferência dos dados para o banco de dados MariaDB ou MySQL. Assim, você pode usar a replicação para atualizar o banco de dados copiado com o banco de dados de origem.
![Replicar dados do banco de dados MySQL externo para o banco de dados no Amazon RDS.](images/MigrateMySQLToRDS_5.png)
As permissões necessárias para iniciar a replicação em um banco de dados do Amazon RDS são restritas e não estão disponíveis ao seu usuário principal do Amazon RDS. Por isso, certifique-se de usar o comando mysql.rds_set_external_master do Amazon RDS ou o comando mysql.rds_set_external_master_gtid para configurar a replicação e o comando mysql.rds_start_replication para iniciar a replicação entre seu banco de dados dinâmico e seu banco de dados Amazon RDS.
Como iniciar a replicação
Anteriormente, você ativava o registro em log binário e definia um ID de servidor exclusivo para o banco de dados de origem. Agora, é possível configurar seu banco de dados do Amazon RDS como uma réplica com seu banco de dados dinâmico como a instância de replicação de origem.
-
No console de gerenciamento do Amazon RDS, adicione o endereço IP do servidor que hospeda o banco de dados de origem ao grupo de segurança da VPC para o banco de dados do Amazon RDS. Para ter 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.
Você também pode precisar configurar sua rede local para permitir conexões com o endereço IP do seu banco de dados do Amazon RDS, para que ele possa se comunicar com sua instância de origem. Para localizar o endereço IP do banco de dados do Amazon RDS, use o comando
host
.host
rds_db_endpoint
O nome do host é o nome de DNS do endpoint do 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 Console de gerenciamento do Amazon RDS. -
Usando o cliente de sua preferência, conecte-se à instância de origem e crie um usuário 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.
MySQL 5.5, 5.6 e 5.7
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY '
password
';nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
-
Para a instância de origem, conceda os privilégios
REPLICATION CLIENT
eREPLICATION SLAVE
para seu usuário de replicação. Por exemplo, para conceder os privilégios deREPLICATION CLIENT
eREPLICATION SLAVE
em todos os bancos de dados para o usuário 'repl_user
' de seu domínio, emita o seguinte comando.MySQL 5.5, 5.6 e 5.7
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
-
Se você tiver usado o formato SQL para criar o arquivo de backup e a instância externa não for o MariaDB 10.0.24 ou posteriores, veja o conteúdo desse arquivo.
cat backup.sql
O arquivo inclui um comentário
CHANGE MASTER TO
que contém o nome e a posição do arquivo de log mestre. Esse comentário está incluído no arquivo de backup quando você usa a opção--master-data
com mysqldump. Observe os valores paraMASTER_LOG_FILE
eMASTER_LOG_POS
.-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
Se você usou o formato de texto delimitado para criar seu arquivo de backup, e a instância externa não é o MariaDB 10.0.24 ou posteriores, você já deve ter coordenadas de logs binários da etapa 1 do procedimento em “Para criar uma cópia de backup do banco de dados existente” neste tópico.
Se a instância externa for o MariaDB 10.0.24 ou posteriores, você já deve ter o GTID a partir do qual iniciar a replicação na etapa 2 do procedimento em “Para criar uma cópia de backup do banco de dados existente” neste tópico.
-
Torne o banco de dados do Amazon RDS a réplica. Se a instância externa não for o MariaDB 10.0.24 ou posterior, conecte-se ao banco de dados do Amazon RDS como o usuário principal e identifique o banco de dados de origem como a instância de replicação 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 anterior, se tiver um arquivo de backup no formato SQL. Ou use o nome e a posição que você determinou ao criar os arquivos de backup, caso tenha usado o formato de texto delimitado. Veja um exemplo a seguir.
CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.000031', 107, 0);nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
Se a instância externa for o MariaDB 10.0.24 ou posterior, conecte-se ao banco de dados do Amazon RDS como o usuário principal e identifique o banco de dados de origem como a instância de replicação de origem usando o comando mysql.rds_set_external_master_gtid. Use o GTID que você determinou na etapa 2 do procedimento em “Para criar uma cópia de backup do banco de dados existente” neste tópico. Veja um exemplo a seguir.
CALL mysql.rds_set_external_master_gtid ('
source_server_ip_address
', 3306, 'ReplicationUser', 'password
', 'GTID
', 0);O
source_server_ip_address
é o endereço IP da instância de replicação de origem. Atualmente, um endereço DNS privado do EC2 não é compatível.nota
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.
-
No banco de dados do Amazon RDS, emita o comando mysql.rds_start_replication para iniciar a replicação.
CALL mysql.rds_start_replication;
-
No banco de dados do Amazon RDS, execute o comando SHOW REPLICA STATUS
para determinar quando a réplica está atualizada com a instância de replicação de origem. Os resultados do comando SHOW REPLICA STATUS
incluem o campoSeconds_Behind_Master
. Quando o campoSeconds_Behind_Master
retorna 0, a réplica é atualizada com a instância de replicação de origem.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
.Para uma instância de banco de dados MariaDB 10.5, 10.6 ou 10.11, execute o procedimento mysql.rds_replica_status em vez do comando MySQL.
-
Depois que o banco de dados do Amazon RDS estiver atualizado, ative backups automatizados para poder restaurar esse banco de dados, se necessário. Você pode ativar ou modificar backups automatizados para um banco de dados do Amazon RDS usando o console de gerenciamento do Amazon RDS
. Para ter mais informações, consulte Introdução aos backups.
Redirecionar a aplicação dinâmica para a instância do Amazon RDS
Depois que o banco de dados MariaDB ou MySQL estiver atualizado com a instância de replicação de origem, será possível atualizar sua aplicação dinâmica para usar a instância do Amazon RDS.
![Interromper a replicação e direcionar a aplicação ativa para o banco de dados no Amazon RDS.](images/MigrateMySQLToRDS_6.png)
Como redirecionar a aplicação dinâmica para o banco de dados MariaDB ou MySQL e interromper a replicação
-
Para adicionar o grupo de segurança de VPC para o banco de dados do Amazon RDS, adicione o endereço IP do servidor que hospeda a aplicação. Para ter 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.
-
Verifique se o campo
Seconds_Behind_Master
nos resultados do comando SHOW REPLICA STATUSé 0, o que indica que a réplica está atualizada com a instância de replicação de origem. SHOW REPLICA STATUS;
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
.Para uma instância de banco de dados MariaDB 10.5, 10.6 ou 10.11, execute o procedimento mysql.rds_replica_status em vez do comando MySQL.
-
Feche todas as conexões com a origem quando suas transações terminarem.
-
Atualize sua aplicação para usar o banco de dados do Amazon RDS. Normalmente, essa atualização envolve a alteração das configurações de conexão para identificar o nome do host e a porta do banco de dados do Amazon RDS, a conta de usuário e a senha para conexão e o banco de dados para uso.
-
Conecte-se à instância de banco de dados.
No caso de um cluster de banco de dados multi-AZ, conecte-se a uma instância de banco de dados gravadora.
-
Pare a replicação da instância do Amazon RDS usando o comando mysql.rds_stop_replication.
CALL mysql.rds_stop_replication;
-
Execute o comando mysql.rds_reset_external_master no banco de dados do Amazon RDS para redefinir a configuração de replicação, de maneira que a instância não seja mais identificada como uma réplica.
CALL mysql.rds_reset_external_master;
-
Ative recursos adicionais do Amazon RDS, como o suporte a multi-AZ e réplicas de leitura. Para ter mais informações, consulte Configurar e gerenciar uma implantação multi-AZ e Trabalhar com réplicas de leitura de instância de banco de dados.