备份数据库与备份虚拟机

时间:2011-08-29 16:22:21

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

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

  1. 使用pg_dump
  2. 直接备份数据库
  3. 通过复制VM映像直接备份VM
  4. 我认为我与后者有关,我可以简单地备份与网站有关的所有内容。我不确定是否必须为此关闭VM。

    备份数据库的更好,更推荐的方法是什么?是否有任何理由不使用VM备份?

    由于

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

问题基本归结为,你能否认为PostgreSQL数据文件的热门副本是备份?

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

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

答案 2 :(得分:0)

还有一个选项。使用PostgreSQL,您可以进行在线备份,使您可以对文件系统进行快照并保持一致性。你可以在这里看到细节: http://www.postgresql.org/docs/9.0/static/continuous-archiving.html

当我们在VM中运行PostgreSQL时,我们使用这种确切的方法进行备份。