postgresql-“实时”/热文件备份的方法?

postgresql-“实时”/热文件备份的方法?

请原谅我问的这个无知的问题,但我看到 postgres 有他们的 WAL 日志,并且有关于使用文件系统快照的讨论,而带有快照的 WAL 可能或可能不足以备份/恢复...我不是传统的 DBA/管理员(我是开发人员),但正在达到寻求更好地支持这些需求的程度。

问题:Postgres 是否可以安装在 10GB 或 100GB 大小的系统上,以便不是使用特殊的备份软件,而是只使用传统的文件系统备份软件(文件系统快照?),并且使用此方法有合理的恢复方法?(如果大小很重要,想知道)

用例 1:使用 Postgres 时避免使用特殊备份方法,只需使用普通文件系统。无停机时间,或 < 5 秒。

用例 2:与混合 ECM(例如 Alfresco)一起使用时,文件系统内容(图像)和元数据(数据库)应始终同步备份和恢复。无停机时间,或 < 5 秒。

请详细说明我可能不会问到的领域,例如好/坏的想法或需要注意的事项:-)

(注意,这是在 Linux 环境上的本地安装,如果策略需要特定的文件系统,那是可以的)。

短暂性失眠!

-D

答案1

问题:是否可以在 10GB 或 100GB 大小的系统上设置 Postgres,以不使用特殊备份软件,而是只使用传统的文件系统备份软件(文件系统快照?),并使用此方法有合理的恢复方法?

是的,如果文件系统快照是原子的。这非常重要。你必须有一个原子快照,您不能直接复制数据目录。通常的方法是使用 SAN、逻辑卷管理器、支持快照的文件系统等拍摄快照,并将其挂载到另一条路径上,然后备份。因此,您使用的是备份前和备份后脚本。

此处的“原子”是指计算机科学中不可分割的单个时刻,其中所有内容都在此时刻之前或之后。在快照的情况下,它表示时间中的一瞬间,即存储在此特定时刻的状态。

据我了解,微软的卷影复制服务(适用于 Windows)仅在文件级别是原子的,因此您不能使用依赖它来实现一致性的备份系统。

如果您实际上并没有使用文件系统快照,而只是实时复制文件系统上的数据,您仍然可以这样做,但必须采取额外的步骤。根据文档您可以告诉 PostgreSQL 正在进行备份,它将进入无覆盖模式,以确保备份在运行时安全。但是,要恢复这样的备份,您需要写入的文件备份后脚本调用pg_stop_backup()运行后。确保拥有这些文件的最简单方法是确保WAL 归档已启用;否则您将需要备份系统中的一些额外的脚本挂钩来将它们附加到备份中。

用例 1:使用 Postgres 时避免使用特殊备份方法,只需使用普通文件系统。无停机时间,或 < 5 秒。

为此,只需使用pg_dump或者pg_basebackup. 无需停机,而且很简单。

任何可靠的备份系统都支持备份前和备份后挂钩,以使这变得简单。

用例 1:使用 Postgres 时避免使用特殊备份方法,只需使用普通文件系统。无停机时间,或 < 5 秒。

为此,您将需要原子快照,并且您需要确保图像与 PostgreSQL 位于同一个快照中。

否则,您可能会面临文件系统和数据库不太匹配的不一致的风险。

相关内容