AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 17740
Accepted
Ali Razeghi - AWS
Ali Razeghi - AWS
Asked: 2012-05-11 18:04:09 +0800 CST2012-05-11 18:04:09 +0800 CST 2012-05-11 18:04:09 +0800 CST

如何获得有效且完整的 PostgreSQL 数据库备份和测试

  • 772

我希望我能得到一个明确的答案,说明如何确保像使用 MS SQL Server 一样进行完整的 Postgres 备份,然后照顾孤立的用户。

根据我的阅读,可能是错误的,找到一个好的 PostgreSQL 博客一直很有挑战性,所以请随时向我推荐一些,我需要弄清楚这个应用程序是如何工作的,这样我才能信任我的备份和 Slony复制。我让开发人员在选择 s 时通过 , 和 formatcustom恢复directory了我从 PgadminIII 获取的备份,但他说其中两个没有加载,但它只是目录,而不是数据。我现在真的很困惑。tarOIDtar

  1. 我正在使用 PGAdminIII,它有一个pg_dumpandpg_dumpall选项。我想备份我需要在某处测试恢复此数据库的所有内容,并验证是的,我们需要的所有数据和我们的备份都很好。最终我想写一个自动恢复脚本,但一天一次。

pg_dumpall显然有一个-globals应该备份所有内容的选项,但pg_dumpall显示的帮助-g, --globals-only dump only global objects, no databases不是一个--globals选项。

我认为pg_dumpall至少会备份外键,但即使这似乎是一个“选项”。根据文档,即使pg_dumpall我需要使用一个-o选项来备份外键,我也无法想象什么时候我不想备份外键,这作为默认选项会更有意义。

  1. 我将如何照顾孤儿用户并验证我拥有一切?我想实际在另一台服务器上恢复我的备份文件并验证一切正常。如果有人对如何在 PostgreSQL 中进行真正的备份和恢复有任何建议,我将不胜感激。

我有一个 PostgreSQL 服务器,但我仍然无法理解为什么应用程序OID默认不会备份 s!似乎有 99.9% 的时间你会想要这样。

更新 1:

Postgres文档提到globals我正在寻找的选项似乎是此版本的默认选项,但它仍然需要该-o选项。如果有人可以验证或给我一个示例命令,以在其他地方恢复单个数据库以及它需要的一切,我将不胜感激。

编辑:被网站要求通过编辑我的问题来展示这个问题的独特性。这个问题提出了问题,并明确了备份中的 OID、全局变量和非全局变量之间的区别,以及测试恢复建议以确保备份是好的,而不是仅仅备份。由于答案,我能够备份,找出全局/ oid,并使用 cron 作业在 Postgres 上每晚开始测试恢复过程。谢谢您的帮助!

postgresql backup
  • 1 1 个回答
  • 94470 Views

1 个回答

  • Voted
  1. Best Answer
    Mike Sherrill 'Cat Recall'
    2012-05-11T19:21:05+08:002012-05-11T19:21:05+08:00

    您可以使用 pg_dumpall 转储整个 PostgreSQL 集群。这就是单个集群的所有数据库和所有全局变量。从服务器上的命令行,我会做这样的事情。(我的监听端口是 5433,而不是默认端口。)您可能需要也可能不需要 --clean 选项。

    $ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql
    

    这包括全局信息——关于用户和组、表空间等的信息。

    如果我要备份单个数据库并将其移动到临时服务器,我会使用 pg_dump 转储数据库,并使用以下任一方式转储全局变量

    • pg_dumpall --globals-only, 或者
    • pg_dumpall --roles-only(如果你只需要角色)

    像这样。

    $ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
    $ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql
    

    输出只是文本文件。

    将这些文件移动到不同的服务器后,首先加载全局变量,然后是数据库转储。

    $ psql -U postgres -h localhost -p 5433 < globals.sql
    $ psql -U postgres -h localhost -p 5433 < sandbox.sql
    

    我认为 pg_dumpall 至少会备份外键,但即使这似乎是一个“选项”。根据: http ://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html即使使用 pg_dumpall 我也需要使用 -o 选项来备份外键

    不,该引用说“如果您的应用程序以某种方式(例如,在外键约束中)引用 OID 列,请使用此选项。否则,不应使用此选项。” (添加了重点。)我认为您的应用程序不太可能引用 OID 列。您不需要使用此选项来“备份外键”。(在编辑器或文件查看器中读取转储文件。)

    • 73

相关问题

  • 运行时间偏移延迟复制的最佳实践

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve