KingbaseES V8R6运维案例之---磁盘溢出导致数据库服务启动失败
案例说明:
因core文件导致磁盘满,数据库服务宕机,通过sys_ctl启动数据库服务无法启动,故障信息”无法找到有效的checkpoint”。
适用版本:
Kingbase V8R6
问题现象:
如下图所示,数据库服务无法启动,通过sys_log查看,出现“could not locate a valid checkpoint record'。
问题分析:
因为磁盘满,导致数据库在执行checkpoint时,更新控制文件时,写入检查点信息失败,当数据库启动时,无法从控制文件读取到最近有效的检查点信息,导致数据库服务启动失败,并且在clog文件存储事务的状态也失败。
问题解决:
通过sys_resetwal重建控制文件。(在关闭数据库状态下,做好data目录的备份,resetwal后将会有部分丢失,做好备份工作)。
sys_resetwal后启动故障信息:
使用dd命令创建一个clog文件
因为一个clog文件最大为256K,所以只需创建一个256K的文件即可。写入全0的文件,代表所有事务均在IN_PROGRESS状态。
状态标识 事务状态
0x00 TRANSACTION_STATUS_IN_PROGRESS
0x01 TRANSACTION_STATUS_COMMITTED
0x02 TRANSACTION_STATUS_ABsys_multixact/offsetsORTED
0x03 TRANSACTION_STATUS_SUB_COMMITTED
在sys_xact和sys_multixact/offsets下用dd创建名为‘0000’的文件,重启数据库服务,问题解决。