§ MGR 切主后断开应用连接
§ 简介
在单主模式的 MGR 集群中,当 Primary 节点发生切换时,旧 Primary 节点上的应用端连接并不会自动断开,需要应用端进行异常状态判断或设置响应超时控制机制,这可能会造成应用端短暂不可用。
从 GreatSQL 8.0.32-25 版本开始,新增选项 greatdb_ha_mgr_exit_primary_kill_connection_mode,当参数值设置为 ON 时,在 MGR 发生 Primary 节点切换时主动断开旧 Primary 节点上的所有连接。该选项默认值为 OFF,即在切换 Primary 节点时默认不会自动断开旧 Primary 节点上的所有应用连接。
特别提醒
启用该特性后,当 MGR Primary 节点发生切换时会断开旧 Primary 节点上的所有连接,可能会对只读业务、监控业务等应用造成影响,因此请谨慎评估使用。
§ 启用功能特性
- 启用
greatdb_ha插件
该功能特性依赖 greatdb_ha 插件,因此要先启用该插件。
修改 my.cnf,在 [mysqld] 区间添加下面内容
[mysqld]
plugin_load_add=greatdb_ha.so
#MGR 切主后断开旧 Primary 节点上的所有应用连接
greatdb_ha_mgr_exit_primary_kill_connection_mode=ON
2
3
4
5
或者在 GreatSQL 启动后,手动执行下面的 SQL 命令启用
INSTALL PLUGIN greatdb_ha SONAME 'greatdb_ha.so';
SET GLOBAL greatdb_ha_mgr_exit_primary_kill_connection_mode=ON;
2
3
§ 补充说明
当 MGR Primary 节点因故障处于少数派(如经典的脑裂场景),该节点此时不能提供写服务,但是可以提供只读服务。如果此时也想让该节点断开所有应用连接,还需设置 group_replication_unreachable_majority_timeout 参数值不为 0。在等待 group_replication_unreachable_majority_timeout 时间后,旧 Primary 节点会主动退出 MGR 集群,从而触发 Primary 切换这个动作,也就会自动断开所有应用连接。
如果想确保必须在旧 Primary 节点退出后,其他多数派节点才能投票选出新 Primary 节点,可以设置 group_replication_unreachable_majority_timeout < group_replication_member_expel_timeout,这样可以确保处于少数派的旧 Primary 完全退出后,其余多数派节点才会重新选出新 Primary 节点。
扫码关注微信公众号

← MGR内置动态VIP MGR仲裁节点 →