我所有的 Bacula 备份都在周末开始失败,并出现以下 MySQL 错误:
致命错误:sql_create.c:XXX Fill File table Query failed: INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5)SELECT batch.FileIndex, batch.JobId, Path.PathId, Filename.FilenameId,batch.LStat , batch.MD5 FROM batch JOIN Path ON (batch.Path = Path.Path) JOIN Filename ON (batch.Name = Filename.Name): ERR=Duplicate entry '375086058' for key 'PRIMARY'
这是相当突然的:它似乎发生在今天早上 3.05am 到 3.11am 之间,没有其他迹象表明会发生什么。
快速查看数据库同意 375086058 是编号最高的 FileId 字段(它是文件表的主索引),但我不知道如何在不破坏我的 Bacula 数据库的情况下修复它。
有任何想法吗?
我查看了表的状态,并确认 Fileid 字段是一个自动增量,并且它被卡在 375086058,它现在说是重复的数字。我通过以下两个命令获得了此信息:
为了解决这个问题,我将 auto_increment 更新为 *next( 数字:
由于桌子的大小,这大约需要 10 分钟。它似乎已经解决了这个问题。