我希望我能得到一个明确的答案,说明如何确保像使用 MS SQL Server 一样进行完整的 Postgres 备份,然后照顾孤立的用户。
根据我的阅读,可能是错误的,找到一个好的 PostgreSQL 博客一直很有挑战性,所以请随时向我推荐一些,我需要弄清楚这个应用程序是如何工作的,这样我才能信任我的备份和 Slony复制。我让开发人员在选择 s 时通过 , 和 formatcustom
恢复directory
了我从 PgadminIII 获取的备份,但他说其中两个没有加载,但它只是目录,而不是数据。我现在真的很困惑。tar
OID
tar
- 我正在使用 PGAdminIII,它有一个
pg_dump
andpg_dumpall
选项。我想备份我需要在某处测试恢复此数据库的所有内容,并验证是的,我们需要的所有数据和我们的备份都很好。最终我想写一个自动恢复脚本,但一天一次。
pg_dumpall
显然有一个-globals
应该备份所有内容的选项,但pg_dumpall
显示的帮助-g, --globals-only dump only global objects, no databases
不是一个--globals
选项。
我认为pg_dumpall
至少会备份外键,但即使这似乎是一个“选项”。根据文档,即使pg_dumpall
我需要使用一个-o
选项来备份外键,我也无法想象什么时候我不想备份外键,这作为默认选项会更有意义。
- 我将如何照顾孤儿用户并验证我拥有一切?我想实际在另一台服务器上恢复我的备份文件并验证一切正常。如果有人对如何在 PostgreSQL 中进行真正的备份和恢复有任何建议,我将不胜感激。
我有一个 PostgreSQL 服务器,但我仍然无法理解为什么应用程序OID
默认不会备份 s!似乎有 99.9% 的时间你会想要这样。
更新 1:
Postgres文档提到globals
我正在寻找的选项似乎是此版本的默认选项,但它仍然需要该-o
选项。如果有人可以验证或给我一个示例命令,以在其他地方恢复单个数据库以及它需要的一切,我将不胜感激。
编辑:被网站要求通过编辑我的问题来展示这个问题的独特性。这个问题提出了问题,并明确了备份中的 OID、全局变量和非全局变量之间的区别,以及测试恢复建议以确保备份是好的,而不是仅仅备份。由于答案,我能够备份,找出全局/ oid,并使用 cron 作业在 Postgres 上每晚开始测试恢复过程。谢谢您的帮助!
您可以使用 pg_dumpall 转储整个 PostgreSQL 集群。这就是单个集群的所有数据库和所有全局变量。从服务器上的命令行,我会做这样的事情。(我的监听端口是 5433,而不是默认端口。)您可能需要也可能不需要 --clean 选项。
这包括全局信息——关于用户和组、表空间等的信息。
如果我要备份单个数据库并将其移动到临时服务器,我会使用 pg_dump 转储数据库,并使用以下任一方式转储全局变量
pg_dumpall --globals-only
, 或者pg_dumpall --roles-only
(如果你只需要角色)像这样。
输出只是文本文件。
将这些文件移动到不同的服务器后,首先加载全局变量,然后是数据库转储。
不,该引用说“如果您的应用程序以某种方式(例如,在外键约束中)引用 OID 列,请使用此选项。否则,不应使用此选项。” (添加了重点。)我认为您的应用程序不太可能引用 OID 列。您不需要使用此选项来“备份外键”。(在编辑器或文件查看器中读取转储文件。)