Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Create a cloud-based secondary database using RDS native replication

Última atualização: Jun 26, 2026

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)

Nota

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

.

Importante

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 CLIENT e REPLICATION 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:

  1. Faça um backup completo do banco de dados MySQL auto-gerenciado.

  2. Importe o backup para a instância de replicação nativa do RDS.

  3. 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

--stream=xbstream

Transmite o backup para stdout como um arquivo xbstream, em vez de gravar em arquivos individuais

--compress

Comprime os dados do backup antes da transmissão, reduzindo o tamanho da transferência

Etapa 3: Envie o backup para o OSS

Importante

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

<OSS_Endpoint>

Endpoint do OSS para sua região

oss-cn-shanghai.aliyuncs.com

<your_AccessKeyId>

Seu AccessKey ID da Alibaba Cloud

LTAI5tXxx...

<your_AccessKeySecret>

Seu AccessKey secret da Alibaba Cloud

xXxXxXx...

<backup_file_name>

Caminho local do arquivo de backup

./backup_1206.xb

<Bucket_name>

Nome do seu bucket do OSS

my-rds-backup-bucket

Etapa 4: Importe o backup e configure o canal de replicação

  1. Acesse a lista de Instâncias do RDS, selecione uma região e clique em ID da instância de destino.

  2. No painel de navegação à esquerda, clique em Native Replication.

  3. 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: .xb (xbstream), _qp.xb (QuickLZ), .xb.zst (zstd).

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 REPLICATION CLIENT e REPLICATION SLAVE).

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

  1. Faça login no console do ApsaraDB RDS, selecione uma região e clique em ID da instância.

  2. No painel de navegação à esquerda, clique em Native Replication.

  3. 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 REPLICATION CLIENT e REPLICATION SLAVE).

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

--single-transaction

Obtém um snapshot consistente das tabelas InnoDB sem bloqueá-las, mantendo o banco disponível durante o dump

--order-by-primary

Ordena as linhas de cada tabela pela chave primária, acelerando a importação

--set-gtid-purged=off

Omite SET @@GLOBAL.GTID_PURGED do dump. O RDS for MySQL não concede permissão para modificar GTID_PURGED, portanto incluir essa instrução causa erros de importação

--master-data=2

Adiciona uma instrução CHANGE MASTER TO comentada ao dump, contendo o nome do arquivo de log binário e a posição no momento do snapshot. Isso permite configurar a replicação sem consultar o primário manualmente

A saída de --master-data=2 aparece assim no arquivo SQL:

image.png

Etapa 2: Importe o dump SQL usando o DMS

  1. Faça login no banco de dados do RDS for MySQL usando o DMS com sua conta privilegiada.

  2. Clique em ícone 2023-01-28_15-57-17.png no canto superior esquerdo e escolha All Features > Database Development > Data Change > Data Import.

    Nota

    No modo não simplificado, escolha

    Database Development

    >

    Data Change

    >

    Data Import

    na barra de menu superior.

  3. 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

Importante

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 MASTER e 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
Nota

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

Slave_IO_Running

Yes

A thread de I/O está conectada à origem e recebendo eventos do log binário

Slave_SQL_Running

Yes

A thread SQL está aplicando esses eventos

Seconds_Behind_Master

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.

Próximos passos