O mysqldump exporta o esquema e os dados de um banco de dados como um arquivo SQL com instruções CREATE TABLE e INSERT e reproduz esse arquivo na instância de destino. Use este método quando o volume de dados for pequeno ou quando sua empresa puder tolerar tempo de inatividade prolongado durante a migração.
Para migrar sem interrupções de service, use o Data Transmission Service (DTS) . O DTS oferece suporte a replicação contínua e transição com tempo de inatividade mínimo.
Pré-requisitos
Antes de começar, verifique se você:
Configurou uma lista de permissões de endereços IP para a instância rds
Obteve o endpoint público da instância rds
Crie os bancos de dados e as contas de destino na instância rds
Para obter instruções de configuração, consulte Fluxo de trabalho geral para usar o ApsaraDB RDS for MySQL.
Casos de uso
O mysqldump é a escolha adequada quando:
O volume de dados é pequeno — a exportação e a importação são concluídas dentro da janela de manutenção
O tempo de inatividade é aceitável — as gravações no banco de dados de source devem parar durante a exportação para garantir a consistência
Não há necessidade de replicação contínua — uma cópia lógica única é suficiente
Use o DTS se precisar de transição com tempo de inatividade zero ou replicação contínua.
Observações de uso
Após a migração, todos os nomes de tabelas da instância MySQL autogerenciada ficam armazenados em letras minúsculas na instância rds. Para preservar nomes de tabelas que diferenciam maiúsculas de minúsculas, use um dos seguintes métodos:
Novas instâncias: Ao criar uma instância RDS for MySQL, defina Table Name Case Sensitivity como Case-sensitive.
Instâncias existentes: Defina
lower_case_table_namescomo0no console do ApsaraDB RDS. Para mais detalhes, consulte Modificar os parâmetros de uma instância ApsaraDB RDS for MySQL.
Após definir lower_case_table_names como 0, não o altere de volta para 1. Essa ação pode acionar o erro ERROR 1146 (42S02): Table doesn't exist e afetar seriamente suas cargas de trabalho. Se sua instância rds executar o MySQL 8.0, não será possível reconfigurar o parâmetro lower_case_table_names após a criação da instância.
Migrar dados com mysqldump
As etapas a seguir usam um ambiente Linux. Os mesmos comandos funcionam no Terminal do macOS ou no Prompt de Comando do Windows.
Etapa 1: Exportar dados da instância MySQL autogerenciada
Interrompa todas as gravações no banco de dados de source antes de executar a exportação. Atualizar dados durante a exportação pode corromper o arquivo de dump.
A conta usada para a exportação deve ter as permissões necessárias. Para mais informações, consulte a documentação oficial do MySQL.
Exportar esquema e dados (excluindo procedimentos armazenados, gatilhos e funções):
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> --skip-triggers --skip-lock-tables > /tmp/<db_name>.sql
Exemplo:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sql
Para exportar dados de uma instância RDS for MySQL, substitua o host, o nome de usuário e o nome do banco de dados pelos valores correspondentes do rds.
A flag --default-character-set=utf8 define o conjunto de caracteres do arquivo de dump. Se o banco de dados de source usar um conjunto de caracteres diferente, configure essa flag para corresponder a ele. A incompatibilidade entre o conjunto de caracteres do arquivo de dump e o da instância de destino causa texto ilegível após a importação.
Exportar procedimentos armazenados, gatilhos e funções:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/*/' > /tmp/<db_name>Trigger.sql
Exemplo:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sql
Ignore este comando se o banco de dados de source não tiver procedimentos armazenados, gatilhos ou funções.
Etapa 2: Carregar os arquivos exportados para uma instância ECS
Carregue os arquivos .sql da Etapa 1 no diretório /tmp de uma instância Elastic Compute Service (ECS) que tenha acesso à instância rds.

Ignore esta etapa se a instância MySQL autogerenciada já estiver em execução em uma instância ECS.
Etapa 3: Importar os arquivos para a instância rds
Execute os seguintes comandos na instância ECS. Substitua os espaços reservados pelos detalhes de conexão do seu rds.
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>.sql
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>Trigger.sql
Exemplo:
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdb.sql
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdbTrigger.sql
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Endpoint público da instância rds |
|
|
|
Porta da instância rds |
|
|
|
Conta rds (conta privilegiada ou conta padrão com permissões de leitura e gravação) |
|
|
|
Nome do banco de dados de destino — deve existir previamente na instância rds |
|
Para criar o banco de dados de destino caso ainda não exista, consulte Gerencie bancos de dados.
Etapa 4: Verifique a migração
Use o DMS para fazer login na instância rds e confirme se as tabelas, as contagens de linhas e os dados estão corretos.
Próximos passos
Visão geral dos métodos de migração de dados — compare o mysqldump com o DTS e outras abordagens de migração
Modifique os parâmetros de uma instância ApsaraDB RDS for MySQL — ajuste
lower_case_table_namese outros parâmetros da instância