设置:
问题:
以下命令将不会运行。我可以创建用户和数据库并删除数据库,但不能删除用户。我不能说是复制问题还是特权问题。
第1行的错误3098(HY000),该表不符合外部插件的要求。
日志:[错误]报告了插件group_replication:'表用户未使用InnoDB存储引擎。这与组复制不兼容。
我也通过本地mysql控制台收到了同样的错误,也以root用户身份登录。
问题:
答案 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