Назад | Перейти на главную страницу

Найдено несколько файлов для одного и того же идентификатора табличного пространства

После проверки со стороны руководства загрузка жесткого диска сервера mysql достигла 100%. В панике я закрыл большинство служб, включая mysqld, который, как я полагаю, вызвал эту проблему. Впоследствии я удалил файлы, чтобы освободить место. Имея доступное более 1 ГБ, я попытался запустить mysqld, но он просто не запустился. В журнале указаны следующие ошибки:

[ERROR] [MY-012209] [InnoDB] Multiple files found for the same tablespace ID:
[ERROR] [MY-012202] [InnoDB] Tablespace ID: 23 = ['archive/transaction_archive_1.ibd', 'log/transaction_15.ibd']
[ERROR] [MY-012202] [InnoDB] Tablespace ID: 123 =
['archive/order_archive_1.ibd', 'log/cart_15.ibd']
[ERROR] [MY-012202] [InnoDB] Tablespace ID: 406 = ['archive/pay_archive_8.ibd', 'log/cart_20.ibd']
[ERROR] [MY-012202] [InnoDB] Tablespace ID: 419 = ['archive/pay_archive_9.ibd', 'log/cart_64.ibd']
[ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Failed, retry may succeed.
[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
[ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
[ERROR] [MY-010119] [Server] Aborting
[System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.13)  MySQL Community Server - GPL.

«архив» и «журнал» - это две отдельные базы данных. Установка innodb_force_recovery от 1 до 6 не помогла. Есть предложения о том, как это восстановить? Сервер работает под управлением Linux, а версия MySQL - v8.0.13. Спасибо.

Наконец-то мне удалось запустить сервер mysql, но я не уверен, что это был лучший способ.

Во-первых, я решил, что таблицы базы данных журнала более важны, чем таблицы архива. Я переместил четыре затронутых файла - archive / transaction_archive_1.ibd, archive / order_archive_1.ibd, archive / pay_archive_8.ibd, archive / pay_archive_9.ibd) во временное место. Когда я запустил mysqld, было долгое ожидание (я думаю, что он выполнял отмены и другие вещи), и были жалобы на отсутствие файлов ibd - что было ожидаемо. Но сервер все же запустился.

Затем я сделал резервную копию четырех затронутых таблиц базы данных журнала. Затронутые «заархивированные» таблицы присутствовали, но не смогли запросить из них какие-либо данные (ошибка «табличное пространство отсутствует»). Затем я закрыл mysql и поменял местами файлы ibd - переместил файлы ibd «архив» и удалил файлы ibd «журнала». Mysqld снова начал с жалоб на отсутствие файлов ibd. На этот раз я зашел в консоль mysql и удалил четыре затронутые таблицы журнала. Затем я восстановил эти четыре таблицы из резервных копий, которые сделал недавно.

Невозможно быть на 100% уверенным, что данные не были потеряны.