我正在尝试管理mysql组复制,在操作用户和授权时发现了一个问题。mysql主数据库中的10个mysql主表是myisam。所以我不能添加数据库或用户权限,因为它们失败并且不会复制。主组复制需要innodb的一切。
altertable在常规的自定义数据库/表上工作得很好,但是如何在主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时出现另一个错误。。。
[错误]插件组\u replication报告:“table db未使用innodb存储引擎。这与“组复制”不兼容
错误3098(hy000):表不符合外部插件组\u复制的要求。
服务器版本:5.7.23-log mysql社区服务器
1条答案
按热度按时间snz8szmq1#
不要更改系统表的引擎
mysql还没有对代码进行足够的修改,以允许
mysql.*
除了myisam什么都不是。mysql 8.0通过将表(“数据字典”)转换成一个innodb表来实现这一改变,该表具有完全不同的结构和功能。因为你现在是5.7.23,你离8.0.xx只有一步之遥。考虑升级。
复制可以与myisam表一起工作,但是集群复制不能——galera和组复制以其他方式处理那些myisam表。请参阅文档,了解
GRANT
,CREATE USER
等不使用UPDATE
以及INSERT
操作与登录相关的表。(这个问题的作者似乎通过卸载插件解决了这个问题。)