我正在尝试管理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
答案 0 :(得分:2)
请勿更改系统表的引擎
MySQL尚未对代码进行足够的更改以允许mysql.*
成为MyISAM以外的任何其他代码。 MySQL 8.0通过将表(“数据字典”)转换为InnoDB表来进行更改,其结构和功能完全不同。
由于您位于5.7.23,因此距8.0.xx仅一步之遥。考虑升级。
复制可与MyISAM表一起使用,但但群集复制不起作用-Galera和组复制以其他方式处理那些MyISAM表。请参阅有关GRANT
,CREATE USER
等情况的文档。请勿使用UPDATE
和INSERT
来处理与登录相关的表。
(此问题的作者似乎通过卸载插件解决了该问题。)