PostgreSQL 教程: 恢复一个 pg_dump 备份的数据库

八月 16, 2023

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

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

  • 使用psql恢复由pg_dumppg_dumpall工具生成的纯 SQL 脚本文件。
  • 使用pg_restore恢复由pg_dump工具创建的 tar 文件和目录格式。

如何使用 psql 恢复数据库

psql工具允许您恢复由pg_dumppg_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_dumppg_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

进一步阅读