Цілком можливо, що стіл зіпсований. Я не маю на увазі, що дані та / або покажчики пошкоджені. Можливо, щось дуже просте, що порушено.
Нещодавно у мене виникли проблеми із сценарієм резервного копіювання на Slave Server, коли я паралельно виконував декілька баз даних. Запуск mysqldump на одній з баз даних призвів до дуже невеликого mysqldump. У БД було 80+ таблиць. Однак mysqldump зупинився на п’ятій таблиці в БД. Коли я побіг SHOW CREATE TABLE tblname\G
за столом на Рабі, я отримав помилку "Таблиця не знайдена". Коли я біг SHOW CREATE TABLE tblname\G
на Майстер, опис таблиці відображався як очікувалося.
Що сталося, було трохи шалено: Клієнт попросив відновити таблицю, а інженер відновив .ibd файл таблиці InnoDB з резервної копії диска. Ідентифікатор простору таблиць .ibd-файлу (якого було 25) не збігався з ідентифікатором простору таблиць, зареєстрованим у ibdata1 (що було 28).
Я вирішив проблему, ввімкнувши підлеглого, замисливши майстра і налаштувавши реплікацію з нуля. На щастя, обсяг даних та індексу склав 7 Гб. Таким чином, процес реставрації не був великим завданням.
МОРАЛ ІСТОРІЇ
Основна проблема полягає в тому, що mysqldump не повідомляє про помилку на InnoDB, коли ідентифікатор просторової таблиці невірний. Коли mysqldump закінчується і не скидає кожну таблицю в алфавітному порядку, це вказує, що вона припиняється помилкою, і це робиться без друку повідомлення про помилку.
Перевірте, щоб переконатися
- ви можете відобразити структуру таблиці за допомогою
SHOW CREATE TABLE
- Ви можете запитати все про таблицю з INFORMATION_SCHEMA.TABLES