PostgreSQL数据库之pg_dump使用

server/2025/2/25 10:31:19/

 

目录

前言

1. 基础用法

1.1 备份整个数据库到 SQL 文件

2. 备份选项

2.1 仅备份结构(不包含数据)

2.2 仅备份数据(不包含表结构)

2.3 备份特定表

2.4 排除特定表

2.5 备份为自定义格式(支持压缩和快速恢复)

2.6 备份为目录格式(支持并行)

3. 高级选项

3.1 并行备份(加快大数据库备份速度)

3.2 压缩备份

3.3 备份时忽略某些数据(如排除大表)

4. 远程数据库备份

5. 恢复备份

5.1 恢复 SQL 文件

5.2 恢复自定义格式备份

5.3 恢复时创建新数据库

6. 注意事项

7. 示例场景

7.1 场景 1: 备份并压缩

7.2 场景 2: 仅备份特定表结构

7.3 场景 3: 并行备份大数据库


前言

pg_dump是PostgreSQL的一个工具,用来备份数据库。需要备份整个数据库,或者特定的表,或者结构,或者数据。然后,先介绍基本的用法,比如备份整个数据库到文件。

先分情况讨论,比如只备份结构或者数据,这时候需要用到--schema-only或者--data-only选项。还有备份特定表的情况,用-t参数加上表名。然后不同的格式,比如自定义格式、目录格式,这些有什么优势,比如压缩或者并行备份。

还有连接到远程数据库的情况,需要指定主机、端口、用户名等参数。恢复数据库的时候,可能需要使用pg_restore,特别是如果备份是自定义或目录格式的话。如果是纯SQL格式,可能用psql来恢复。

另外,我们可能不知道如何排除某些表,这时候可以用--exclude-table选项。还有并行备份的选项,比如-j参数,用于加快速度。注意事项方面,备份时确保没有长时间运行的事务,避免锁的问题。权限问题也很重要,备份文件的安全存放。

举几个例子,更直观地理解,比如备份整个数据库、备份特定表、只备份结构等等。最后定期测试备份的有效性,确保在需要时能够恢复。这样就能全面了解pg_dump的各种用法和注意事项了。

pg_dump 是 PostgreSQL 数据库自带的命令行工具,用于备份数据库或部分对象。它可以将数据库导出为 SQL 脚本或自定义格式的归档文件,常用于数据迁移、备份和恢复。以下是详细的使用说明:


1. 基础用法

1.1 备份整个数据库到 SQL 文件
pg_dump -U 用户名 -h 主机名 -p 端口 数据库名 > 备份文件.sql
  • -U: 指定数据库用户名(默认使用当前系统用户)
  • -h: 数据库服务器地址(默认 localhost
  • -p: 数据库端口(默认 5432
  • > 备份文件.sql: 将输出重定向到 SQL 文件

示例:

pg_dump -U postgres -h 127.0.0.1 -p 5432 mydb > mydb_backup.sql

2. 备份选项

2.1 仅备份结构(不包含数据)
pg_dump --schema-only 数据库名 > 结构备份.sql
2.2 仅备份数据(不包含表结构)
pg_dump --data-only 数据库名 > 数据备份.sql
2.3 备份特定表
pg_dump -t 表名1 -t 表名2 数据库名 > 部分表备份.sql
2.4 排除特定表
pg_dump --exclude-table=表名 数据库名 > 排除表后的备份.sql
2.5 备份为自定义格式(支持压缩和快速恢复)
pg_dump -Fc 数据库名 > 备份文件.dump
  • -Fc: 输出为自定义压缩格式(需用 pg_restore 恢复)

2.6 备份为目录格式(支持并行)
pg_dump -Fd 数据库名 -f 备份目录
  • -Fd: 输出为目录格式,每个表一个文件

  • 支持并行备份(-j N 指定线程数)


3. 高级选项

3.1 并行备份(加快大数据库备份速度)
pg_dump -Fd -j 4 数据库名 -f 备份目录
  • -j 4: 使用 4 个并行任务(仅适用于目录格式 -Fd

3.2 压缩备份
pg_dump 数据库名 | gzip > 备份文件.sql.gz

或使用内置压缩(自定义格式默认压缩):

pg_dump -Fc -Z 9 数据库名 > 备份文件.dump
  • -Z 9: 最高压缩级别(0-9)

3.3 备份时忽略某些数据(如排除大表)
pg_dump --exclude-table-data=大表名 数据库名 > 备份.sql

4. 远程数据库备份

pg_dump -U 用户名 -h 远程IP -p 端口 数据库名 > 备份文件.sql

5. 恢复备份

5.1 恢复 SQL 文件
psql -U 用户名 -d 目标数据库名 -f 备份文件.sql
5.2 恢复自定义格式备份
pg_restore -U 用户名 -d 目标数据库名 备份文件.dump
5.3 恢复时创建新数据库
createdb 新数据库名
pg_restore -U 用户名 -d 新数据库名 备份文件.dump

6. 注意事项

  1. 权限问题: 确保执行命令的用户有对应数据库的读取权限。
  2. 避免锁冲突: 备份期间可能对表加锁,建议在低峰期操作。
  3. 版本兼容性pg_dump 版本通常需与 PostgreSQL 服务器版本一致。
  4. 备份验证: 定期测试备份文件是否可恢复。
  5. 环境变量: 可通过 PGPASSWORD=密码 传递密码(不推荐在脚本中明文使用,建议使用 .pgpass 文件)。

7. 示例场景

7.1 场景 1: 备份并压缩
pg_dump -U postgres mydb | gzip > mydb_$(date +%Y%m%d).sql.gz
7.2 场景 2: 仅备份特定表结构
pg_dump -U postgres --schema-only -t users -t orders mydb > tables_schema.sql
7.3 场景 3: 并行备份大数据库
pg_dump -Fd -j 8 -U postgres -f /backup/mydb mydb

通过合理使用 pg_dump,可以实现灵活的数据库备份策略。建议结合定时任务(如 cron)实现自动化备份。


http://www.ppmy.cn/server/170533.html

相关文章

docker下搭建redis集群

1. 环境准备 准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文 安装好并启动docker后就可以开始搭建redis了 2. docker容器下安装redis 本篇文章…

官方文档学习TArray容器

一.TArray中的元素相等 1.重载一下 元素中的 运算符,有时需要重载排序。接下来,我们将id 作为判断结构体的标识。 定义结构体 USTRUCT() struct FXGEqualStructInfo {GENERATED_USTRUCT_BODY() public:FXGEqualStructInfo(){};FXGEqualStructInfo(in…

基于keepalived实现haproxy高可用站点

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来有加入VRRP的功 能,VRRP是Virtual Router Redundancy protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就 是为了解决静态路…

硬件加速与技术创新双轮驱动:DeepSeek和ChatGPT性能进阶的未来蓝图

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…

Centos中将UTC的时区改为CTS时区

在CentOS系统中,要将系统时区从协调世界时(UTC)更改为所需的时区(可能是您提到的“CTS”,但通常我们指的是具体的时区名称,如中国标准时间 CST 或中国夏令时 CDT,这里假设您意指中国标准时间&am…

如何实现使用DeepSeek的CV模型对管道内模糊、低光照或水渍干扰的图像进行去噪、超分辨率重建。...

要使用 DeepSeek 的 CV 模型对管道内模糊、低光照或水渍干扰的图像进行去噪、超分辨率重建,一般可以按照以下步骤实现: 1. 准备工作 1.1 获取 API 访问权限 首先,你需要从 DeepSeek 官方获取 API 访问权限和相应的 API 密钥。这通常需要在 De…

ESP32学习笔记_Bluetooth(2)——Bluetooth Stack、GAP

文章目录 Bluetooth StackGAPRoles when Operating over BR/EDR Physical TransportRoles when Operating over an LE Physical TransportDefines compliance requirementsDevice Connection Establishment Process 摘要:这篇博文介绍了 ESP32 蓝牙协议栈的相关内容…

web网络安全:SQL 注入攻击

SQL 注入攻击(SQL Injection)概述 SQL 注入(SQL Injection) 是Web应用程序中最常见的安全漏洞之一。攻击者通过在应用程序的输入字段中插入恶意SQL代码,能够操控数据库执行非预期操作,导致数据泄露、篡改甚…