单可用区三AZ,副本数量没用配置,实际应该是多少

【 TiDB 使用环境】测试
【 TiDB 版本】v7.1.1
【复现路径】无
【遇到的问题:问题现象及影响】环境:单可用区三AZ,下面的数据副本是不是还有3份,相当于3个可用区3份副本。总共有9份副本数据?我ctl看当前副本是3
【资源配置】
【附件:截图/日志/监控】

如果你按照3个az正确给kv打了标签,那就是三副本,每个az一个完整副本。某个az下面所有kv挂掉都不会影响整个数据库使用。

打了标签的

  • host: 192.168.1.100
    ssh_port: 22
    port: 30402
    status_port: 30403
    deploy_dir: “/zol/tidb-deploy/tikv”
    data_dir: “/zol/tidb-data/tikv”
    log_dir: “/zol/tidb-deploy/tikv/log”
    config:
    server.labels:
    zone: zol1
    host: 192.168.1.100

  • host: 192.168.1.101
    ssh_port: 22
    port: 30402
    status_port: 30403
    deploy_dir: “/zol/tidb-deploy/tikv”
    data_dir: “/zol/tidb-data/tikv”
    log_dir: “/zol/tidb-deploy/tikv/log”
    config:
    server.labels:
    zone: zol1
    host: 192.168.1.101

  • host: 192.168.1.102
    ssh_port: 22
    port: 30402
    status_port: 30403
    deploy_dir: “/zol/tidb-deploy/tikv”
    data_dir: “/zol/tidb-data/tikv”
    log_dir: “/zol/tidb-deploy/tikv/log”
    config:
    server.labels:
    zone: zol3
    host: 192.168.1.102

3副本就是3份

我用的单可用区三AZ部署架构,副本应该是多少呢

与你部署的物理部署架构无关,你max-replicas指定的几副本就是几副本

1 个赞

单可用区就是 单az 这种分法可以按机柜 按机房 按城市 az是aws的叫法 就是不同的机房

那怎么确定副本有没有在同一个可用区上面呢

我的意思是tidb az部署架构呢但可用区多AZ的方式,确定副本是在3个AZ中,还是一个AZ三个副本数据

PD监控面板上有个isolation level面板,可以看到当前reigon所处的隔离级别

1 个赞

https://docs.pingcap.com/zh/tidb/v6.5/schedule-replicas-by-topology-labels#使用-tiup-进行配置推荐
看这里,可以通过pd的replication.location-labels和tikv打标label的方式来进行region调度,基于上面的配置,就会按照下面的方式进行调度
https://docs.pingcap.com/zh/tidb/v6.5/schedule-replicas-by-topology-labels#基于拓扑-label-的-pd-调度策略
如果你当前只有2个zone,但是有三副本,zone不满足,所以会按照host进行分配,就是1个host一个副本,你可以再扩容一个zone zol2,这样你看副本应该会是每个zone一个副本。。。

谢谢大佬 ,那这样的话3个zone就是3个副本,2个zone按hosts来调度的话就是一个zone一个3个副本2个zone就是6个副本了对吧

:+1:
学了一招。

不是啊,副本数是固定死的,你设置了3就是3,但是你现在打标了label分为zone级别隔离和host级别隔离,但是你zone数量又不够的话,就没法按照zone级别进行副本隔离了,就会按照host级别隔离,
例如你副本设置3,但是zone只有2,但是host有3,那你的副本只能分别存放在三个host里面,


但是如果你新加了1个zone,里面有2个host,现在你有3个zone和5个host,那你的3个副本就会分别在3个zone里面,至于在zone的哪个host就不确定了。。。

3副本就是3份,一份leader,两个follwer

最少3副本,或者奇数个副本