Есть ли какие-либо инструменты, которые могут помочь преобразовать таблицу innoDB в таблицу NDB для кластера mysql? - PullRequest
1 голос
/ 04 июня 2010

Есть ли какие-либо инструменты, которые могут помочь преобразовать таблицу innoDB в таблицу NDB? Я хочу, чтобы инструмент помог заменить весь внешний ключ на триггер. Должен ли я сделать это вручную для каждого FK?

1 Ответ

0 голосов
/ 04 июня 2010

Я не знаю, есть ли инструменты, позволяющие вам сделать это.

Вы всегда можете написать скрипт на [ваш любимый язык сценариев], чтобы сделать это.

Это будет работать как:

(NB. Я предполагаю, что каждая таблица - это InnoDB, и что вы хотите преобразовать их все. Я также предполагаю, что в вашей базе данных нет представлений. Если у вас есть представления, то вместо этого вы должны выполнить SHOW FULL TABLES и обработать только те строки, для которых тип таблицы указывает, что это не представление. Кроме того, это не избавит от индексов, связанных с внешними ключами - вам нужно будет выполнить эту часть вручную, если вы не хотите, чтобы все индексы Кроме того, сделайте резервную копию базы данных, прежде чем что-то делать! Хотя это само собой разумеется.)

  1. Создать пустой массив / список / что угодно, $foreign_keys
  2. выпуск SHOW TABLES
  3. Для каждой отображаемой таблицы:
    • выпуск SHOW CREATE TABLE tablename
    • Выполнить поиск по регулярному выражению для /CONSTRAINT `(.+)` FOREIGN KEY/
    • Для каждого матча
      • добавить детали внешнего ключа в той же строке в ваш массив $foreign_keys;
      • выдает DROP FOREIGN KEY оператор
  4. Для каждой таблицы выведите ALTER TABLE tablename ENGINE=NDB
  5. Для каждой записи в вашем массиве $foreign_keys введите оператор CREATE TRIGGER

Возможно, на самом деле существуют инструменты, которые сделают это за вас, но, с другой стороны, это может быть то, что вам нужно сделать, если вы не хотите делать это вручную.

...