多副本的单集群容灾方案

【TiDB 使用环境】生产环境
多副本的单集群容灾方案


如何配置副本分布?同城3中心,比如AZ1有5个tikv节点,AZ2有4个tikv节点,如何保证5副本种的2个在AZ1,另外两个在AZ2,剩下一个在AZ3?

用placement-rules设置每个AZ放多少个副本
https://docs.pingcap.com/zh/tidb/dev/configure-placement-rules/

3 个赞

感谢老师分享

向这种如果主AZ挂了之后,备AZ是会自动顶上吗?我看文档里面都是手动指定放置策略的

3 中心弄成逻辑 5 中心不就好了

1 个赞

没太懂什么意思 :thinking:

你这个就按这个走就好了啊,这不是两地三中心吗,你相当于异地的那个中心搬到本地来啦,https://docs.pingcap.com/zh/tidb/stable/three-data-centers-in-two-cities-deployment/

2 个赞

我的问题不是方案的问题,这个示例里面都是5副本刚好对应5个节点嘛。我的问题是:

1、当我节点数量超出副本数量时,是否可以手动指定副本的存放,保证AZ1和AZ2分别两副本,AZ3一个副本。 已解决,通过pg_ctl 设置 placement rules 可以指定。

2、AZ1 不可用之后,AZ2是否可以自动顶上?我看示例里面是通过 SQL 创建的 placement policy 放置规则,AZ1不可用之后都是手动调整的

谁说一个 AZ 只能一台机器的,多台机器也行,还是按 AZ 分布的

当然可以自动顶上,只要能满足多数派就能正常对外提供服务,不然怎么高可用

1 个赞

AZ是可用区呀,当然是包含了能支撑起集群的所有节点的机器呀。我只是想知道一个可用区不能用了之后,另外一个怎么顶上,想了解一下其原理

你 3 AZ 5 副本,你直接变成逻辑 5 AZ 5 副本就好了啊

raft 共识算法选举机制啊,leader 挂了之后,没法向其他副本定期发送心跳维持其 leader 地位,其他副本会因为超时触发选举,选举出新的 leader

这种逻辑az,当我扩展kv的时候怎么规划呢?

按逻辑 AZ 扩呗

2-2-1模式分别放voter、voter、follower,follower的AZ挂了不影响,voter的AZ挂了就把follower改成voter重新选leader就好

是否可以做1:1:1的容灾方式?副本分别分布在不同AZ,不同的AZ之间网络延迟在10ms内
这样成本也比2:2:1的低

可以的,看这个方案:
https://docs.pingcap.com/zh/tidb/dev/multi-data-centers-in-one-city-deployment/