错误3098(HY000):该表格不符合外部插件的要求

时间:2018-11-12 19:17:35

标签: mysql bash replication

设置:

  • master master master中的三个mysql组复制节点。
  • 一切正常。我可以添加用户/数据库并插入/更新数据。
  • 每个节点都绑定到一个专用IP地址。
  • 我创建了一个bash脚本以连接到mysql以删除用户。
  • 使用脚本删除数据库可以正常工作。

问题:

以下命令将不会运行。我可以创建用户和数据库并删除数据库,但不能删除用户。我不能说是复制问题还是特权问题。

  • 从mysql.user中删除WHERE user ='testme123';
  • 从mysql.db中删除WHERE user ='testme123';
  • 如果存在'testme123',则删除用户;

第1行的错误3098(HY000),该表不符合外部插件的要求。

日志:[错误]报告了插件group_replication:'表用户未使用InnoDB存储引擎。这与组复制不兼容。

我也通过本地mysql控制台收到了同样的错误,也以root用户身份登录。

问题:

  • 什么可以防止这种情况?
  • 如何解决我所缺少的东西?

2 个答案:

答案 0 :(得分:2)

如果使用组复制(在5.7或8.0中),则必须通过GRANT / DROP / CREATE USER / etc命令(而不是INSERT / UPDATE / DELETE / etc)进行所有用户身份验证。

由于严重的技术困难,MyISAM未在组复制中复制。

(以上注释也适用于Galera / PXC。)

(注意:我所说的可能并不完全正确,但我认为这会让您摆脱麻烦,并解决当前的问题。)

答案 1 :(得分:1)

就我而言,从单主模式MySQL复制组还原备份时遇到了相同的错误。我在--single-transaction cmd期间使用mysqldump标志进行了备份。

$ mysqldump -uroot -p<root_password> -h<host> --set-gtid-purged=OFF --single-transaction --all-databases --triggers --routines --events < dump.sql

在这里,请查看--single-transaction标志的用法以解决引起的问题。

$ mysqldump --help
...
--single-transaction 
                      Creates a consistent snapshot by dumping all tables in a
                      single transaction. Works ONLY for tables stored in
                      storage engines which support multiversioning (currently
                      only InnoDB does); the dump is NOT guaranteed to be
                      consistent for other storage engines. While a
                      --single-transaction dump is in process, to ensure a
                      valid dump file (correct table contents and binary log
                      position), no other connection should use the following
                      statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
                      TRUNCATE TABLE, as consistent snapshot is not isolated
                      from them. Option automatically turns off --lock-tables.
...

因此,在阅读了提供的@RickJames的建议之后,我只是在备份过程中从--single-transaction cmd中删除了mysqldump标志,然后将其还原到了新的复制组。

  

注意: MySQL服务器版本为5.7.25