KingbaseES V8R6数据库运维案例之---backup_label文件导致实例启动故障
案例说明:
在KingbaseES V8R6的单实例环境中,执行在线备份期间,因为磁盘满后,数据库实例启动失败,从sys_log日志看,在数据库目录下存在backup_label文件,导致启动失败。
适用版本:
KingbaseES V8R6
一、问题现象
如下图所示,数据库实例在启动过程中,因为data目录下存在backup_label文件,导致数据库实例启动失败。
二、问题分析
数据库在线备份开始时,会调用pg_start_backup函数执行一次checkpoint,并生成backup_label文件。当使用在线备份集进行恢复时,backupStartPoint就是上述checkpoint记录对应的LSN,当达到了该LSN,该值置为0,在置为0之前,数据库不能启动。该值被记录在backup_label文件中如下,直到在线备份结束,pg_stop_backup将该文件删除。这样就保证了在备份过程中,数据库崩溃了,可以默认从备份开始时的日志检查点开始恢复。
备份标签backup_label文件包含以下7个项目:
检查点位置 —— 该命令所创建检查点的LSN位置。
WAL开始位置——这不是给PITR用的,而是为流复制准备的。它被命名为START WAL LOCATION,因为复制模式下的备用服务器在初始启动时只读取一次该值。
备份方法——这是用于进行此基本备份的方法,如pg_start_backup或pg_basebackup。
备份来源 —— 说明此备份是从主库还是备库拉取。
开始时间 —— 这是执行pg_start_backup时的时间戳。
备份标签 —— 这是pg_start_backup中指定的标签。
开始时间线 —— 这是备份开始的时间线,为了进行正常的检查。
备份标签:
备份标签的实际例子如下所示:
[kingbase@node102 data]$ cat backup_label
START WAL LOCATION: 1/B3000C60 (file 0000001200000001000000B3)
CHECKPOINT LOCATION: 1/B3000C90
BACKUP METHOD: sys_rewind
BACKUP FROM: standby
START TIME: 2023-06-29 09:36:40 CST
如果在备份过程中,实例意外down后,导致此文件未被清理。
三、问题解决
如下图所示,按照sys_log日志提示,改名或删除backup_label文件:
删除文件后,重启数据库实例,问题解决。
四、总结
在数据库正常运行期间,data下应该不存在backup_label文件,如果实例启动,是因为此文件启动失败,可以尝试改名或删除此文件,重启实例。
KINGBASE研究院