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 故障报错信息
- 归档进程显示 failed

-
查看备份信息显示 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:归档和备份验证
- 确认数据库
archive_command配置正常,验证 WAL 归档推送恢复正常; - 执行一次全量备份,验证备份流程完整可用;
- 验证备份集查看、归档统计查询功能恢复;时间点 PITR 恢复功能恢复。
5 原因排查
- 高可疑点:S3 生命周期策略 :
archive.info、archive.infi.copy属于 repo 仓库的小体积元文件,若 S3 桶配置生命周期自动清理小对象策略,会造成元索引文件被误删除,但 WAL 大文件保留。和S3方沟通确认后得知:备份软件不具备自动清理功能会配置生命周期,超过5天没有发生变更的文件会被删除;而archive.info、archive.infi.copy 元数据文件不会自动更新,只会上传一次,所以会被删除。金仓的备份工具具备自动清理功能,无需配置生命周期。 - 次要可能:archive‑push 进程异常中断:WAL 归档推送进程异常崩溃、网络瞬时中断,元文件双副本未能完整写入 S3 对象存储。
- 排除:数据库业务数据损坏;存量全量、差异备份集损坏。
- 排除:人为手动删除仓库文件(待进一步核查 S3 操作日志)。
6 风险说明
2026-9-29 归档和备份已经报错,2026-10-08 排查其他问题发现归档failed,继而发现备份报错,在这段故障期间,全量备份定时任务失败。
7 整改及预防措施
- S3 存储侧整改(最高优先级)
-
- 对 sys_rman 备份使用 S3 桶开启对象版本控制,防止元文件被误删后无法找回;
- 调整 S3 生命周期策略,排除 kbbr_repo 元数据目录,禁止清理 KBBR 产生的小 info 元文件。sys_rman工具具备自动清理文件的功能,建议取消S3 生命周期策略;
- 开启 S3 访问操作日志审计,记录对象删除、覆盖操作,便于后续问题溯源。
- 备份运维规范整改
定期监控 sys_rman 的info/check输出结果,将 stanza 状态纳入监控告警,一旦状态非 ok 及时告警。
- 运维操作红线
严禁手动创建、编辑archive.info元文件,避免备份仓库不可逆损坏。
8 处理结论
本次故障为 sys_rman 备份仓库归档元索引文件(archive.info、archive.info.copy)丢失,业务无中断,归档失败、全备报错,S3 存储方提供新存储桶,新存储桶取消生命周期配置,sys_backup.conf 中 使用新的存储桶,通过 sys_backup.sh init 进行初始化备份,备份归档整套功能已恢复正常;完成 S3 桶整改与监控补充,规避同类故障复现。