【问题标题】:Backing up a postgresql data dir with python tarfile. What errors to expect / ignore使用 python tarfile 备份 postgresql 数据目录。期望/忽略什么错误
【发布时间】:2011-06-14 03:55:43
【问题描述】:

我正在编写一个 python 脚本,用于自动备份 PostgreSQL 数据目录以启用“Continuous Archiving and Point-In-Time Recovery”。

我想使用 Pythons tarfile 库来创建存档。

复杂之处在于数据文件可能会在备份过程中发生变化。引用PostgreSQL manual

一些文件系统备份工具发出 警告或错误,如果他们的文件 正在尝试复制更改,而 复制收益。取基地时 活动数据库的备份,这 情况是正常的,不是错误。 但是,您需要确保您 可以区分对此的投诉 从真正的错误中排序

...一些 GNU tar 版本返回错误 与致命代码无法区分的代码 如果文件被截断而出错 tar 正在复制它。幸运的是,GNU tar 版本 1.16 及更高版本退出 1 如果文件在 备份,2 用于其他错误。

从数据目录复制文件时,我应该期待 Python 中的哪些异常?以及如何确定错误是否严重?

【问题讨论】:

    标签: python postgresql backup tar


    【解决方案1】:

    如果您正在使用tarfile 模块,那么它的实现基本上取决于您。 GNU tar 在处理文件之前和之后检查文件大小和 ctime,如果它们不同,则会抱怨。这不是一个实际的错误,它只是 tar 感觉应该提到的东西。但是在您的用例中,您并不关心这一点,因此您可以忘记它。 tarfile 模块本身当然不会抱怨这一点。

    至于其他例外情况,可能性是无穷无尽的。在这种情况下,Python 抛出的几乎所有东西都可能是致命的。

    【讨论】:

      【解决方案2】:

      在 PostgreSQL 文档中解释了连续存档。它已实现,无需创建额外的脚本 - 但您将拥有许多文件。

      24.3.2.进行基础备份 - 按照说明创建 tar,数据文件不会更改。

      24.3.1。设置 WAL 归档 - 在这里你必须归档新的 WAL 文件,它们也不会改变,但它们是单独的文件。

      我认为将 WAL 文件添加到基本备份是不安全的。如果在您将文件添加到基本备份时服务器崩溃,它可能会损坏。

      【讨论】:

      • 感谢您的帮助,但我理解所有这些部分。我只想使用 python 脚本进行初始基本备份(因为我想立即将其流式传输到远程服务器)。我只是担心“确保您可以将此类投诉与真正的错误区分开来”部分。我确实稍后归档的 WAL 文件。
      • 你能做的最好的就是测试 Python 的 tarfile 是否可以正常工作
      • 我想知道为什么某些东西会起作用,而不仅仅是我的程序基于一些综合实验。特别是因为我认为重现 PostgreSQL 的所有可能行为并不容易
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2020-09-25
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多