【问题标题】:Backing up the DB vs. backing up the VM备份数据库与备份 VM
【发布时间】:2011-08-29 16:22:21
【问题描述】:

我们正在为在 VM 管理程序上运行的 Django/Postgres 站点提供服务。我们现在正试图找出我们的备份策略并有两个可能的选择:

  1. 直接使用pg_dump备份数据库
  2. 通过复制 VM 映像直接备份 VM

我认为是后者,我可以简单地备份与网站有关的所有内容。我不确定我是否必须为此关闭虚拟机。

备份数据库的更好和更推荐的方法是什么?不使用虚拟机备份有什么原因吗?

谢谢

【问题讨论】:

  • 为什么我想知道“关闭”标志?我不认为这违反了 SO 准则,或者如果是,我错过了一些东西。

标签: postgresql backup database-backups kvm backup-strategies


【解决方案1】:

这个问题基本上可以归结为,您可以考虑将 PostgreSQL 数据文件的热副本作为备份吗?

答案是:并非如此。 PostgreSQL 非常努力地通过使用 WAL 来确保它的文件始终处于一致的状态,并且它可以在电源故障中幸存下来,但是从这些文件的副本启动它会使 PostgreSQL 进入恢复模式。如果备份发生在错误的时间并且 PostgreSQL 无法从这些文件的状态中恢复,那么您的备份将毫无用处。您不希望您的备份/恢复机制依赖于恢复机制(除非您正在处理“仅崩溃”软件,而 PostgreSQL 不是)。

PostgreSQL 无法从这些文件中恢复的概率不高,但也不为零。另一方面,PostgreSQL 无法加载它所做的 SQL 转储的概率为零。我更喜欢失败概率较低的备份选择。 pg_dump 专为进行备份而设计。

【讨论】:

    【解决方案2】:

    PostgreSQL 建议使用 pg_dump 进行备份,因为文件系统(或 VM)备份需要关闭数据库(并且有其他缺点):

    http://www.postgresql.org/docs/8.1/static/backup-file.html

    编辑:另外,pg_dump 备份将明显小于同一数据库的文件系统转储。

    【讨论】:

    • 请注意,这些说明适用于 8.1,不一定是最新的。现在还有其他方法可以做到这一点(或者至少是更简单的方法) - 您应该查看postgresql.org/docs/9.0/static/backup.html 的 9.0 文档
    【解决方案3】:

    还有一个附加选项。使用 PostgreSQL,您可以进行在线备份,以便对文件系统进行快照并保持一致性。您可以在此处查看详细信息: http://www.postgresql.org/docs/9.0/static/continuous-archiving.html

    当我们在虚拟机中运行 PostgreSQL 时,我们使用这种精确的方法进行备份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2018-12-01
      • 2021-12-08
      • 2020-09-04
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多