Todos os produtos
Search
Central de documentação

AnalyticDB:Use rds_dbsync to migrate or synchronize data from a MySQL database to an AnalyticDB for PostgreSQL database

Última atualização: Jun 27, 2026

O rds_dbsync é uma ferramenta open source para migrar ou sincronizar dados do MySQL para o AnalyticDB for PostgreSQL (e outros bancos de dados compatíveis com PostgreSQL). O recurso mysql2pgsql conecta-se diretamente a ambos os bancos de dados, lê os dados do MySQL e os carrega no destino usando uma instrução COPY, sem necessidade de armazenamento intermediário. A importação dos dados ocorre em paralelo por meio de múltiplas threads de trabalho, cada uma responsável por um conjunto específico de tabelas.

Pré-requisitos

Antes de começar, verifique se você possui:

Início rápido

Para migrar todas as tabelas do MySQL para o AnalyticDB for PostgreSQL:

  1. Configure as conexões de origem e destino no arquivo my.cfg (consulte Configurar conexões).

  2. Gere o DDL das tabelas de destino:

    ./mysql2pgsql -d
  3. Execute o DDL gerado no AnalyticDB for PostgreSQL para criar as tabelas. Especifique uma chave de distribuição para cada tabela.

  4. Importe todos os dados:

    ./mysql2pgsql

Por padrão, essa execução realiza a migração utilizando cinco threads simultâneas.

Configurar conexões

Edite o arquivo my.cfg para definir os detalhes de conexão dos bancos de dados de origem e destino.

Banco de dados MySQL de origem — seção [src.mysql]:

[src.mysql]
host = "192.168.1.1"
port = "3306"
user = "test"
password = "test"
db = "test"
encodingdir = "share"
encoding = "utf8"

Banco de dados de destino — seção [desc.pgsql] (compatível com PostgreSQL, PPAS e AnalyticDB for PostgreSQL):

[desc.pgsql]
connect_string = "host=192.168.1.2 dbname=test port=3432 user=test password=pgsql"

Executar mysql2pgsql

./mysql2pgsql -l <tables_list_file> -d -n -j <thread_count> -s <schema>

Todos os parâmetros são opcionais:

Parâmetro

Descrição

Padrão

Exemplo

-l <file>

Caminho para um arquivo de texto que lista as tabelas a serem sincronizadas. Se omitido, todas as tabelas do banco de dados de origem serão sincronizadas.

Todas as tabelas

-l tab_list.txt

-d

Gera apenas a instrução DDL para criação da tabela de destino. Os dados não são sincronizados.

Desativado

-d

-n

Exclui definições de partição da instrução DDL. Utilize em conjunto com -d.

Desativado

-d -n

-j <n>

Quantidade de threads simultâneas para importação de dados.

5

-j 8

-s <schema>

Schema da tabela de destino. Defina como public para o AnalyticDB for PostgreSQL.

-s public

Formato do arquivo de lista de tabelas

Ao utilizar o parâmetro -l, crie um arquivo de texto simples onde cada linha especifica o nome de uma tabela e uma condição de filtro opcional:

table1 : select * from table_big where column1 < '2016-08-05'
table2 :
table3
table4: select column1, column2 from tableX where column1 != 10
table5: select * from table_big where column1 >= '2016-08-05'
  • Linhas sem condição (por exemplo, table3) migram todas as linhas da tabela.

  • Linhas com uma condição SELECT migram apenas as linhas correspondentes ao filtro.

Cenários comuns

Migração completa de banco de dados

  1. Gere a instrução DDL:

    ./mysql2pgsql -d
  2. Execute o DDL no AnalyticDB for PostgreSQL para criar as tabelas. Especifique uma chave de distribuição para cada tabela.

  3. Migre todos os dados:

    ./mysql2pgsql

    Por padrão, cinco threads simultâneas leem e importam os dados.

Migração parcial de tabelas

  1. Crie um arquivo chamado tab_list.txt e liste as tabelas a serem migradas. Adicione uma condição de filtro para migrar apenas um subconjunto de linhas:

    t1
    t2 : select * from t2 where c1 > 138888

    Esse procedimento migra todas as linhas de t1 e apenas as linhas onde c1 > 138888 de t2.

  2. Execute a migração:

    ./mysql2pgsql -l tab_list.txt

Próximos passos