1、pg_restore用于恢复由 pg_dump
创建的 PostgreSQL 数据库备份的命令行工具。它可以恢复整个数据库或特定的表、数据、函数等。pg_restore仅可恢复由pg_dump导出的二进制格式(-Fc)的备份文件。pg_restore可以选择性地恢复数据库的不同部分,如表、索引、函数等。它支持通过选项来指定恢复的目标数据库和恢复的选项,例如并行恢复、恢复特定的表或数据。
以下是pg_restore部分常见参数:
-h host 或 --host=host:指定数据库服务器的连接地址(主机名或IP地址)。
-p port 或 --port=port:指定数据库服务器的连接端口号,默认是 5432。
-U username 或 --username=username:指定连接数据库的用户名。
-d dbname 或 --dbname=dbname:指定要恢复的数据库名称。连接到该数据库并直接恢复数据。
-a 或 --data-only:只恢复数据,不包括数据定义(如表结构)。
-s 或 --schema-only:只恢复数据定义,不包括数据。
-t table 或 --table=table:只恢复指定的表。可以多次使用此选项来指定多个表。
-n schema 或 --schema=schema:只恢复指定的模式(schema)中的对象。可以多次使用此选项来指定多个模式。
-v 或 --verbose:输出更多信息,使恢复过程更加透明。
-j number-of-jobs 或 --jobs=number-of-jobs:使用并发任务运行 pg_restore,支持自定义和目录归档格式,以加速恢复过程。
2、psql可恢复纯文本格式(-Fp),通常用于恢复小型数据库或需要手动控制恢复过程的场景
pg_restore
允许更精细的控制恢复过程,可以选择性地恢复特定的对象或数据段,而 psql
则只能按顺序执行备份文件中的 SQL 命令。
示例
-
1、使用pg_restore恢复二进制格式备份文件:
pg_restore -U ts_user -d ts_db -v < /backup/backup_file.dump >/opt/restore.log 2>&1
# 这将把/backup下的backup_file.dump备份文件(二进制压缩格式)恢复到ts_user所属的ts_db库中,同时在/opt下生成恢复日志restore.log以查看恢复过程中是否有报错。
-
2、使用psql恢复纯文本格式备份文件:
psql -U u0711 -d db0711 < /backup/backup.sql >/opt/restore.log 2>&1
#这将把/backup下的/backup.sql备份文件(纯文本格式)恢复到u0711所属的db0711中,同样生成日志以供查看恢复过程中的报错。