暂无图片
为什么 MySQL Group Replication 中的故障节点要及时剔除掉?
我来答
分享
暂无图片 匿名用户
为什么 MySQL Group Replication 中的故障节点要及时剔除掉?
暂无图片 5M

为什么 MySQL Group Replication 中的故障节点要及时剔除掉?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
shunwahⓂ️

到MySQL MGR已经有了一套完整的错误响应机制。这套机制由三部分构成:

  1. 故障探测(Failure Detection)

    当任何节点因故障或者网络分裂无法响应其他节点时,MGR能够识别出发生故障的节点。

  2. 移除故障节点(Expel Member)

    将故障节点从集群中移除出去。

  3. 自动重新加入(Auto-Rejoin)

    当故障消除后,恢复的节点能够知道自己被移除了,并且自动加入集群中。


移除故障节点的真正含义

移除节点意味着集群中的节点数减少,因此可能导致集群的可靠性降低。

举个例子,假设一个集群有5个节点。MGR保证数据复制到至少3个节点上。当2个节点发生故障并被自动移除出集群后,集群中就只有3个节点了,MGR保证数据被复制到至少2个节点上。因此集群的可靠性就退化了。

当移除故障节点时,要求至少有半数以上的节点活着。所以当集群中只有两个节点时,故障的节点不会被移除出去。好在大多数的使用场景下,都是3个节点,因此大多数场景下可靠性不会退化。


自动重新加入(Auto-Rejoin)

当故障节点恢复后,会发现自己被移除出了集群。这时,这个节点会尝试自动加入集群。自动加入集群的过程和START GROUP REPLICATION不同。这个过程不需要做全局恢复(Global Recovery)。全局恢复需要通过group_replication_recovery异步通道复制加入集群前的数据。而自动加入时,所有的数据都是通过XCOM复制,包括加入前的数据。

暂无图片 评论
暂无图片 有用 0
打赏 0
张sir

这就跟oracle rac一样,故障节点的剔除其实就是在集群层标识一下这个节点异常了,日志同步不要给他同步了,或者选主的时候不要选他了,防止出现数据不一致。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql 字段的排序规则
回答 1
已采纳
你这样试试selectfromwhereORDERBYCONVERT(字段名USINGgbk)DESC看看能不能行
mysql 5.7单机最大数据量能支撑到多少?
回答 1
已采纳
从官方资料看,innodb单表最大64T。你所谓的抗不住是指的存储还是性能。存储看硬件。性能看SQL,写的好的千万级别下单表一点问题都没有。过亿的表只要SQL执行计划好,没有问题。
mysql能不能从系统表里面获取索引的使用频率的情况呢?
回答 1
已采纳
selectfromperformanceschema.tableiowaitssummarybyindexusageWHEREINDEXNAMEISNOTNULLANDOBJECTSCHEMA‘yo
mysql 性能监控一般监控什么?有哪些指令?
回答 3
可以參考一下PMM監控項
innodbcluster在两个节点同时故障时如何自动恢复?
回答 1
MGR3节点的单主模式,如果有两个节点主机宕机,临时对外提供服务的方法
MySQL有没有隐式游标?
回答 2
mysql貌似没有隐式游标。。。。。。。。。。
市面上有可以直接配置数据采集到MySQL数据库的网关吗?
回答 1
这个要看你什么样的前端设备,采集什么数据了吧,是否需要专用的软件,如果是直接从数据库抽取数据的话,datax或者kettel都可以
通过sql文件能看出是哪个版本的mysql导出的吗?
回答 1
可以的,mysqldump导出的文件开头有记录版本信息,比如表示mysqldump版本10.13(对应mysql5.7.33)server(数据库)版本:5.7.38log
想把MySQL数据库下的所有表的结构和数据弄清楚, 用哪个命令好?
回答 4
用图形工具看
MySQL怎样自动清除过期的二进制日志?
回答 1
已采纳
可用以下方法设置二进制日志的到期时间,到期后系统会自动清除过期的二进制日志文件。1)在配置文件my.ini的[mysqld]组下加入下述变量声明,并重新启动服务器来设置二进制日志的到期天数。&nbsp
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~