我正在运行一个 3 节点 MySQL 5.6 Galera 集群。一切都同步并且看起来很好,但是我刚刚发现用户表不同步。
一个特定的用户不在其他节点上,我认为它可能会在发出后复制它:
mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('10.0.0.10','haproxy_check'); FLUSH PRIVILEGES;"
我仔细检查了所有节点上的 wsrep 状态和用户表。在其他 2 个节点上发出命令后,它可用并且 galera 似乎仍处于同步状态。
我在这里错过了什么吗?为什么 galera 不复制用户表?
这是已知的限制:
所以使用正确的
CREATE USER
语句会复制,你的INSERT INTO mysql.user
语句不会。GRANT
如果语句被认为是 DDL 语句并且是否会复制, 我找不到合适的参考。如上所述,MyISAM 没有被复制。GRANT 和 CREATE USER 以及所有其他操作系统表的命令都会被复制。始终使用它们,您将不会因为 galera 而遇到麻烦,并且当/如果底层实现发生更改时,您也不会陷入困境。
您可能希望使用 Percona Toolkit 中的 pt-show-grants 从一个节点提取您的授权并将它们注入回集群。