2026 年 8 月 27 日凌晨两点十七分,我盯着屏幕上的一个数字:4217。
那是索引表里消失的记录条数。前一天晚上十一点我备份时还是 0。中间只隔了三个多小时,中间那台老机器重启过一次,没有报警,没有人通知我,就这么安静地掉了四分之一的行。我倒了杯凉白开,坐到四点半,把能确认的坏记录一条条标出来。天亮时手边那张纸上写着 73 行字,最上面一行是我自己写的:「先别修,先搞清楚它怎么掉的」。
这次的事,得从阿川说起。
阿川是我认识七年的朋友,在城西一家做数据代管的小机房上班,湖南人,说话慢,做事实。他 8 月 26 号下午五点多给我打电话,说他手里有一个客户的老资料库要整库迁移,问我这边能不能抽个人,去帮他们看看老索引的兼容问题。我当时在忙别的事,随口应了一句「周一周二看」。挂电话前补了一句:「你那边那套系统别硬扛,先把数据落一遍冷备份。」他嗯了一声,就挂了。
第二天凌晨,出事的不是我这边,是他那边。他先落备份,再跑迁移。备份落了一半,上层的检查脚本还在跑,两边挤在一块。四分之一的行被覆盖,系统一声没吭。阿川后来在电话里说:「我以为它自己会拦住。」他说这句话时语气很平,我听得出他熬了一夜。
我先做的不是修。
我把坏记录里能还原出来的部分单独列了一张表,一共 4217 条,能对上原图路径的有 3905 条,剩 312 条只剩文件名,路径全丢了。那 312 条里,我认得三条,是我 2021 年自己传进去的老图。你看,恢复这件事,落到人身上永远不是数字游戏,总有一条是你自己的。我先把那 312 条挑出来,一条条手动对。阿川在旁边帮我念文件名,念到第十七条时他停了一下,说:「这名字我好像在老目录里见过。」
我们找了四十分钟,在一台停机的旧机器上,翻到一个 2024 年 3 月的老目录。目录里躺着 208 条对应的路径。阿川当时在电话里说了一句:「原来它没死,是躲起来了。」我没笑,因为我知道剩下 104 条还是找不回来。
然后才是索引。这块我不想写得太技术,但有两件事必须说清楚。第一,坏掉的那部分不是数据本身,是数据与路径之间的映射。第二,修复映射这件事,慢比快重要。我见过太多人上来就全量重建,结果把本来还能救的映射盖掉了。我的做法是:先冻结写入,把原表整份拷出来,在拷贝上做修复,确认 3905 条全部能对上再回写。中间阿川问了我三次「能不能直接覆盖」,我三次都说不。第三次他叹气了,我没理他。这里我要把话说重一点:17图资料库恢复这类事,最大的伤害往往不是数据丢了,而是有人急着「一键修好」。一键修好是广告词,不是工作方法。
我当时和他说:你越急,它掉得越多。这句话他现在还记着。
冻结写入后,我在旧日志里找到了这次事故的起点:2026 年 8 月 27 日 01:44:07,一条迁移任务开始执行;01:44:31,同一个库的校验任务被调度器触发;01:51:12,第一条映射被覆盖;02:17 我打开监控,看到 4217 这个数字。中间所有环节都没有抛错,没有告警,像什么都没发生。我看日志时火气就上来了。写调度规则的人,把一个互斥锁漏了,代价是别人一夜不睡。
天亮后我做了三件事:把 4217 条拆成三份清单,一份 3905 条已定位,一份 208 条找回路径,一份 104 条待人工;把回写流程写成脚本,跑一遍要 47 分钟,故意让它慢;给阿川的机房发了一份三条互斥规则的说明,只三行,没写解释。他后来回我一个「收到」。我们之间不需要更多。
关于 17图资料库恢复,我这次最想留下的结论是:恢复工作的第一原则不是快,是可回溯。你要能回答「这一条是怎么回来的、那一条为什么没回来」。答不出来的恢复,迟早会再崩一次。这话有点硬,但我不打算改软。很多人以为恢复是技术活,我说的更直白:它是一种对自己诚实的活。
说到底,这件事不是一篇文章能说完的。我把相关的几篇放在了下面,其中 恢复原来的49图库资料恢复正常使用 讲的就是那 312 条里剩下的部分,49图库资料库免费版用户满意度调查教训 是我之前做调查时写的,跟这次的事能对上。你如果需要客户端相关的说明,看 免费下载49图库苹果版;想核对正版来源的,走 正版49图库资料网;另有一篇 一九图库 是旧站的事,留作对照。这些链接不是凑数的,是我处理这件事时反复翻的东西。