1

我正在尝试管理 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 存储引擎。这与组复制不兼容'

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

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

4

1 回答 1

2

不要更改系统表的引擎

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

由于您在 5.7.23,因此距离 8.0.xx 仅一步(大)。考虑升级。

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

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

于 2018-10-13T18:25:23.367 回答