PostgreSQL数据库之pg_dump使用

news/2025/2/25 14:49:17

 

目录

前言

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.niftyadmin.cn/n/5865622.html

相关文章

将Ubuntu操作系统的安装源设置为阿里云

在使用Ubuntu操作系统时,默认的软件源通常是国外的仓库,这可能会导致软件安装和更新速度较慢。为了提高下载速度和稳定性,我们可以将Ubuntu的安装源设置为阿里云镜像源。以下是详细步骤: 一、准备工作 在开始之前,请确保您的Ubuntu系统可以正常上网,并且您拥有管理员权…

日常知识点之刷题一

1:流浪地球 0~n-1个发动机,计划启动m次,求最后启动的发动机的个数。 以及发动机的编号。(模拟过程,每次手动启动的机器对应时间向两边扩散) //输入每个启动的时间和编号 void test_liulang() {int n, m;ci…

数据库(MySQL)二

MySQL 六、MySQL索引视图6.1 索引底层原理6.1.1 索引hash算法6.1.2 索引二叉树算法6.1.3 索引平衡二叉树算法6.1.4 索引BTREE树算法6.1.5 普通SQL全表扫描过程 6.2 索引分类6.2.1 按数据结构层次分类6.2.2 按字段数量层次分类6.2.3 按功能逻辑层次分类(面试题&#…

登录-10.Filter-登录校验过滤器

一.登录校验过滤器的实现思路 我们要实现登录校验过滤器,就要首先明白登录校验过滤器的实现思路。登录校验过滤器是用来实现登录校验的。那么首先思考第一个问题,所有的请求都需要校验吗? 答案是否定的,因为login请求就不需要过滤…

计算机毕业设计SpringBoot+Vue.js明星周边产品销售网站(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

C++判断回文字符串

C判断回文字符串 1、使用reverse()函数反转2、使用循环,借助变量首尾比较3、双指针方法1:while循环方法2:for循环 1、使用reverse()函数反转 思路: 首先读取一个字符串并存储在变量 s 中 将字符串 s 复制到另一个字符串变量 s1 …

【Godot4.3】基于绘图函数的矢量蒙版效果与UV换算

概述 在设计圆角容器时突发奇想: 将圆角矩形的每个顶点坐标除以对应圆角矩形所在Rect2的size,就得到了顶点对应的UV坐标。然后使用draw_colored_polygon,便可以做到用图片填充圆角矩形的效果。而且这种计算的效果就是图片随着其填充的图像缩…

akka现有的分布式定时任务框架总结

根据你的需求,以下是一些基于 Akka 实现的分布式定时任务框架,以及相关的 GitHub 项目推荐: 1. Openjob Openjob 是一个基于 Akka 架构的新一代分布式任务调度框架,支持多种定时任务、延时任务、工作流设计,采用无中…