Bacula 备份因重复主键错误而失败

Bacula 备份因重复主键错误而失败

周末,我的所有 Bacula 备份都开始失败,并出现以下 MySQL 错误:

致命错误:sql_create.c:XXX 填充文件表查询失败: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=键“PRIMARY”的重复条目“375086058”

这件事发生得相当突然:似乎是在今天早上 3 点 05 分到 3 点 11 分之间,没有其他迹象表明发生了什么。

快速查看数据库后发现,375086058 是编号最高的 FileId 字段(即文件表的主索引),但我不知道如何在不破坏我的 Bacula 数据库的情况下修复它。

有任何想法吗?

答案1

我查看了表的状态,确认 Fileid 字段是自动增量,并且卡在 375086058,现在显示这个数字是重复的。我使用以下两个命令获取了此信息:

mysql> describe File;
mysql> show table status where name='File';

为了解决这个问题,我将 auto_increment 更新为 *next( 数字:

mysql> ALTER TABLE File AUTO_INCREMENT=375086059;

由于表的大小,这花了大约 10 分钟。似乎已经解决了这个问题。

相关内容