提要:在本教程中,您将学习如何使用PostgreSQL恢复工具(包括pg_restore和psql)来恢复数据库。

在还原数据库之前,您需要终止到该数据库的所有连接并准备备份文件。在 PostgreSQL 中,您可以通过两种方式恢复数据库:

  • 使用 psql 工具恢复由 pg_dumppg_dumpall 工具生成的纯 SQL 脚本文件
  • 使用 pg_restore 工具还原 pg_dump 工具创建的 TAR 或 目录格式的文件

如何使用 psql 工具还原数据库

psql 工具可以从 pg_dumppg_dumpall 及其它工具生成的相兼容的备份文件里还原。使用 psql 工具,相当于执行整个脚本。

要还原完整备份并忽略还原过程中发生的任何错误,请使用以下命令:

>psql -U username -f backupfile.sql

如果想在发生错误时,停止还原,请使用以下命令:

>psql -U username --set ON_ERROR_STOP=on -f backupfile

如果您在特定数据库中备份特定数据库对象,则可以使用以下命令来恢复它们:

>psql -U username -d database_name -f objects.sql

使用 pg_restore 工具还原数据库

除了 psql 工具,还可以使用 pg_restore 工具来还原数据库:

  • pg_restore 允许你在还原数据库里指定线程。每个线程同时恢复一个单独的表,这极大地加快了还原速度。
  • pg_restore 允许你从包含完整数据库的备份文件中恢复特定数据库对象。
  • pg_restore 可以将旧版本备份的数据库,恢复到新版的 PostgreSQL 中。

新建一个 new_sjk66 数据库作演示。

CREATE DATABASE new_sjk66;

现在,来还原在数据库备份生成的备份文件:

pg_restore --dbname=new_sjk66 --verbose c:\sjk66.com\sjk66.tar

如果您还原的数据库与您备份的数据库相同,则可以使用以下命令:

pg_restore --dbname=sjk66 --create --verbose c:\sjk66.com\sjk66.tar

从 PostgreSQL 9.2 开始,可以使用 --section 选项来只恢复数据库的结果。

pg_restore --dbname=new_sjk66 --section=pre-data c:\sjk66.com\sjk66.tar
上一篇:PostgreSQL 备份