如何从MyIsam将MAIN mysql数据库转换为InnoDB

时间:2018-10-02 20:17:53

标签: mysql innodb myisam grant

我正在尝试管理mysql组复制,并且在操作用户和授权时发现问题。主mysql数据库中的10个主要mysql表是MyIsam。所以我无法添加数据库或用户权限,因为它们会失败并且不会复制。 主-主组复制需要所有InnoDB。

ALTER TABLE在常规的自定义数据库/表上工作正常,但是如何在主要的mysql数据库上解决此问题?

我尝试过,但是都失败了:

ALTER TABLE mysql.db ENGINE = InnoDB;
ALTER TABLE mysql.tables_priv ENGINE = InnoDB;
ALTER TABLE mysql.user ENGINE = InnoDB;

错误::错误1726(HY000):存储引擎'InnoDB'不支持系统表。

运行CREATE USER的另一个错误...

[错误] 报告插件group_replication:'表db不使用InnoDB存储引擎。这与组复制不兼容

错误 3098(HY000):该表不符合外部插件group_replication的要求。

服务器版本:5.7.23-log MySQL Community Server

1 个答案:

答案 0 :(得分:2)

请勿更改系统表的引擎

MySQL尚未对代码进行足够的更改以允许mysql.*成为MyISAM以外的任何其他代码。 MySQL 8.0通过将表(“数据字典”)转换为InnoDB表来进行更改,其结构和功能完全不同。

由于您位于5.7.23,因此距8.0.xx仅一步之遥。考虑升级。

复制可与MyISAM表一起使用,但群集复制不起作用-Galera和组复制以其他方式处理那些MyISAM表。请参阅有关GRANTCREATE USER等情况的文档。请勿使用UPDATEINSERT来处理与登录相关的表。

(此问题的作者似乎通过卸载插件解决了该问题。)