Estou executando um MySQL 5.6 Galera Cluster de 3 nós. Tudo está sincronizado e parece bom, mas acabei de descobrir que a tabela de usuários não estava sincronizada.
Um usuário específico não estava presente nos outros nós onde pensei que poderia replicá-lo após a emissão:
mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('10.0.0.10','haproxy_check'); FLUSH PRIVILEGES;"
Verifiquei duas vezes o status do wsrep e as tabelas de usuário em todos os nós. Depois de emitir o comando nos outros 2 nodos ele fica disponível e galera parece ainda estar sincronizado.
Estou perdendo alguma coisa aqui? Por que galera não está replicando a tabela de usuários?
Está nas limitações conhecidas :
Portanto, usar a declaração adequada
CREATE USER
será replicado, suaINSERT INTO mysql.user
declaração não.Não consigo encontrar uma referência adequada se
GRANT
as instruções forem consideradas instruções DDL e serão replicadas ou não.Como acima MyISAM não é replicado. GRANT e CREATE USER e todos os outros comandos que manipulam as tabelas do sistema são replicados. Use-os sempre e você não terá problemas por causa da galera e não ficará parado quando/se uma implementação subjacente for alterada.
Você pode querer usar pt-show-grants do Percona Toolkit para extrair suas concessões de um nó e injetá-las de volta no cluster.