是否有任何工具可以帮助将innoDB表转换为mysql集群的NDB表?

时间:2010-06-04 07:21:07

标签: mysql triggers foreign-keys

是否有任何工具可以帮助将innoDB表转换为NDB表? 我想要一个工具帮助来通过触发器替换所有外键。 我是否应该为每个FK手动完成?

1 个答案:

答案 0 :(得分:0)

我不知道是否有工具可以让你这样做。

您总是可以用[您最喜欢的脚本语言]编写脚本来执行此操作。

它的工作原理如下:

(注意:我假设每个表都是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声明
  6. 也许实际上有一些工具可以帮到你,但另一方面,如果你不想手动操作,这可能是你需要做的。