PostgreSQL灾难恢复选项

我的客户有相当大的(总数据文件夹大小为200G)PostgreSQL数据库,我们正在制定一个灾难恢复计划。 到目前为止,我们已经确定了三种不同types的灾难:硬件中断,负载过重以及由于错误执行的错误迁移(如DELETE或ALTER TABLE DROP COLUMN)而造成的无意数据丢失。

前两种似乎很容易缓解,但是我们不能为第三种types制定好的缓解计划。 我build议使用ZFS和频繁(每小时)快照,但是“ZFS”意味着“OpenIndiana”这些天,我们的Ops工程师没有太多的专业知识,所以使用OpenIndiana会带来另一个风险。 同事试图说服我从PostgreSQL恢复PITR备份可以像从ZFS快照恢复一样快,但是我非常怀疑,重播50G的归档WAL可以被认为是“快速”的。

我们还缺less什么其他选项? ZFS是唯一可行的select吗? 我们可以在Linux环境中获得快速的Pg DB恢复时间吗?

为什么FreeBSD不是运行ZFS和PostgreSQL的可行选项? FreeBSD ZFS开发人员与Illumos团队非常接近,最近Pawel Jakub Dawidek(首先将ZFS移植到FreeBSD的人)增加了SSD TRIM对ZFS的支持 。 这很可能很快也会添加到Illumos ZFS代码中。

FreeBSD和ZFS的另一个优势是GEOM框架。 在Solaris上,将整个磁盘添加到ZFS池时,ZFS会自动启用写入caching。 当ZFS只pipe理磁盘的离散片时,不会执行此操作,因为它不知道其他片是否由非写入caching安全文件系统(如UFS)pipe理。 由于它的GEOM框架,FreeBSD实现可以处理分区的磁盘刷新,因此不会受到这个限制。

我build议你看一下Barman,PostgreSQL的备份和恢复pipe理器,它是我们编写的,可以在GNU GPL 3条款下作为开源使用。 为了给你一个想法,我们在数据库大于你的数据库(7TB)上使用它。 1.0版已于7月份发布。 已经有一个RPM版本了,Debian软件包正在开发中(Barman将会包含在Ubuntu 12.10中)。 欲了解更多信息: http://www.pgbarman.org

重播已归档的WAL是最好的select,最有可能是最快的。

这是最好的,因为你得到整个时间表。 根本没有数据丢失。 使用所有types的快照,您将丢失数据。 每小时快照意味着更糟糕的情况下,您将丢失1小时的数据库更改(灾难发生在下一个快照之前)。

此外,如果你做物理(不逻辑 – 也需要数据库快照,最好还原删除表等)恢复它在块级完成,并非常快。