Este tópico descreve como usar os comandos pg_dumpall, pg_dump e pg_restore para migrar um banco de dados PostgreSQL autogerenciado para o .
Se o banco de dados de origem for uma instância do ApsaraDB RDS for PostgreSQL, consulte Migrar dados de uma instância do ApsaraDB RDS for PostgreSQL para um cluster do PolarDB for PostgreSQL.
Pré-requisitos
O cluster de destino do deve ter mais espaço de armazenamento que o banco de dados PostgreSQL autogerenciado.
Observações de uso
Esta é uma migração completa de dados. Para evitar discrepâncias, interrompa todos os serviços e operações de escrita no banco de dados autogerenciado antes de iniciar a migração.
Preparações
-
Crie uma instância ECS com Linux. Este tutorial 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 e o cluster de destino do devem estar na mesma virtual private cloud (VPC).
Crie uma instância ECS com pagamento conforme o uso e libere-a após concluir a migração.
-
Instale o PostgreSQL na instância ECS para restaurar os dados. Para mais detalhes, consulte a documentação oficial do PostgreSQL.
NotaCertifique-se de que a versão instalada do PostgreSQL seja idêntica à do banco de dados PostgreSQL autogerenciado.
Etapa 1: Fazer backup do banco de dados autogerenciado
-
No servidor do banco de dados PostgreSQL autogerenciado, execute o comando abaixo para fazer backup de todas as informações de função.
pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>Parâmetros:
<username>: conta de login do banco de dados PostgreSQL autogerenciado.
<hostname>: endpoint do banco de dados PostgreSQL autogerenciado. Use localhost se executar o comando diretamente no servidor de banco de dados.
<port>: número da porta do banco de dados.
<filename>: nome do arquivo de backup de saída.
Exemplo:
pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql Quando solicitado o
Password:, insira a senha da conta do banco de dados.-
Use o comando
vimpara substituirSUPERUSERporpolar_superuserno arquivo de backup das informações de função.NotaSe o arquivo de backup das informações de função não contiver
SUPERUSER, ignore esta etapa.-- PostgreSQL database cluster dump -- SET default_transaction_read_only = off; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; -- -- Roles -- CREATE ROLE data1; ALTER ROLE data1 WITH NOSUPERUSER INHERIT CREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'md5xxx'; CREATE ROLE manisha; ALTER ROLE manisha WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'mdxxx'; CREATE ROLE postgres; ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS PASSWORD 'md5xxx'; CREATE ROLE testuser; ALTER ROLE testuser WITH NOSUPERUSER INHERIT NOCREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS; -- -- PostgreSQL database cluster dump complete -
No servidor do banco de dados PostgreSQL autogerenciado, execute o seguinte comando para fazer backup dos dados.
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>Parâmetros:
<username>: conta de login do banco de dados PostgreSQL autogerenciado.
<hostname>: endpoint do banco de dados PostgreSQL autogerenciado. Use localhost se executar o comando no próprio servidor de banco de dados.
<port>: número da porta do banco de dados.
<dbname>: nome do banco de dados a ser copiado.
-
<njobs>: quantidade de tarefas simultâneas para o backup.
NotaValores maiores reduzem o tempo de dump, mas aumentam a carga no servidor de banco de dados.
Se o banco de dados PostgreSQL autogerenciado for anterior à versão 9.2, especifique também o parâmetro
--no-synchronized-snapshots.
<dumpdir>: diretório de saída para os arquivos de backup.
Exemplo:
pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump Ao receber a solicitação de
Password:, insira a senha da conta do banco de dados.Aguarde a conclusão do backup. Os dados serão salvos no diretório especificado, que neste exemplo é postgresdump.
Etapa 2: Migrar dados para o
-
Faça upload do diretório com os arquivos de backup para a instância ECS.
NotaIsso inclui o arquivo de backup das informações de função e os arquivos de backup do banco de dados.
-
Na instância ECS, execute o comando a seguir para importar as informações de função do arquivo de backup para o cluster do .
psql -U <username> -h <hostname> -p <port> -d <dbname> -f <filename>Parâmetros:
<username>: conta de login do banco de dados .
<hostname>: endpoint privado primário do cluster .
<port>: número da porta do banco de dados. Para mais informações, consulte Visualizar o endpoint e o número da porta.
<dbname>: nome do banco de dados para conexão.
<filename>: nome do arquivo de backup das informações de função.
psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql Quando solicitado o
Password:, insira a senha da conta do banco de dados.-
Na instância ECS, execute o comando abaixo para restaurar os dados no cluster do .
pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>Parâmetros:
<username>: conta de login do banco de dados .
<hostname>: endpoint privado primário do cluster . Para mais detalhes, consulte Visualizar ou solicitar um endpoint.
<port>: número da porta do banco de dados. Consulte Visualizar o endpoint e o número da porta para obter mais informações.
-
<dbname>: nome do banco de dados de destino onde os dados serão restaurados.
NotaO banco de dados de destino deve existir. Caso contrário, crie-o antes de prosseguir.
-
<njobs>: número de tarefas simultâneas usadas na restauração.
NotaEssa opção reduz o tempo de restauração, mas aumenta a carga no servidor de banco de dados.
<dumpdir>: diretório onde estão armazenados os arquivos de backup.
Exemplo:
pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d mytestdata -j 6 postgresdump -
Quando solicitado o
Password:, insira a senha da conta do banco de dados.NotaSe esqueceu a senha, consulte Gerenciar uma conta de banco de dados.
Aguarde a conclusão da migração de dados.