在过去的几天里,我们的一个资料库似乎已经腐败了。我不确定它发生了什么,只是它突然抱怨回购中没有文件,即使它们是很久以前添加的文件。
我运行了验证,输出如下:
svnadmin: E160004: Corrupt representation '412 454 434 1049 (null) 69d49eee40d6ed46db3a7925d1f6b8bacb11e199 (null)'
svnadmin: E160004: Malformed representation header at F:/ShareCopies$/ICCServer01/svn/Repositories/VisaCardCless/db/revs/0/412:559
如果我正确地读到这个,那么实际的腐败就在于r412和r559之间。目前的修订版是672。
现在幸运的是,我在腐败之前完全转储了回购,但它只进入r647所以我们在那里失去了一些提交。我已经通过将它装入一个新的仓库并验证它来验证这个转储 - 恢复原状。
所以,理论上,我有一个干净的转储到r647,我应该能够从r648转储到损坏的repo上的r672,然后重新加载该增量备份。但是,这是绊脚石。当我尝试向前转储648时,我得到另一个损坏的表示错误,这次说它是在567:1778。我不知道这意味着什么,因为回购没有超过672所以也许我正在读错误信息。这确实会创建一个转储文件,但如果我尝试加载它,我会收到一条关于文件意外结束的消息。
无论如何,我对如何完整地恢复这个回购有点感到困惑。是否有任何脏方法使用良好转储中的文件修复损坏的数据库?