PostgreSQL数据库之pg_dump使用

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

 
目录
媒介
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 立即注册

本版积分规则

水军大提督

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

标签云

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