有关多数据中心场景下的一些疑问

  • 【TiDB 版本】:最新
  • 【问题描述】:多数据中心适用场景
  1. TiDB最小能以什么单位进行数据副本数的设定?
  2. 像cassandra,可以明确的以keyspace的单位指定每个数据保持多少副本(replication_factor),在TiDB中类似需求需要怎么设定或架构呢?
  3. 在只读查询时,如果不需要太高的一致性,只想在本地数据中心范围内读取数据,这种情况下TiDB能不能避免跨数据中心的通信消耗,只在本地数据中心完成查询?
  4. 当收到写入请求时,TiDB是必须等待所有的数据中心处理成功后给客户端返回结果还是可以更灵活的设置?比如说半数以上的数据中心写入成功即可返回结果。

1、tidb 最小以 region 来设定副本数,可以看下下面的文档:

2、tidb 在设置副本数时, max-replicas 参数可以设置,但是这个参数是全局的,目前没有办法针对某个 region 单独设定副本。链接如下:

3、目前业务发起的读写操作,会发送到 raft group 中的 leader 节点,并且也在增加 follower read 特性。如果跨数据中心部署,可以通过 label 的方式尽量的将 region 更多的分布到同一个数据中心。相关链接如下:

4、可以看下 raft 相关资料,大多数写入,表示写入成功。没有参数可以设置,目前完全是 raft 本身的特性。

非常感谢快速的回复

期待: 对于一些对一致性要求不高的场景,未来直接支持低隔离级别的读,也未尝不可。到那时候,TiDB 的跨数据中心的性能将会又有一个飞跃。

目前 tidb 也具有跨数据中心部署的方案,数据库的隔离级别是 SI,建议参加下述活动,提出自己的需求哈:

1、跨数据中心方案

2、数据库隔离级别

3、“ 我的 TiDB 听我的” 活动:

1赞