Py学习  »  DATABASE

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

Kyle Anderson • 6 年前 • 1613 次点击  

我试图管理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”不支持系统表。

另一个错误正在运行创建用户…

[错误] plugin group_replication reported:'表数据库未使用InnoDB存储引擎。这与组复制不兼容'

误差 3098(hy000):表不符合外部插件组复制的要求。

服务器版本:5.7.23-log mysql community server

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30473
 
1613 次点击  
文章 [ 1 ]  |  最新文章 6 年前
Rick James
Reply   •   1 楼
Rick James    6 年前

不要为系统表更换发动机

MySQL尚未更改足够的代码以允许 mysql.* 不是我的错。MySQL8.0通过将表(“数据字典”)转换为具有完全不同结构和功能的InnoDB表来进行更改。

既然你现在是5.7.23,你离8.0.xx只有一步之遥。考虑升级。

复制与myisam表一起工作, 但是 集群复制并不——galera和group复制以其他方式处理这些myisam表。请参阅有关发生什么情况的文档 GRANT , CREATE USER 等等,不要使用 UPDATE INSERT 操作与登录相关的表。

(此问题的作者似乎已通过卸载插件修复了该问题。)