社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

Kyle Anderson • 5 年前 • 820 次点击  

我试图管理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
 
820 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Rick James
Reply   •   1 楼
Rick James    5 年前

不要为系统表更换发动机

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

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

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

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