You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

TiDB集群各Region副本数是否可配置?配置方法是什么?

TiDB Region副本数量配置指南

当然支持调整Region的副本数量啦!TiDB的Region副本数(也就是Replica Count)是可以灵活配置的,不管是全局默认值,还是针对特定数据库、表单独设置都没问题。下面分几种场景给你详细说操作方法:

一、全局默认副本数配置

如果想让所有新建的表都使用指定的副本数,你有两种方式可以设置:

  • 通过PD配置文件(适合集群初始化阶段)
    在PD的配置文件(通常是pd.toml)里找到[replication]配置块,调整max-replicas参数即可。比如想把默认副本数设为3(TiDB默认就是这个值,你可以根据集群规模改成2、4、5等,建议用奇数,方便选主避免脑裂):

    [replication]
    max-replicas = 3
    

    修改完成后需要重启PD节点才能生效。

  • 通过PD命令行工具(在线修改,无需重启)
    pd-ctl工具直接执行配置修改命令,这个方式更适合已经运行的集群:

    pd-ctl config set replication max-replicas 3
    

    命令执行后立即生效,后续新建的表都会自动使用这个副本数。

二、针对特定数据库/表设置副本数

如果你只想让某个库或者某张表使用不同的副本数(比如核心业务表用5副本提升可用性,普通表用2副本节省资源),可以通过TiDB的SQL语法来单独设置:

  • 新建表时指定副本数
    CREATE TABLE语句里加上TiDB特有的注释属性,语法如下:

    CREATE TABLE user_info (
      id INT PRIMARY KEY AUTO_INCREMENT,
      username VARCHAR(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    /*T! REGION_REPLICA_COUNT = 4*/;
    

    这里的REGION_REPLICA_COUNT = 4就是把这张表的Region副本数设为4,注意/*T! ... */是TiDB专属的语法标记,必须带上才能让TiDB识别这个配置。

  • 修改已有表的副本数
    对于已经创建好的表,也可以在线调整副本数,用ALTER TABLE语句即可:

    ALTER TABLE user_info /*T! REGION_REPLICA_COUNT = 3*/;
    

    执行这个命令后,TiDB会自动触发PD的Region调度,逐步调整该表所有Region的副本数量,整个过程是在线的,不会中断业务的读写操作。

三、关键注意事项

  • 副本数建议设置为奇数(如3、5),这样在集群出现节点故障时,能快速选出主副本,避免脑裂问题,保证服务可用性。
  • 调整副本数后,PD会自动在TiKV节点间调度副本,这个过程的耗时取决于集群规模和数据量。你可以用pd-ctl region check命令查看Region的副本状态,确认是否全部调整完成。
  • 要确保TiKV节点的数量≥你设置的副本数,否则PD无法完成副本分配,会导致Region处于不健康状态。

内容的提问来源于stack exchange,提问作者Caitin Chen

火山引擎 最新活动