备份数据库与备份虚拟机
我们正在运行在虚拟机管理程序上运行的Django/Postgres站点。现在我们正在试图找出我们的备份策略,有两个可能的选择:直接使用pg_dump
备份数据库与备份虚拟机
- 备份DB正如我想的那样,我跟随后者,我可以简单地备份与网站相关的所有内容。我不确定是否必须关闭虚拟机。
什么是备份数据库的更好和更推荐的方法?是否有任何理由不使用虚拟机备份?
感谢
PostgreSQL的建议使用pg_dump的备份,作为文件系统(或VM)备份要求关闭数据库(并有其他缺点):
http://www.postgresql.org/docs/8.1/static/backup-file.html
编辑:此外,pg_dump备份将比同一数据库的文件系统转储小得多。
请注意,这些说明适用于8.1,不一定是最新的。现在还有其他方法可以做到这一点(或者至少是更简单的方法) - 您应该查看http://www.postgresql.org/docs/9.0/static/backup.html上的9.0文档 –
这个问题基本上归结为,你可以考虑PostgreSQL的数据文件的热副本备份吗?
答案是:不是。 PostgreSQL通过使用WAL来确保其文件始终处于一致状态,并且可以在电源故障后继续运行,但是从这些文件的副本中启动PostgreSQL将使PostgreSQL进入恢复模式。如果备份发生在错误的时间,并且PostgreSQL无法从这些文件的状态中恢复,则备份是无用的。你不希望你的备份/恢复机制依赖于恢复机制(除非你正在处理PostgreSQL不支持的“crash only”软件)。
PostgreSQL无法从这些文件中恢复的概率不高,但它也不为零。另一方面,PostgreSQL无法加载SQL转储的概率为零。我更喜欢故障概率较低的备份选择。 pg_dump
专为备份而设计。
还有一个选项。通过PostgreSQL,您可以创建联机备份,使您可以快照文件系统并保持一致性。您可以在此处看到详细信息: http://www.postgresql.org/docs/9.0/static/continuous-archiving.html
我们在VM中运行PostgreSQL时使用此确切方法进行备份。
为什么我想知道“关闭”标志?我认为这不符合SO准则,或者如果是这样,我错过了一些东西。 –