如何将 MAIN mysql 数据库从 MyIsam 转换为 InnoDB
How to convert MAIN mysql database to InnoDB from MyIsam
我正在尝试管理 mysql 组复制,但我注意到 在处理用户和授权时出现问题 。主 mysql 数据库中的 10 个 mysql table 是 MyIsam。所以我无法添加数据库或用户权限,因为它们会失败并且不会复制。 主-主组复制需要 InnoDB 的一切。
ALTER TABLE 在常规自定义 databases/tables 上工作正常,但是如何在主 mysql 数据库上解决这个问题?
我试过了,但都失败了:
ALTER TABLE mysql.db ENGINE = InnoDB;
ALTER TABLE mysql.tables_priv ENGINE = InnoDB;
ALTER TABLE mysql.user ENGINE = InnoDB;
错误:错误 1726 (HY000):存储引擎 'InnoDB' 不支持系统 tables.
另一个错误运行创建用户...
[错误] 插件 group_replication 报告:'Table db does not use the InnoDB storage engine. This is not compatible with Group Replication'
错误 3098 (HY000): table 不符合外部插件 group_replication.
的要求
服务器版本:5.7.23-log MySQL社区服务器
不要更改系统表的引擎
MySQL 尚未更改代码以允许 mysql.*
成为 MyISAM 以外的任何内容。 MySQL 8.0 通过将表 ("data dictionary") 转变为结构和功能完全不同的 InnoDB 表来进行更改。
既然你在5.7.23,你离8只有一步(大)了。0.xx。考虑升级。
复制适用于 MyISAM 表,但集群复制不适用——Galera 和组复制以其他方式处理这些 MyISAM 表。请参阅有关 GRANT
、CREATE USER
等发生的情况的文档。不要使用 UPDATE
和 INSERT
来操作与登录相关的表。
(这个问题的作者似乎已经通过卸载插件解决了这个问题。)
我正在尝试管理 mysql 组复制,但我注意到 在处理用户和授权时出现问题 。主 mysql 数据库中的 10 个 mysql table 是 MyIsam。所以我无法添加数据库或用户权限,因为它们会失败并且不会复制。 主-主组复制需要 InnoDB 的一切。
ALTER TABLE 在常规自定义 databases/tables 上工作正常,但是如何在主 mysql 数据库上解决这个问题?
我试过了,但都失败了:
ALTER TABLE mysql.db ENGINE = InnoDB;
ALTER TABLE mysql.tables_priv ENGINE = InnoDB;
ALTER TABLE mysql.user ENGINE = InnoDB;
错误:错误 1726 (HY000):存储引擎 'InnoDB' 不支持系统 tables.
另一个错误运行创建用户...
[错误] 插件 group_replication 报告:'Table db does not use the InnoDB storage engine. This is not compatible with Group Replication'
错误 3098 (HY000): table 不符合外部插件 group_replication.
的要求服务器版本:5.7.23-log MySQL社区服务器
不要更改系统表的引擎
MySQL 尚未更改代码以允许 mysql.*
成为 MyISAM 以外的任何内容。 MySQL 8.0 通过将表 ("data dictionary") 转变为结构和功能完全不同的 InnoDB 表来进行更改。
既然你在5.7.23,你离8只有一步(大)了。0.xx。考虑升级。
复制适用于 MyISAM 表,但集群复制不适用——Galera 和组复制以其他方式处理这些 MyISAM 表。请参阅有关 GRANT
、CREATE USER
等发生的情况的文档。不要使用 UPDATE
和 INSERT
来操作与登录相关的表。
(这个问题的作者似乎已经通过卸载插件解决了这个问题。)