postgresql - 哪种 pgdump 格式最适合小存储和快速恢复?

标签 postgresql pg-dump pg-restore

这是我第一次涉足 PostgreSQL 备份(数据库转储),我一直在研究不同的 pgdump 格式、其他 pgdump 选项和 pgdumpall。对于希望每小时转储(将覆盖以前的转储)两个数据库(每个数据库中包含表触发器和两个不同模式)的 Postgres 初学者来说,可以轻松实现以下目标的备份格式和选项是什么:

  1. 文件较小(每个数据库一个文件或能够选择要恢复的数据库)
  2. 易于恢复为干净的数据库(有或没有相同的数据库名称[s])
  3. 易于在不同的服务器上恢复(用户可能不同)
  4. 触发器在恢复时被禁用并在恢复后重新启用。

包括用于备份和恢复的示例命令。

欢迎任何其他有用的 pgdump/pgrestore 建议。

最佳答案

此命令将创建一个小的 dmp 文件,其中仅包含数据库的结构 - 表格、列、触发器、 View 等。(此命令只需要几分钟)

pg_dump -U "dbuser" -h "host" -p "port" -F c -b -v -f ob_`date +%Y%m%d`.dmp dbname

**ex:** pg_dump -U thames -h localhost -p 5432 -F c -b -v -f ob_`date +%Y%m%d`.dmp dbname

此命令将备份完整的数据库

pg_dump -h localhost -U "dbuser" "dbname" -Fc > "pathfilename.backup"

**ex:** pg_dump -h localhost -U thames thamesdb - Fc > "thamesdb.backup"

对于恢复,您可以使用:

pg_restore -i -h localhost -U "user" -d "dbname" -v "dbname.backup"

**ex:** pg_restore -i -h localhost -U thames -d thamesdb -v "thamesdb.backup"

备份选定的表格(使用正则表达式)here

pg_dump -t '(A|B|C)'

有关详细信息,您可以访问 pgdump帮助页面有很多选项

关于postgresql - 哪种 pgdump 格式最适合小存储和快速恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20234359/

相关文章:

postgresql - 在 OVER() 子句中使用别名

postgresql - Postgres 的列名或表名什么时候需要引号,什么时候不需要?

postgresql - 如何将物化 View pg_dump 作为物化 View 而不是表?

linux - 恢复 postgres 备份失败,并且/home/myuser 中出现一个具有奇怪名称的不可删除文件 (???2@þ>?yqus????>I?[蓝牙I??i?Ď)

sql - 使用 pg_restore 创建或覆盖表

c# - 确定文件中更改的字节的开始和结束范围

postgresql - pgpool-II 认证失败

postgresql - 如何将 pg_dump 文件恢复到 postgres 数据库中

postgreSQL pg_dump 通过局域网

postgresql - 从 pgAdmin4 postgresql 10.5 中的 .tar 文件运行恢复数据库时获取退出代码 1