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

tcbh2hod  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(1512)

设置:
主机中有三个mysql组复制节点。
一切正常。我可以添加用户/dbs和插入/更新数据。
每个节点都绑定到一个专用ip地址。
我创建了一个bash脚本来连接mysql删除用户。
使用脚本删除数据库可以正常工作。
问题:
以下命令将不运行。我可以创建用户和数据库,删除数据库,但不能删除用户。我不知道这是复制问题还是特权问题。
从mysql.user中删除,其中user='testme123';
从mysql.db中删除,其中user='testme123';
如果存在“testme123”,则删除用户;
第1行出现错误3098(hy000):该表不符合外部插件的要求。
日志:[错误]插件组\复制报告:'表用户不使用innodb存储引擎。这与组复制不兼容。
我得到同样的错误,通过本地mysql控制台也以root用户身份登录。
问题:
是什么阻止了这一切?
我该如何解决我缺少的问题?

qcbq4gxm

qcbq4gxm1#

如果使用组复制(在5.7或8.0中),则必须通过grant/drop/create user/etc命令执行所有用户身份验证,而不是insert/update/delete/etc。
由于严重的技术困难,myisam不能在组复制中复制。
(以上评论也适用于galera/pxc。)
(警告:我所说的可能不是完全正确的,但我认为这将使你免于麻烦,并解决眼前的问题。)

qyuhtwio

qyuhtwio2#

在我的例子中,我在从单一主模式mysql复制组还原备份时遇到了相同的错误。我用电脑做了备份 --single-transaction 期间标记 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 来自 mysqldump cmd,然后将其还原到新的复制组。
注:mysql服务器版本为5.7.25

相关问题