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

How to convert MAIN mysql database to InnoDB from MyIsam

我正在尝试管理 mysql 组复制,但我注意到 在处理用户和授权时出现问题 。主 mysql 数据库中的 10 个 mysql table 是 MyIsam。所以我无法添加数据库或用户权限,因为它们会失败并且不会复制。 主-主组复制需要 InnoDB 的一切。

ALTER TABLE 在常规自定义 databases/tables 上工作正常,但是如何在主 mysql 数据库上解决这个问题?

我试过了,但都失败了:

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

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

另一个错误运行创建用户...

[错误] 插件 group_replication 报告:'Table db does not use the InnoDB storage engine. This is not compatible with Group Replication'

错误 3098 (HY000): table 不符合外部插件 group_replication.

的要求

服务器版本:5.7.23-log MySQL社区服务器

不要更改系统表的引擎

MySQL 尚未更改代码以允许 mysql.* 成为 MyISAM 以外的任何内容。 MySQL 8.0 通过将表 ("data dictionary") 转变为结构和功能完全不同的 InnoDB 表来进行更改。

既然你在5.7.23,你离8只有一步(大)了。0.xx。考虑升级。

复制适用于 MyISAM 表,集群复制不适用——Galera 和组复制以其他方式处理这些 MyISAM 表。请参阅有关 GRANTCREATE USER 等发生的情况的文档。不要使用 UPDATEINSERT 来操作与登录相关的表。

(这个问题的作者似乎已经通过卸载插件解决了这个问题。)