Копирование данных из myisam в innodb - PullRequest
0 голосов
/ 18 ноября 2011

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

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

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

ALTER TABLE `tablename` ENGINE = InnoDB;

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

0 голосов
/ 18 ноября 2011

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

  1. Измените таблицу для использования нового механизма

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

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

0 голосов
/ 18 ноября 2011

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

...