PostgreSQL如何在启用WAL的备份中处理检查点?

前端之家收集整理的这篇文章主要介绍了PostgreSQL如何在启用WAL的备份中处理检查点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Postgresql v9.0上我有一个WAL归档系统工作.所以WAL文件经常存档(当创建3 WAL或者WAL超过15分钟时).

现在我添加PG_DATA目录的二进制包(不包括pg_xlog子目录).为此,我执行pg_start_backup(),二进制副本和pg_stop_backup().

我想我很清楚pg_start_backup和pg_stop_backup正在做什么,第一个做一个检查点,最后一个确保最后一个WAL文件被存档.

the official documentation我们可以看到,对于二进制数据副本,我们应该:

Perform the backup,using any convenient file-system-backup tool such as tar or cpio (not pg_dump or pg_dumpall). It is neither necessary nor desirable to stop normal operation of the database while you do this.

所以我很困惑.这意味着我们在制作副本时可以执行检查点.我看到很多文档说明复制命令应该允许在执行复制时更改数据,我很好,只需要找到合适的工具.但我的问题是postgresql如何使用pg_data内容处理恢复,其中包含一些不一致的文件(一些来自检查点之前,一些来自之后)?

通过重放事务日志,Postgresql能够将所有这些文件置于正确的状态吗?我看到在备份执行时创建表和删除操作很危险,是不是有真空命令等危险操作? pg_backup暂停真空操作吗?我应该在二进制复制过程开始时制作全局/ pg_control文件的副本吗?我是否应该使用启用快照的文件系统(如使用xfs-freeze)来获得更快的恢复过程?

我看到备份脚本崩溃不会自动启动pg_stop_backup,因此我的备份状态有可能存在很长时间(直到我的nagios某人某处某人修复pg_stop_backup()).因此,如果Postgresql在这两个命令之间有任何不同之处,我想知道它,了解它可能产生的影响.

请赐教.

您询问:

how postgresql will handle the recovery with a pg_data content containing some files which are inconsistent.

pg_start_backup()确保数据文件至少与检查点一样新.恢复时,将应用日志.

如果数据是旧的,日志将更新它..

如果数据是新的,则日志将具有相同的内容.再写一次没有伤害.

数据永远不会比日志更新,因为日志是提前写入的(WAL).

您询问:

xfs-freeze

xfs-freeze与pg_start_backup()类似,它不拍快照.您需要一个卷管理器来执行此操作.

您询问:

… why do create tablespace & create database statements are unsupported if the WAL can replay everything?

它受到支持,只是一些小问题.见http://www.postgresql.org/docs/8.1/static/backup-online.html

23.3.5. Caveats

CREATE TABLESPACE commands are WAL-logged with the literal absolute path,and will therefore be replayed as tablespace creations with the same absolute path. This might be undesirable if the log is being replayed on a different machine. It can be dangerous even if the log is being replayed on the same machine,but into a new data directory: the replay will still overwrite the contents of the original tablespace. To avoid potential gotchas of this sort,the best practice is to take a new base backup after creating or dropping tablespaces.

猜你在找的Postgre SQL相关文章