Все мои резервные копии 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 = Повторяющаяся запись '375086058' для ключа 'PRIMARY'
Это было довольно внезапно: похоже, это произошло между 3.05 и 3.11 утра, и никаких других намеков на то, что произошло, не было.
Беглый взгляд на базу данных показывает, что 375086058 - это поле с самым высоким номером FileId (которое является первичным индексом для таблицы файлов), но я не знаю, что делать, чтобы исправить это, не повредив мою базу данных Bacula.
Любые идеи?
Я посмотрел на статус таблицы и убедился, что поле Fileid было автоинкрементом и что оно застряло на 375086058, а это число, которое теперь считается дублированным. Я получил эту информацию с помощью следующих двух команд:
mysql> describe File;
mysql> show table status where name='File';
Чтобы решить эту проблему, я обновил auto_increment до * next (number:
mysql> ALTER TABLE File AUTO_INCREMENT=375086059;
Это заняло около 10 минут из-за размера стола. Кажется, проблема устранилась.