我正在尝试获得一个可靠的MySQL组复制、负载平衡/故障转移设置。目前,我使用keepalived
共享一个private IP
来连接到loadbalanced
MySQL组复制集群,通过haproxy
(对端口33061的tcp检查)进行平衡/故障转移,这非常有效。
但是,一旦一个节点处于无法到达的状态(由于网络问题),并最终对集群脱机,我们将不得不将该节点重新加入到集群中,这一切都很好,而且可以工作。但是,在恢复阶段(状态RECOVERING
),节点已经在监听端口33061
,从而启用了负载平衡和故障转移。然而,该专题组尚未投入运作。
在节点仍处于RECOVERING
状态并加入群集时,是否可以添加任何检查以防止该节点联机?通常这个过程是相当快的,但是它也会发生几次,可能需要15分钟,在这个阶段中会导致数据库错误。非常感谢!
发布于 2022-04-19 10:35:43
选项1)您能否使用mysqlrouter
在HAProxy和MySQL之间(例如HAProxy >>路由器>> MySQL),因为路由器应该(理论上)看到节点正在“恢复”,而忽略它,我相信。
选项2)或者,您可以使用类似于此https://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/的东西吗?
本质上,您可以在数据库服务器上使用xinetd
查询mysql
,并返回一个是/否的结果以确保可用性,从而通知HAProxy是否可以使用给定的副本。
我已经用异步源/副本数据库和HAProxy来检查复制延迟和连接数量,并且刚刚开始探索Innodb集群。当我有时间的时候,这些都是我列出的用于测试的想法。
https://dba.stackexchange.com/questions/311025
复制相似问题