backup_label

一个用于提供备份元信息的文件的创建

backup_label 是在源节点的数据目录顶层创建的一个文件,当使用 pg_start_backup() 启动独占备份时,或者在目标节点的数据目录中,当通过流复制协议进行备份时创建。它包含备份的元信息,特别是备份开始的 LSN,这样被备份的服务器在首次启动时就知道何时开始应用 WAL

当执行 pg_stop_backup() 时,backup_label 文件将在源节点被删除,并在目标节点成功启动后重命名为 backup_label.old

backup_label 和独占备份的注意事项

如果一个独占备份正在进行,并且发生崩溃情况,backup_label 文件的存在意味着 PostgreSQL 无法确定它是否正在作为备份启动,并且将尝试从文件中记录的 检查点 位置恢复,这可能会引用不再可用的 WAL 文件。

因此,非独占备份(自 PostgreSQL 9.1 起由复制协议支持,自 PostgreSQL 9.6 起由 pg_start_backup() 支持)是首选的备份方法。

backup_label 和非独占备份

如果备份是通过流复制协议的 BASE_BACKUP 命令(该命令进行非独占备份)进行的,则 backup_label 文件将包含在流式数据中。

如果在非独占备份模式下调用 pg_start_backup(),则不会写入 backup_label 文件;相反,pg_start_backup() 会返回等效的内容,并且调用者负责将该文件写入目标节点的数据目录。

源代码

backup label 的文件名定义在 src/include/access/xlog.h

access/xlog.h:#define BACKUP_LABEL_FILE         "backup_label"
access/xlog.h:#define BACKUP_LABEL_OLD          "backup_label.old"

示例

使用 SELECT pg_start_backup('test backup') 启动独占备份后,将在 $PGDATA/backup_label 中创建以下文件:

START WAL LOCATION: 0/2000028 (file 000000010000000000000002)
CHECKPOINT LOCATION: 0/2000098
BACKUP METHOD: pg_start_backup
BACKUP FROM: primary
START TIME: 2020-11-05 11:11:02 UTC
LABEL: test backup
START TIMELINE: 1

分类

备份, 复制

另请参阅

pg_start_backup(), 备份历史文件

反馈

请在此处提交关于“backup_label”的任何评论、建议或更正。这里