TiDB因网络故障,由一个集群变成了两个小集群,在不考虑数据的一致性的情况下,两个小集群都可以能提供服务吗

那多数派那边的集群还能用吗

这是我当初的故障测试方法和记录

1、拔出集群所有节点网线

2、集群状态查看

3、大表访问,查看返回记录数据

恢复

1、插入集群所有节点网线

2、集群状态查看

3、大表访问,查看返回记录数据

4、集群状态查看

半小时后插上,集群运行状态正常

:heart:好哒

两地三中心的集群可以吧,直接网线一拔变三个集群?

1个Tidb集群网络隔离后,产生两个网络分区,拥有大多数PD和TiKV的分区A能够使用分区内的TiDB Server对外提供服务。
对于只有少数PD和TiKV的分区B,因raft算法规则限制,无法产生PD Learder和Region的Learder,无法对外提供服务;如果TiDB集群使用虚拟化部署,可以尝试克隆分区A内的PD和TiKV节点到分区B内启动。

两地三中心的集群也是一个大的集群,如果网线拔了,不出意外,只能是多数派集群提供服务吧

克隆分区A内的PD和TiKV节点到分区B内启动,可是原本分区B中的tikv 本地有个 raft cf,里面记录了region的localstate,记录了每个region有几个副本,peer都是谁,peer对应的storeid是什么;这样一来B区的region副本进行选举的时候raft协议还是会去A区找数据副本,照样还是会无法选举出leader;如果可以更改raft cf的话,更改每个region只有B区上的几个副本,应该可以实现在B区上选取出Leader;不知道raft cf怎么去维护 :joy:

分区A和分区B已经网络隔离了,克隆过来的节点直接使用在分区B中的IP、hostname等信息能启动节点吗?

应该可以吧,跟从github上把源代码拉下来本地启动应该是一个意思

我也是这样理解的,没有验证过。
如果要让1各集群生成2个集群,还是新建1个集群,使用TiCDC同步或者BR备份恢复安全、快捷

可以,说的有道理 :+1:但是这种方式下,最后两个集群的数据怎么统一到一起了 :joy:,毕竟已经完全是两个集群了

之前,一个集群分成两个各自提供服务的话,看看能不能实现最终一致性

两边都有数据写入的话,想要合并数据,只能停掉1边的Tidb Server服务,将数据手动弄过去吧。

简单来做是这样的,就是感觉有点麻烦

生产环境操作太随意,容易掉坑里,最好能做方案、评估方案可行性再执行。

1个集群分裂2个小集群,是不是可以考虑用ticdc,刚开始就搞成2个小集群。

是的,有大佬搞双向CDC

这样也行;但是分裂成两个小集群是由网络因素导致的,我们也不知道是哪些节点会组成一个小集群,所以一开始就搞成两个小集群会不会不能解决网络故障的问题

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。