我正在运行 MariaDB Galera 集群,该集群使用 mariaDB 和 3 个节点(节点 A、节点 B、节点 C)。我的节点位于我们办公室本地。
我的问题是,如果节点 A/B/C 失去网络连接,它也会失去工作能力。
假设某个应用程序连接到节点 A,然后节点 A 丢失了网络连接,因此当有人尝试使用物理访问(例如 CLI)在节点 A 上读取/写入数据时,它不起作用。它显示,
ERROR 1047 WSREP has not yet prepared node for application use
我也想离线使用节点 A/B/C。当它们恢复网络连接时,它会自动将离线数据复制到连接的节点。
提前致谢,
尼克松
答案1
从:https://groups.google.com/forum/#!topic/codership-team/BALCXRfizTs
Galera 集群不允许在写入模式下离线使用断开连接的节点,并在稍后将其与集群重新同步。原因之一是,如果在两个分离的节点上插入具有相同值作为主键或唯一索引的记录,则合并它们时会出现重复问题。在这种情况下,软件本身无法决定哪条记录有效,哪条记录应该被丢弃。
一种选择可能是在客户端和服务器之间使用代理解决方案,当客户端所连接的集群节点发生故障时,该解决方案会自动将客户端重新连接到集群中的同步节点。例如,Haproxy 可以完成这项工作。