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

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

概述在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正在做什么,第一个做一个检查点 在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.

总结

以上是内存溢出为你收集整理的PostgreSQL如何在启用WAL的备份中处理检查点?全部内容,希望文章能够帮你解决PostgreSQL如何在启用WAL的备份中处理检查点?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存