暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 董小姐 2天前
15

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 桶整改与监控补充,规避同类故障复现。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论