PostgreSQL数据库之pg_dump使用

打印 上一主题 下一主题

主题 898|帖子 898|积分 2694

 
目录
前言
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 文件

  1. pg_dump -U 用户名 -h 主机名 -p 端口 数据库名 > 备份文件.sql
复制代码


  • -U: 指定命据库用户名(默认使用当前体系用户)
  • -h: 数据库服务器地址(默认 localhost)
  • -p: 数据库端口(默认 5432)
  • > 备份文件.sql: 将输出重定向到 SQL 文件
示例:
  1. pg_dump -U postgres -h 127.0.0.1 -p 5432 mydb > mydb_backup.sql
复制代码

2. 备份选项

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

  1. pg_dump --schema-only 数据库名 > 结构备份.sql
复制代码
2.2 仅备份数据(不包含表结构)

  1. pg_dump --data-only 数据库名 > 数据备份.sql
复制代码
2.3 备份特定表

  1. pg_dump -t 表名1 -t 表名2 数据库名 > 部分表备份.sql
复制代码
2.4 排除特定表

  1. pg_dump --exclude-table=表名 数据库名 > 排除表后的备份.sql
复制代码
2.5 备份为自界说格式(支持压缩和快速规复)

  1. pg_dump -Fc 数据库名 > 备份文件.dump
复制代码


  • -Fc: 输出为自界说压缩格式(需用 pg_restore 规复)
2.6 备份为目录格式(支持并行)

  1. pg_dump -Fd 数据库名 -f 备份目录
复制代码


  • -Fd: 输出为目录格式,每个表一个文件
  • 支持并行备份(-j N 指定线程数)

3. 高级选项

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

  1. pg_dump -Fd -j 4 数据库名 -f 备份目录
复制代码


  • -j 4: 使用 4 个并行使命(仅适用于目录格式 -Fd)
3.2 压缩备份

  1. pg_dump 数据库名 | gzip > 备份文件.sql.gz
复制代码
或使用内置压缩(自界说格式默认压缩):
  1. pg_dump -Fc -Z 9 数据库名 > 备份文件.dump
复制代码


  • -Z 9: 最高压缩级别(0-9)
3.3 备份时忽略某些数据(如排除大表)

  1. pg_dump --exclude-table-data=大表名 数据库名 > 备份.sql
复制代码

4. 长途数据库备份

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

5. 规复备份

5.1 规复 SQL 文件

  1. psql -U 用户名 -d 目标数据库名 -f 备份文件.sql
复制代码
5.2 规复自界说格式备份

  1. pg_restore -U 用户名 -d 目标数据库名 备份文件.dump
复制代码
5.3 规复时创建新数据库

  1. createdb 新数据库名
  2. pg_restore -U 用户名 -d 新数据库名 备份文件.dump
复制代码

6. 注意事项


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

7. 示例场景

7.1 场景 1: 备份并压缩

  1. pg_dump -U postgres mydb | gzip > mydb_$(date +%Y%m%d).sql.gz
复制代码
7.2 场景 2: 仅备份特定表结构

  1. pg_dump -U postgres --schema-only -t users -t orders mydb > tables_schema.sql
复制代码
7.3 场景 3: 并行备份大数据库

  1. pg_dump -Fd -j 8 -U postgres -f /backup/mydb mydb
复制代码

通过公道使用 pg_dump,可以实现灵活的数据库备份计谋。发起联合定时使命(如 cron)实现自动化备份。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表