八月 16, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 恢复工具(包括pg_restore
和psql
)来恢复数据库。
目录
介绍
在恢复数据库之前,您需要终止与该数据库的所有连接并准备备份文件。在 PostgreSQL 中,您可以通过两种方式恢复数据库:
- 使用
psql
恢复由pg_dump
和pg_dumpall
工具生成的纯 SQL 脚本文件。 - 使用
pg_restore
恢复由pg_dump
工具创建的 tar 文件和目录格式。
如何使用 psql 恢复数据库
psql
工具允许您恢复由pg_dump
、pg_dumpall
或任何其他生成兼容备份文件的工具生成的 SQL 脚本文件。通过使用psql
工具,您可以执行转储文件中的整个脚本。
要恢复一个完整的备份并忽略恢复过程中发生的任何错误,请使用以下命令:
psql -U username -f backupfile.sql
如果您想在出现错误时停止恢复数据库,请添加选型--set ON_ERROR_STOP=on
:
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_dump
或pg_dumpall
工具备份的数据库。通过pg_restore
程序,您有多种恢复数据库的选项,例如:
pg_restore
允许您使用-j
选项指定恢复线程数来执行并行恢复 。每个线程同时恢复一个单独的表,这大大加快了过程。目前,pg_restore
只对自定义文件格式支持此选项。pg_restore
还允许您恢复包含完整数据库的备份文件中的特定数据库对象。pg_restore
可以将旧版本中备份的数据库恢复到新版本中。
让我们创建一个新数据库,名称为newdvdrental
,用于练习使用pg_restore
工具。
CREATE DATABASE newdvdrental;
您可以使用以下命令,恢复 PostgreSQL 备份数据库教程中的以pg_dump
工具生成的tar
文件格式的dvdrental
数据库:
pg_restore --dbname=newdvdrental --verbose c:\pgbackup\dvdrental.tar
如果您恢复的数据库与您备份的数据库相同,则可以使用以下命令:
pg_restore --dbname=dvdrental --create --verbose c:\pgbackup\dvdrental.tar
从 PostgreSQL 9.2 开始,您可以使用--section
选项仅恢复表结构。这允许您使用新数据库作为创建其他数据库的模板。
首先,创建一个名为dvdrental_tpl
的新数据库。
CREATE DATABASE dvdrental_tpl;
其次,使用以下命令从备份文件dvdrental.tar
仅恢复表结构:
>pg_restore --dbname=dvdrental_tpl --section=pre-data c:\pgbackup\dvdrental.tar
进一步阅读
- pg_restore – pg_restore 工具文档