Копирование данных в innodb из myisam

В настоящее время у меня есть база данных, основанная на механизме хранения MYISAM, в которой есть несколько тысяч записей. Я хочу преобразовать свою базу данных в механизм хранения InnoDb.

Это не будет простая команда механизма хранения ALTER, так как мне нужно добавить внешние ключи в текущую схему базы данных (хотя текущая схема MyISAM db действительно имеет первичные ключи), прежде чем я конвертирую ее в InnoDb.

Мой вопрос: как только я конвертирую БД в InnoDb, восстановление данных из текущего движка MYISAM в движок InnoDb будет таким же простым, как запуск экземпляра PhpMyAdmin и резервное копирование данных (за вычетом схемы или структуры db), а затем восстановить его до двигатель Innodb?

Каковы потенциальные препятствия при этом?

Это правильный способ сделать это или каковы другие более простые или лучшие способы восстановления данных?


person user481913    schedule 18.11.2011    source источник


Ответы (3)


Это не будет простая команда механизма хранения ALTER, поскольку мне нужно добавить внешние ключи в текущую схему базы данных.

Почему нет? Обязательно сначала сделайте резервную копию данных, это всегда хорошая идея, но вам не нужно сбрасывать и восстанавливать данные, вы можете выполнить простую команду ALTER TABLE, например:

ALTER TABLE `tablename` ENGINE = InnoDB;

После этого вы можете добавить любой индекс и внешний ключ. Если какой-либо новый внешний ключ не работает, вам нужно исправить свои данные и повторить попытку.

person stivlo    schedule 18.11.2011

Когда вы сначала добавляете внешние ключи, вам нужно копировать данные в определенном порядке, иначе ваши данные не будут добавлены из-за ограничений внешнего ключа. Поэтому лучше всего проверить (с помощью запросов SQL), можете ли вы выполнить ограничения внешнего ключа с помощью текущего набора данных, а затем скопировать данные, после чего определить внешние ключи. Но если вы экспортируете свои данные из базы данных InnoDB с помощью PHPMyAdmin, заказ уже выполнен, и вы можете повторно импортировать его без каких-либо проблем.

person belgther    schedule 18.11.2011

Возможно, вы могли бы добавить внешние ключи позже

  1. Измените таблицу, чтобы использовать новый движок

  2. Измените каждую таблицу, чтобы использовать внешние ключи

Я вижу только одну проблему с этим, и это будет, если внешние ключи сломаны с самого начала.

person Andreas Wederbrand    schedule 18.11.2011