mer*_*lin 3 mysql replication galera
我正在运行一个 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;"
Run Code Online (Sandbox Code Playgroud)
我仔细检查了所有节点上的 wsrep 状态和用户表。在其他 2 个节点上发出命令后,它可用并且 galera 似乎仍处于同步状态。
我在这里错过了什么吗?为什么 galera 不复制用户表?
它在已知的限制中:
目前复制仅适用于InnoDB存储引擎。任何对其他类型表的写入,包括系统 (
mysql.*
) 表都不会被复制(此限制不包括 DDL 语句,例如 CREATE USER,它隐式修改了 mysql.* 表——这些被复制)。然而,有对 MyISAM 的实验支持 - 请参阅wsrep_replicate_myisam
系统变量)
所以使用正确的CREATE USER
语句会复制,你的 INSERT INTO mysql.user
语句不会。
如果GRANT
语句被视为 DDL 语句并且是否会复制,我无法找到合适的参考。