我想编写一个脚本来检查存档的 WAL 文件中是否存在间隙,但我找不到任何编号方案的文档。它看起来相当简单,但我想根据一些官方文档编写脚本,这样我就不会错过任何隐藏的复杂性,例如滚动等。
答案1
从文件系统上做到这一点并不容易。文件名实际上由三部分组成(每部分 8 个字符,十六进制值):时间线、逻辑 XLOG、物理段。为了知道“下一个”文件是什么,您确实需要知道底层数据库发生了什么(新 xlog、新时间线等)。
如果您要归档事务日志,更好的解决方案是让归档命令也将要归档的文件的名称附加到某个列表中——Postgres 会将该名称传递给您的归档脚本,这样您就不必担心自己弄清楚,并且如果该列表中的所有文件都存在,则没有间隙。
(这并不能解决确保没有间隙的问题前你实现了这个解决方案,所以你应该按照 Postgres 手册中的 24.3.2 进行基础备份实施此解决方案后...