O ApsaraDB RDS for MySQL oferece suporte a instâncias de replicação nativa — instâncias MySQL hospedadas na nuvem que funcionam como bancos de dados secundários somente leitura para seu banco primário MySQL auto-gerenciado. Este tópico apresenta três soluções para fazer um backup completo, importá-lo para uma instância de replicação nativa do RDS e estabelecer um canal de replicação em tempo real entre seu banco de dados auto-gerenciado e a nuvem.
Pré-requisitos
Antes de começar, verifique se você tem:
-
Uma instância do RDS for MySQL com replicação nativa habilitada. Crie uma nova instância ou atualize uma existente. A instância deve atender a todas as condições abaixo, verificáveis na página Basic Information:
Versão do banco de dados: MySQL 5,7 (versão secundária 20240930 ou posterior) ou MySQL 8,0 (versão secundária 20250531 ou posterior)
Série do produto: Basic Edition
Método de faturamento: assinatura ou pagamento conforme o uso
Região: China (Shanghai), China (Beijing), China (Shenzhen), China (Guangzhou) ou China (Chengdu)
Para usar uma instância de replicação nativa Serverless, crie primeiro uma instância com pagamento conforme o uso e ative a replicação nativa. Em seguida,
altere o método de faturamento para Serverless
.
A replicação nativa está disponível atualmente apenas nas cinco regiões listadas acima. Caso precise desse recurso em uma região ainda não suportada, abra um ticket.
Uma conta privilegiada na instância do RDS for MySQL.
Conectividade de rede entre seu banco de dados MySQL auto-gerenciado e a instância do RDS for MySQL. Consulte Configurações de rede.
-
Um usuário de replicação no banco de dados MySQL auto-gerenciado com os privilégios
REPLICATION CLIENTeREPLICATION SLAVE. Execute os comandos abaixo no seu MySQL auto-gerenciado para criá-lo:CREATE USER 'repl_user'@'<rds_instance_ip>' IDENTIFIED BY '<replication_password>'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'<rds_instance_ip>'; FLUSH PRIVILEGES;
Escolha uma solução
Selecione a solução mais adequada ao seu cenário:
|
Solução |
Método de transferência |
Mais indicado para |
OSS obrigatório |
|
Solução 1: XtraBackup + importação via OSS |
Envio do backup para o OSS e posterior importação pelo console |
Bancos de dados grandes; necessidade de criptografia no servidor ou reconstrução point-in-time |
Sim |
|
Solução 2: XtraBackup + transferência direta por stream |
Transmissão do backup diretamente para o RDS via ferramenta backup-helper |
Configuração mais simples sem uso do OSS |
Não |
|
Solução 3: mysqldump + importação via Data Management Service |
Dump lógico SQL importado pelo DMS |
Bancos de dados pequenos; indisponibilidade do XtraBackup |
Não |
As três soluções seguem o mesmo fluxo geral:
Faça um backup completo do banco de dados MySQL auto-gerenciado.
Importe o backup para a instância de replicação nativa do RDS.
Configure um canal de replicação do banco de dados auto-gerenciado para o RDS.
Solução 1: Backup via stream com XtraBackup e importação pelo OSS
Vantagens
As instâncias de replicação nativa do RDS for MySQL são totalmente compatíveis com backups físicos do XtraBackup e oferecem os seguintes recursos:
Detecção automática do GTID no arquivo de backup para alinhar o offset na configuração do canal de replicação.
Envio de arquivos de backup para o Object Storage Service (OSS) com ativação de criptografia no servidor para garantir a segurança dos dados.
Reconstrução da instância de replicação nativa a partir de um conjunto de backup selecionado, facilitando a resolução de problemas complexos de interrupção de replicação.
Faturamento
A criação de uma nova instância com replicação nativa habilitada gera taxas de instância. A atualização de uma instância existente não incorre em custos adicionais.
O armazenamento do arquivo de backup no Object Storage Service (OSS) gera taxas de armazenamento do OSS.
Etapa 1: Instale o XtraBackup no host do banco de dados auto-gerenciado
No CentOS:
Para MySQL 5,7:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
Para MySQL 8,0:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
No Ubuntu:
Para MySQL 5,7:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
Para MySQL 8,0:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
Em seguida, instale o qpress (apenas Ubuntu — não incluído no pacote do XtraBackup para Ubuntu):
sudo apt-get install -y qpress
Etapa 2: Faça um backup completo
Os comandos a seguir destinam-se a bancos de dados que usam InnoDB como mecanismo de armazenamento principal. Se o seu banco contiver tabelas MyISAM, use innobackupex em vez de xtrabackup.
Escolha um método de compressão:
Método 1: Compressão padrão qpress (saída .xb)
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name_such_as_backup_1206.xb>
Método 2: Compressão QuickLZ (saída _qp.xb) — requer XtraBackup 8.0.34-29 ou anterior
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name_such_as_backup_1206_qp.xb>
Para mais informações, consulte o tutorial oficial do Percona XtraBackup.
Método 3: Compressão externa zstd (saída .xb.zstd)
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
| zstd -q - > ./<backup_file_name_such_as_backup_1206.xb.zstd>
Principais flags usadas nos três comandos:
|
Flag |
Finalidade |
|
|
Transmite o backup para stdout como um arquivo xbstream, em vez de gravar em arquivos individuais |
|
|
Comprime os dados do backup antes da transmissão, reduzindo o tamanho da transferência |
Etapa 3: Envie o backup para o OSS
O bucket do OSS deve estar na mesma região da sua instância do RDS for MySQL. Caso contrário, o RDS não conseguirá recuperar o arquivo de backup.
Instale o ossutil:
yum install -y unzip
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
ossutil config
Envie o arquivo de backup:
ossutil -e <OSS_Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <backup_file_name> oss://<Bucket_name>/
Substitua os placeholders pelos valores reais:
|
Placeholder |
Descrição |
Exemplo |
|
|
Endpoint do OSS para sua região |
|
|
|
Seu AccessKey ID da Alibaba Cloud |
|
|
|
Seu AccessKey secret da Alibaba Cloud |
|
|
|
Caminho local do arquivo de backup |
|
|
|
Nome do seu bucket do OSS |
|
Etapa 4: Importe o backup e configure o canal de replicação
Acesse a lista de Instâncias do RDS, selecione uma região e clique em ID da instância de destino.
No painel de navegação à esquerda, clique em Native Replication.
Clique em Import Full Data, configure os parâmetros abaixo e clique em OK.
Método de envio do backup (obrigatório)
|
Parâmetro |
Descrição |
|
MySQL Version |
Preenchido automaticamente com 5.7 ou 8.0. Nenhuma ação necessária. |
|
Import Method |
Selecione Import from OSS. |
|
OSS Bucket |
Selecione o bucket onde o arquivo de backup está armazenado. |
|
OSS File Name |
Selecione o arquivo de backup. Se o arquivo estiver em um subdiretório, insira o caminho completo manualmente. Formatos suportados: |
Configuração automática do canal de replicação (opcional, mas recomendada)
|
Parâmetro |
Descrição |
|
Auto Replication Building |
Ative esta opção para que o RDS configure automaticamente o canal de replicação após a importação. Se desativada, configure o canal manualmente após a conclusão da importação. |
|
Source IP Address |
Endereço IP do banco de dados MySQL auto-gerenciado. |
|
Source Port |
Porta do banco de dados MySQL auto-gerenciado. |
|
Source Account |
Usuário de replicação no banco de dados MySQL auto-gerenciado (deve ter os privilégios |
|
Account Password |
Senha do usuário de replicação. |
Verifique o status da replicação
Após clicar em OK, retorne à página Native Replication. Quando o status da replicação mudar para Running, o canal estará estabelecido e os dados fluirão do seu banco auto-gerenciado para o RDS.
Se o status exibir Error, verifique:
A conectividade de rede entre o banco de dados auto-gerenciado e a instância do RDS
Se o usuário de replicação tem os privilégios corretos
Se a região do bucket do OSS e o caminho do arquivo foram especificados corretamente
Solução 2: Backup via stream com XtraBackup e transferência direta
Esta solução transmite o backup diretamente do seu banco de dados auto-gerenciado para o RDS usando a ferramenta backup-helper, sem necessidade de um bucket do OSS.
Faturamento
A criação de uma nova instância com replicação nativa habilitada gera taxas de instância. A atualização de uma instância existente não incorre em custos adicionais.
Etapa 1: Instale o XtraBackup no host do banco de dados auto-gerenciado
Siga as mesmas instruções da Etapa 1 na Solução 1.
Etapa 2: Instale o backup-helper e inicie o stream de backup
No host do banco de dados auto-gerenciado, baixe e execute a ferramenta backup-helper:
# Download and make backup-helper executable
wget -O backup-helper https://mysql-backup-helper.oss-cn-beijing.aliyuncs.com/v1.0.0-alpha/backup-helper && chmod +x backup-helper
# Start the backup stream
./backup-helper --backup --mode=stream \
--host=<MySQL_IP> \
--port=<MySQL_port> \
--user=<MySQL_account> \
--password=<MySQL_password>
A ferramenta inicia um listener na porta 9999 por padrão e aguarda a conexão do RDS para puxar o stream de backup.
Etapa 3: Importe o stream de backup para o RDS
Faça login no console do ApsaraDB RDS, selecione uma região e clique em ID da instância.
No painel de navegação à esquerda, clique em Native Replication.
Clique em Import Full Data, configure os parâmetros abaixo e clique em OK.
Método de envio do backup (obrigatório)
|
Parâmetro |
Descrição |
|
MySQL Version |
Preenchido automaticamente com 5.7 ou 8.0. Nenhuma ação necessária. |
|
Import Method |
Selecione Direct Stream Backup. |
|
Source Backup IP Address |
Endereço IP do listener do backup-helper (o host do banco de dados auto-gerenciado). |
|
Source Backup Port |
Porta do listener do backup-helper. Padrão: 9999. |
Configuração automática do canal de replicação (opcional, mas recomendada)
|
Parâmetro |
Descrição |
|
Auto Replication Building |
Ative esta opção para que o RDS configure automaticamente o canal de replicação após a importação. Se desativada, configure o canal manualmente após a conclusão da importação. |
|
Source IP Address |
Endereço IP do banco de dados MySQL auto-gerenciado. |
|
Source Port |
Porta do banco de dados MySQL auto-gerenciado. |
|
Source Account |
Usuário de replicação (deve ter os privilégios |
|
Account Password |
Senha do usuário de replicação. |
Verifique o status da replicação
Após clicar em OK, retorne à página Native Replication. Quando o status da replicação mudar para Running, o canal estará ativo.
Se o status exibir Error, verifique:
Se o backup-helper ainda está em execução no host auto-gerenciado
A conectividade de rede entre o host auto-gerenciado e a instância do RDS na porta 9999
Se o usuário de replicação tem os privilégios corretos
Solução 3: mysqldump e importação via DMS
Esta solução usa um dump lógico SQL e o importa pelo Data Management Service (DMS). É adequada para bancos de dados menores e não requer o XtraBackup.
Faturamento
A criação de uma nova instância do RDS for MySQL gera taxas de instância do RDS e taxas de armazenamento.
Etapa 1: Faça um backup lógico com mysqldump
mysqldump --all-databases \
--single-transaction \
--order-by-primary \
--set-gtid-purged=off \
--master-data=2 \
-u local_user \
-p local_password \
-h 127.0.0.1 \
-P 3306 > data.sql
Principais flags:
|
Flag |
Finalidade |
|
|
Obtém um snapshot consistente das tabelas InnoDB sem bloqueá-las, mantendo o banco disponível durante o dump |
|
|
Ordena as linhas de cada tabela pela chave primária, acelerando a importação |
|
|
Omite |
|
|
Adiciona uma instrução |
A saída de --master-data=2 aparece assim no arquivo SQL:

Etapa 2: Importe o dump SQL usando o DMS
Faça login no banco de dados do RDS for MySQL usando o DMS com sua conta privilegiada.
-
Clique em ícone
no canto superior esquerdo e escolha All Features > Database Development > Data Change > Data Import.NotaNo modo não simplificado, escolha
Database Development
>
Data Change
>
Data Import
na barra de menu superior.
Na página Ticket Application, selecione Large Data Import, especifique o banco de dados do RDS for MySQL de destino e envie o arquivo
data.sql. Para outras opções de configuração, consulte Data Import.
Etapa 3: Configure o canal de replicação
A importação de um backup lógico via DMS gera suas próprias entradas de log binário e GTIDs no secundário do RDS. Se você posteriormente promover esse secundário a primário, esses GTIDs extras podem se propagar para outras réplicas e interromper a replicação. Antes de configurar o canal de replicação, execute uma das ações abaixo para evitar isso:
Desative e reative a replicação nativa na instância do RDS. Isso executa
RESET MASTERe limpa os GTIDs extras.Insira transações vazias em todos os outros nós da sua topologia de replicação para absorver os GTIDs redundantes.
Execute os comandos abaixo no DMS, na instância secundária do RDS. Encontre o nome do arquivo de log binário e a posição na linha comentada CHANGE MASTER TO do seu arquivo data.sql.
-- Set up the replication channel
CHANGE MASTER TO
MASTER_HOST = '<source_host_IP>',
MASTER_USER = '<replication_user>',
MASTER_PASSWORD = '<replication_password>',
MASTER_PORT = 3306,
MASTER_LOG_FILE = '<binlog_file_name>',
MASTER_LOG_POS = 190;
-- Start replication
START SLAVE;
-- Check replication status
SHOW SLAVE STATUS\G
CHANGE MASTER TO
,
START SLAVE
e
SHOW SLAVE STATUS
são compatíveis com MySQL 5,7. Para MySQL 8.0.22 e posteriores, a sintaxe preferida é
CHANGE REPLICATION SOURCE TO
,
START REPLICA
e
SHOW REPLICA STATUS
. Ambas as formas funcionam em instâncias MySQL 8,0, mas a sintaxe mais recente é recomendada para a versão 8,0.
Verifique o status da replicação
Na saída de SHOW SLAVE STATUS\G, confirme o seguinte:
|
Campo |
Valor esperado |
Significado |
|
|
|
A thread de I/O está conectada à origem e recebendo eventos do log binário |
|
|
|
A thread SQL está aplicando esses eventos |
|
|
Um número decrescente |
Atraso de replicação; um valor alto inicialmente é normal enquanto o secundário alcança o primário |
Se alguma das threads exibir No, verifique Last_IO_Error ou Last_SQL_Error na saída para identificar a mensagem de erro específica.
Alternativamente, retorne à página Native Replication no console do RDS. Quando o status da replicação mostrar Running, o canal estará estabelecido.