MySQL InnoDB таблицы отсутствуют и не учитываются в структуре базы данных - PullRequest
5 голосов
/ 03 июня 2011

У меня серьезная проблема в моих таблицах MySQL, когда-то были таблицы InnoDB, которые были В ИСПОЛЬЗОВАНИИ, а теперь как-то скрыты

посмотрите на это [рис.] * Ссылка удалена - количество таблиц в заголовке равно 79, а фактически подсчитанное число равно 74.

это те таблицы, которые ИСПОЛЬЗУЮТСЯ

У меня нет последней резервной копии моей базы данных, так что для меня это игра в жизнь и смерть

Я проверил свои VPS, я нашел их в /etc/lib/mysql/db_name/.

РЕДАКТИРОВАТЬ:

Я обыскал интернет и обнаружил, что с каждой таблицей должно быть связано 3 файла.

Например, таблица table_users имеет:

 -- table_users.frm
 -- table_users.MYD
 -- table_users.MYI

и для этих скрытых таблиц существуют только файлы .frm, а два других файла таблицы отсутствуют.

Я должен изменить свой вопрос на: Как восстановить таблицу innodb из файла .frm?

Ответы [ 4 ]

6 голосов
/ 03 июня 2011

InnoDB не имеет этих трех файлов

Данные InnoDB хранятся в «ibdata1» для всех баз данных и таблиц.определение таблицы хранится в "tablename.frm"

Я бы сказал, что ваш файл InnoDB поврежден, вы можете взглянуть на эти инструменты: https://launchpad.net/percona-innodb-recovery-tool

1 голос
/ 14 августа 2013

! [Изображение innodb] [1] СИСТЕМА СТОЛОВ INNODB

Системное табличное пространство INNODB содержится в каталоге данных mysql ---

INNODB - системное табличное пространство, разделенное на две части

1> .frm он может описывать формат таблицы или вы можете сказать, что это таблица * определение *

2> .ibd он содержит весь связанный с системой файл, а также содержит данные и индекс и (основное табличное пространство InnoDB содержит - ibdata1 - и журналы повторов - ib_logfile *.) ibdata1 содержит вашу базу данных InnoDB, а ib_logfile0 и ib_logfile1 - файлы журналов для InnoDB.

Если вы удалите файл ibdata1, все таблицы InnoDB будут потеряны.

По умолчанию InnDB использует общее «табличное пространство», которое представляет собой один или несколько файлов из одной логической области хранения. Все таблицы InnoDB хранятся вместе в табличном пространстве (из всех баз данных). По умолчанию InnoDB создает два файла журнала по 5 МБ в каталоге данных: iblogfile0 и iblogfile1. Информация регистрируется циклически, при этом старая информация в начале журнала перезаписывается при заполнении журнала. Следовательно, больший журнал позволяет InnoDB работать дольше, не заставляя изменения, записанные в журналах, применяться к табличное пространство на диске.

1 голос
/ 12 июля 2012

на самом деле у меня тоже была та же проблема с отсутствующими двумя файлами.позже я обнаружил, что если тип таблицы - innodb, то папка базы данных будет иметь только один связанный файл.

, но вы можете изменить тип таблицы на myisam, чтобы получить все три файла для таблицы.

теперь, согласно резервной копии, вы можете экспортировать базу данных в любое время и в любом месте:)

PHP - БОЛЬШОЙ:)

1 голос
/ 03 июня 2011

ОБНОВЛЕНО

Прежде всего, о файлах:

  • .frm - структура таблицы;
  • .myd - данные таблицы;
  • .myi - индексы.

Чтобы восстановить таблицы, вы можете попробовать (сначала сделайте резервную копию):

1) выполнить check table tablename - для всех таблиц БД;
2) запустить repair table tablename - для необходимых таблиц.


ОБНОВЛЕНО РАЗ СНОВА

Другая идея ... Попробуйте это:

  1. Создать новую базу данных для восстановления и создать таблицы с тем же именем, что и файлы .frm (с одним полем - только для создания новых файлов .frm);
  2. Остановите службу mysql и замените созданные файлы .frm своими;
  3. Запустите службу MySQL и проверьте.

Я ожидаю правильных таблиц (без данных, конечно). И извините, пока у меня нет компьютера для проверки, прежде чем предложить ...

...