sys_rman归档元文件丢失故障报告

1 故障概述

|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 项目 | 内容 |
| 故障系统 | 人大金仓 KingbaseES 数据库,sys_rman 备份至 S3 |
| 故障时间 | 2026‑10‑08 |
| 故障对象 | 备份仓库路径:/data/KBbackup/db_xxx/kbbr_repo(后端存储为 S3 对象存储) |
| 故障现象 | 1. 归档进程显示failed 2. 备份仓库归档元数据文件archive.info、archive.info.copy双副本文件丢失;执行sys_rman info/check命令抛出file_missing_err文件缺失报错,备份 stanza 状态显示error(other)。 |
| 业务影响 | 1. 数据库业务读写完全正常,业务无中断; 2. WAL 归档推送(archive‑push)功能异常,无法将新产生 WAL 上传至 S3 备份仓库; 3. 无法执行时间点 PITR 恢复; 全量备份集本身完整,可执行全量备份恢复; 4. sys_rman 完整性校验、归档统计查询功能不可用。 |
| 根因初步分析 | S3 对象存储小元文件丢失,怀疑为 S3 生命周期策略清理小对象、归档推送进程异常中断元文件落盘失败导致。 |

2 故障复现

虚拟机环境下手动删除归档元文件:rm -f archive.info、archive.info.copy

手动触发归档:select sys_switch_wal;

结论:归档失败,查看物理备份报错

3 故障报错信息

  1. 归档进程显示 failed
  1. 查看备份信息显示 file_missing_err

    sys_rman --config=/data/KBbackup/db_xxx/kbbr_repo/sys_rman.conf --stanza=kingbase info

报错日志:

复制代码
stanza: kingbase
status: error (other)
[file_missing_err] unable to load info file '/data/KBbackup/db_xxx/kbbr_repo/archive/kingbase/archive.info' or '/data/KBbackup/db_xxx/kbbr_repo/archive/kingbase/archive.info.copy':
file_missing_err: unable to open missing file '/data/KBbackup/db_xxx/kbbr_repo/archive/kingbase/archive.info' for read
file_missing_err: unable to open missing file '/data/KBbackup/db_xxx/kbbr_repo/archive/kingbase/archive.info.copy' for read
HINT: archive.info cannot be opened but is required to push/get WAL segments.
HINT: is archive_command configured correctly in kingbase.conf?
HINT: has a stanza‑create been performed?
HINT: use --no‑archive‑check to disable archive checks during backup if you have an alternate archiving scheme.
cipher: none

关键说明:archive.info/archive.info.copy是 WAL 归档统计元数据文件,WAL 归档实体数据文件并未丢失,仅归档元索引文件丢失,存量备份集数据完整。

4 故障处理过程

操作窗口:业务低峰时段执行,初始化过程中会进行一次全备,避免业务高峰操作。

步骤 1:故障确认

执行sys_rman info、sys_rman check,确认归档两个元文件全部丢失,全备定时任务报错;禁止手动touch生成空元文件,会直接导致备份仓库报废。

步骤 2:重新备份初始化

执行 sys_backup.sh init 命令进行重新初始化,重新生成archive.info、archive.info.copy归档双元索引文件

复制代码
--删除repo目录
rm -rf /data/KBbackup/db_xxx/kbbr_repo  
由S3存储方操作,由于批量报错,无法逐个子目录细粒度删除,决定先创建新存储桶(取消生命周期配置)

--更改sys_backup.conf中_repo_s3_bucket 为新的存储桶名称
cd 安装目录/share
cp sys_backup.conf sys_backup.conf_bak
vi sys_backup.conf 
_repo_s3_bucket=new-bucket-name

--初始化备份
sys_backup.sh init

--清空或删除原存储桶
由S3存储方操作

步骤 3:修复后功能校验

复制代码
#校验仓库状态,status状态应为ok
sys_rman --config=/data/KBbackup/db_xxx/kbbr_repo/sys_rman.conf --stanza=kingbase info

#执行备份仓库完整性检查
sys_rman --config=/data/KBbackup/db_xxx/kbbr_repo/sys_rman.conf --stanza=kingbase check

校验结果:stanza 状态返回ok,无文件缺失报错,元文件重建完成。

步骤 4:归档和备份验证

  1. 确认数据库archive_command配置正常,验证 WAL 归档推送恢复正常;
  2. 执行一次全量备份,验证备份流程完整可用;
  3. 验证备份集查看、归档统计查询功能恢复;时间点 PITR 恢复功能恢复。

5 原因排查

  1. 高可疑点:S3 生命周期策略 :archive.info、archive.infi.copy属于 repo 仓库的小体积元文件,若 S3 桶配置生命周期自动清理小对象策略,会造成元索引文件被误删除,但 WAL 大文件保留。和S3方沟通确认后得知:备份软件不具备自动清理功能会配置生命周期,超过5天没有发生变更的文件会被删除;而archive.info、archive.infi.copy 元数据文件不会自动更新,只会上传一次,所以会被删除。金仓的备份工具具备自动清理功能,无需配置生命周期。
  2. 次要可能:archive‑push 进程异常中断:WAL 归档推送进程异常崩溃、网络瞬时中断,元文件双副本未能完整写入 S3 对象存储。
  3. 排除:数据库业务数据损坏;存量全量、差异备份集损坏。
  4. 排除:人为手动删除仓库文件(待进一步核查 S3 操作日志)。

6 风险说明

2026-9-29 归档和备份已经报错,2026-10-08 排查其他问题发现归档failed,继而发现备份报错,在这段故障期间,全量备份定时任务失败。

7 整改及预防措施

  1. S3 存储侧整改(最高优先级)
    • 对 sys_rman 备份使用 S3 桶开启对象版本控制,防止元文件被误删后无法找回;
    • 调整 S3 生命周期策略,排除 kbbr_repo 元数据目录,禁止清理 KBBR 产生的小 info 元文件。sys_rman工具具备自动清理文件的功能,建议取消S3 生命周期策略;
    • 开启 S3 访问操作日志审计,记录对象删除、覆盖操作,便于后续问题溯源。
  1. 备份运维规范整改

定期监控 sys_rman 的info/check输出结果,将 stanza 状态纳入监控告警,一旦状态非 ok 及时告警。

  1. 运维操作红线

严禁手动创建、编辑archive.info元文件,避免备份仓库不可逆损坏。

8 处理结论

本次故障为 sys_rman 备份仓库归档元索引文件(archive.info、archive.info.copy)丢失,业务无中断,归档失败、全备报错,S3 存储方提供新存储桶,新存储桶取消生命周期配置,sys_backup.conf 中 使用新的存储桶,通过 sys_backup.sh init 进行初始化备份,备份归档整套功能已恢复正常;完成 S3 桶整改与监控补充,规避同类故障复现。

相关推荐
小鱼,12 天前
人大金仓V9系统表名字冲突,设置search_path不起作用
数据库·kingbase
承渊政道1 个月前
从GB到TB:KFS如何实现高吞吐、有序的异构增量同步
数据库·kingbase·延迟优化·kfs·数据量级优化
Theo·Chan4 个月前
更换 Kingbase V9 License 踩坑记
sql·信创·kingbase
福娃筱欢4 个月前
KingbaseES集群节点间sys_securecmd服务通信失败故障排查
kingbase·securecmd
Theo·Chan4 个月前
机房断电搞崩服务器 | 人大金仓 V8 全量备份跨实例完整恢复实录
sql·信创·kingbase·金仓
倔强的石头1064 个月前
kingbase备份与恢复实战(七)—— 恢复演练与验收:从“能恢复”到“可交付预案”
kingbase
jcbut4 个月前
在Linux上安装Kingbase 9
linux·kingbase·人大金仓·电科金仓
betazhou4 个月前
电科金仓数据库V9 MySQL兼容版本搭建一主一从体验
数据库·mysql·oracle·主从·高可用·kingbase·v9 mysql兼容版本
betazhou4 个月前
电科金仓数据库V9版本Linux版本安装体验
linux·数据库·python·kingbase·电科金仓