Este tópico descreve como migrar dados de uma instância ApsaraDB RDS for PostgreSQL para um cluster PolarDB for PostgreSQL com os comandos pg_dump e pg_restore.
Para migrar dados de um banco de dados PostgreSQL autogerenciado para um cluster PolarDB for PostgreSQL, consulte Migrar dados de um banco de dados PostgreSQL autogerenciado para um cluster PolarDB for PostgreSQL.
Pré-requisitos
O espaço de armazenamento disponível no cluster PolarDB for PostgreSQL deve ser maior que o da instância ApsaraDB RDS for PostgreSQL.
Observações de uso
Este procedimento migra todos os dados. Para evitar inconsistências antes e depois da migração, interrompa as atividades de negócios e não grave dados na instância ApsaraDB RDS for PostgreSQL durante o processo.
Preparações
-
Crie uma instância Linux do Elastic Compute Service (ECS). Este exemplo usa uma instância ECS com Ubuntu 16.04 de 64 bits. Para mais informações, consulte Criar uma instância ECS.
NotaA instância ECS, a instância ApsaraDB RDS for PostgreSQL de origem e o cluster PolarDB for PostgreSQL de destino devem residir na mesma Virtual Private Cloud (VPC).
Crie uma instância ECS Linux com pagamento conforme o uso e libere-a após a migração.
-
Instale um cliente PostgreSQL na instância ECS Linux para executar os comandos de restauração de dados. Para mais informações, consulte a documentação oficial do PostgreSQL.
NotaVerifique se a versão do cliente PostgreSQL instalado é compatível com a da instância ApsaraDB RDS for PostgreSQL de origem e do cluster PolarDB for PostgreSQL de destino.
Etapa 1: Fazer backup dos dados da instância ApsaraDB RDS for PostgreSQL
Este procedimento migra todos os dados. Para evitar inconsistências antes e depois da migração, interrompa as atividades de negócios e não grave dados na instância ApsaraDB RDS for PostgreSQL durante o processo.
-
Execute o seguinte comando na instância ECS para fazer backup dos dados da instância ApsaraDB RDS for PostgreSQL:
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>Parâmetros:
<username>: nome de usuário da conta usada para fazer login na instância ApsaraDB RDS for PostgreSQL.
<hostname>: endpoint da instância ApsaraDB RDS for PostgreSQL. Para visualizar o endpoint de um banco de dados, consulte Visualizar e alterar endpoints e números de porta.
<port>: número da porta do serviço de banco de dados.
<dbname>: nome do banco de dados ao qual você deseja se conectar. Valor padrão: postgres.
-
<njobs>: quantidade de tarefas de backup simultâneas.
NotaTarefas simultâneas reduzem o tempo de backup, mas aumentam a carga no servidor de banco de dados.
Se a versão da instância ApsaraDB RDS for PostgreSQL for anterior à 9,2, especifique o parâmetro
--no-synchronized-snapshots.
<dumpdir>: diretório onde o arquivo de backup gerado será armazenado.
Exemplo:
pg_dump -U postgres -h pgm-xxxxxxxxx.pg.rds.aliyuncs.com -p 5432 postgres -Fd -j 5 -f postgresdump Quando o prompt
Enter password:for exibido, insira a senha do banco de dados para iniciar o backup.Aguarde a conclusão do backup. Os dados da instância ApsaraDB RDS for PostgreSQL serão salvos no diretório especificado. Neste exemplo, os dados ficam armazenados no diretório postgresdump.
Etapa 2: Migrar dados para o cluster PolarDB for PostgreSQL
Crie uma conta no cluster PolarDB for PostgreSQL de destino. Para mais informações, consulte Criar uma conta de banco de dados e Permissões de conta.
Crie um banco de dados para restauração no cluster PolarDB for PostgreSQL de destino. Defina o proprietário desse banco de dados como a conta criada na etapa anterior. Para mais informações, consulte Criar um banco de dados.
-
Execute o seguinte comando na instância ECS para migrar os dados da instância ApsaraDB RDS for PostgreSQL para o cluster PolarDB for PostgreSQL:
pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>Parâmetros:
<username>: nome de usuário da conta usada para fazer login no cluster PolarDB for PostgreSQL.
<hostname>: endpoint do cluster PolarDB for PostgreSQL.
<port>: número da porta do serviço de banco de dados. Para mais informações, consulte Visualizar o endpoint e o número da porta.
<dbname>: nome do banco de dados de destino onde os dados serão restaurados.
-
<njobs>: quantidade de tarefas simultâneas de restauração de dados.
NotaTarefas simultâneas reduzem o tempo de restauração, mas aumentam a carga no servidor de banco de dados.
<dumpdir>: diretório onde o arquivo de backup está armazenado.
Exemplo:
pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d postgres -j 6 postgresdump -
Quando o prompt
Enter password:for exibido, insira a senha do banco de dados para iniciar a migração de dados.NotaSe esqueceu a senha do banco de dados, consulte Gerenciar contas de banco de dados.
Aguarde a conclusão da migração de dados.