Este tópico descreve como usar o comando pg_restore para restaurar dados de um arquivo de backup lógico (.dump) em uma instância do ApsaraDB RDS for PostgreSQL ou em um banco de dados PostgreSQL local.
Para pequenos volumes de dados, como os de uma única tabela, use um backup lógico para recuperação rápida. Para grandes volumes, recomendamos restaurar os dados de um backup físico completo em uma nova instância e, em seguida, usar o Data Transmission Service (DTS) para migrar os dados de volta para a instância original.
Para obter mais informações sobre métodos de recuperação de dados, consulte Recuperar.
Pré-requisitos
Observações de uso
Não se conecte ao banco de dados padrão
postgresdurante a restauração dos dados.Restaurar uma tabela específica não recupera outros objetos de banco de dados dos quais ela depende. Portanto, a operação pode falhar ao restaurar em um banco de dados limpo.
Restaurar um banco de dados
-
Faça logon na instância ECS ou no host local onde os dados de backup estão armazenados e execute o seguinte comando para restaurar o banco de dados.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>Parâmetro
Descrição
hostname
O endpoint da instância do ApsaraDB RDS for PostgreSQL.
Nota-
Para conectar-se a partir de uma instância ECS usando um endpoint interno, verifique se a instância ECS e a instância do ApsaraDB RDS for PostgreSQL usam o mesmo tipo de rede. Se ambas estiverem em uma vpc, devem residir na mesma vpc.
-
Para conectar-se a partir de um host local ou de uma instância ECS usando um endpoint público, garanta que um endpoint público esteja ativado para a instância.
username
O nome de usuário da conta privilegiada da instância do ApsaraDB RDS for PostgreSQL.
port
O número da porta da instância do ApsaraDB RDS for PostgreSQL.
dbname
O nome do banco de dados a ser restaurado.
-c (opcional)
A opção
-cremove os objetos de banco de dados existentes antes de recriá-los. Para mais detalhes sobre outras opções, consulte a documentação oficial do pg_restore.dumpdir
O caminho e o nome do arquivo de backup.
Exemplo:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump -
-
Quando solicitado o
Password:, insira a senha da conta privilegiada da instância e pressione Enter.[root@iZbpxxx ~]# pg_restore -h 'pgm-xxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump Password: [root@iZbpxxx ~]#NotaIgnore quaisquer avisos relacionados à extensão integrada plpgsql.
Restaurar uma tabela específica
-
Faça logon na instância ECS ou no host local onde os dados de backup estão armazenados e execute o seguinte comando para restaurar uma tabela específica.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>Parâmetro
Descrição
hostname
O endpoint da instância do ApsaraDB RDS for PostgreSQL.
Nota-
Para conectar-se a partir de uma instância ECS usando um endpoint interno, verifique se a instância ECS e a instância do ApsaraDB RDS for PostgreSQL usam o mesmo tipo de rede. Se ambas estiverem em uma vpc, devem residir na mesma vpc.
-
Para conectar-se a partir de um host local ou de uma instância ECS usando um endpoint público, garanta que um endpoint público esteja ativado para a instância.
username
O nome de usuário da conta privilegiada da instância do ApsaraDB RDS for PostgreSQL.
port
O número da porta da instância do ApsaraDB RDS for PostgreSQL.
dbname
O nome do banco de dados a ser restaurado.
table
O nome da tabela a ser restaurada.
-c (opcional)
A opção
-cremove os objetos de banco de dados existentes antes de recriá-los. Para mais detalhes sobre outras opções, consulte a documentação oficial do pg_restore.dumpdir
O caminho e o nome do arquivo de backup.
Exemplo:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump -
-
Quando solicitado o
Password:, insira a senha da conta privilegiada da instância e pressione Enter.[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump Password: [root@iZbpxxx ~]#
Restaurar apenas o schema do banco de dados
-
Faça logon na instância ECS ou no host local onde os dados de backup estão armazenados e execute o seguinte comando para restaurar apenas o schema do banco de dados.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>Parâmetro
Descrição
hostname
O endpoint da instância do ApsaraDB RDS for PostgreSQL.
Nota-
Para conectar-se a partir de uma instância ECS usando um endpoint interno, verifique se a instância ECS e a instância do ApsaraDB RDS for PostgreSQL usam o mesmo tipo de rede. Se ambas estiverem em uma vpc, devem residir na mesma vpc.
-
Para conectar-se a partir de um host local ou de uma instância ECS usando um endpoint público, garanta que um endpoint público esteja ativado para a instância.
username
O nome de usuário da conta privilegiada da instância do ApsaraDB RDS for PostgreSQL.
port
O número da porta da instância do ApsaraDB RDS for PostgreSQL.
dbname
O nome do banco de dados de destino.
-s
A opção
-srestaura apenas o schema (definição de dados), sem incluir os dados. Para mais detalhes sobre outras opções, consulte a documentação oficial do pg_restore.dumpdir
O caminho e o nome do arquivo de backup.
Exemplo:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump -
-
Quando solicitado o
Password:, insira a senha da conta privilegiada da instância e pressione Enter.[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump Password: [root@iZbpxxx ~]#NotaIgnore quaisquer avisos relacionados à extensão integrada plpgsql.