如何将mysql主数据库从myisam转换成innodb

bvpmtnay  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(372)

我正在尝试管理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社区服务器

bvjxkvbb

bvjxkvbb1#

不要更改系统表的引擎
mysql还没有对代码进行足够的修改,以允许 mysql.* 除了myisam什么都不是。mysql 8.0通过将表(“数据字典”)转换成一个innodb表来实现这一改变,该表具有完全不同的结构和功能。
因为你现在是5.7.23,你离8.0.xx只有一步之遥。考虑升级。
复制可以与myisam表一起工作,但是集群复制不能——galera和组复制以其他方式处理那些myisam表。请参阅文档,了解 GRANT , CREATE USER 等不使用 UPDATE 以及 INSERT 操作与登录相关的表。
(这个问题的作者似乎通过卸载插件解决了这个问题。)

相关问题