基于 TiDB v6.0 部署两地三中心
作者: 边城元元原文来源:https://tidb.net/blog/91a8cbdf
一、背景
二、准备知识
2.1 两地三中心
通常的两地三中心是 2 个城市 3 个中心是指生产中心、同城容灾中心、异地容灾中心
2.2 全球化思路
在全球目标地数据中心增加对应的 Region 副本,采用 Follower Read 从就近的副本读数据。
2.3 架构详解
2.3.1 架构图
这里是 5 个 TiKV 副本的集群节点说明参考下表:
全部 TiKV 节点放置规划表
2.3.2 Labels 设计
2.3.3 参数配置优化
启用 TiKV gRPC 消息压缩。server.grpc-compression-type: gzip
调整 PD balance 缓冲区大小,提高 PD 容忍度 schedule.tolerant-size-ratio: 20.0
调整 PD balance 缓冲区大小,提高 PD 容忍度,因为 PD 会根据节点情况计算出各个对象的 score 作为调度的依据,当两个 store 的 Leader 或 Region 的得分差距小于指定倍数的 Region size 时,PD 会认为此时 balance 达到均衡状态。 参考:https://docs.pingcap.com/zh/tidb/v6.0/three-data-centers-in-two-cities-deployment#两地三中心部署
2.4 安装集群
2.4.1 集群拓扑
cluster115.yaml
2.4.2 离线安装 TiDB v6.0
参考 https://tidb.net/blog/87a38392#离线安装 TiDBV6.0 https://tidb.net/blog/af8080f7#Cluster111
2.4.3 连接 TiDB
三、设置规则
3.1 单库两地三中心
3.1.1 架构图
场景说明:
某比赛历史数据排名相关( 通常是本赛季之前的要较大时间跨度的数据需求场景)
数据要求全球化全量数据
3.1.2 设置策略
策略描述:
Leader 节点在北京的 2 个 IDC 中的一个;
一共 5 个副本 其中有 4 个副本(包括 Leader )在北京的 2 个 IDC 中;
异地数据中心石家庄 IDC 有一个副本
3.1.3 建立库表
3.1.4 验证副本分布
从图中看出 5 个副本,北京的 2 个数据中心有 4 个副本(包括 Leader ),石家庄数据中心有一个 Follower 副本,符合预期!
3.1.5 下线 Leader 查看 Leader 漂移情况
下线 10.0.2.15:20163 华北区 bj2(数据中心的)一个节点。
注意:这里有个问题,就是中间下线北京数据中心的一个节点的时候,这个时候执行了上面的 sql 语句,查到了把 sjz 的副作为 Leader 的时刻点 ( 规则中`-dc=sjz` 即 Leader 节点能不放在 sjz 数据中心 ) ,节点下线完毕后,过一会 又重新选举 bj 的数据中心的副本为 Leader。这里的逻辑是不是需要优化一下。
3.1.6 增加副本放置在指定 IDC
3.1.6.1 扩容国外 TiKV 节点 拓扑如下
3.1.5.2 扩容 TiKV
虚拟机把其他的几个 store 停掉,才起来扩容的节点
3.1.7 修改副本放置策略
如果修改数据库使用的新的规则,则仅对新增表使用新的规则
如果修改数据库原绑定的策略,则会适用已有的表
3.1.8 增加副本放置在指定 IDC 后的验证副本数
##
3.1.9 开启 Follower read
注意:开启 tidb_replica_read = ‘leader-and-follower’; 原则上将可以实现就近读!
要想实现真正的就近读,需要使用就近的 TiDB 结合 Follower read。
3.2 多库两地三中心
crm(华北),mall(华南)
3.2.1 架构图
3.2.2 扩容 TiKV 节点
3.2.2.1 拓扑
3.2.2.2 扩容
3.2.3 设置策略
策略描述:
Leader 节点在香港的 2 个 IDC 中的一个;
一共 5 个副本 其中有 4 个副本(包括 Leader )在香港的 2 个 IDC 中;
异地数据中心深圳 IDC 有一个副本
3.2.3 建立库表
3.2.4 验证策略应用情况
3.3 目前已知 Placement Rules in SQL 特性存在以下限制
临时表不支持放置规则。
设置
PRIMARY_REGION
和REGIONS
时允许存在语法糖。但在未来版本中,我们计划为PRIMARY_RACK
、PRIMARY_ZONE
和PRIMARY_HOST
添加变体支持,见 issue #18030。不能通过放置规则语法配置 TiFlash 副本。
放置规则仅保证静态数据被放置在正确的 TiKV 节点上。该规则不保证传输中的数据(通过用户查询或内部操作)只出现在特定区域内。
四、总结
这次实践了 TiDB 两地三中心的部署及其全球化策略,为后面真实场景的使用 TiDB 做了预演,若如真实环境使用前需要做更多的准备如真实环境,数据模拟,压测等。
还需要考虑 PD 部署会不会成为瓶颈,TiDB-server 的部署方案等更多因素!
v6.0 以前的版本部署两地三中心需要使用 pd-ctl 比较麻烦,并且对指定位置放置指定数量的副本也无法做到。由此可见,Placement Rules in SQL 是很好的礼物!
谢谢 TiDB 产研的小伙伴们!
谢谢 TiDB 社区!
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/b2af4beb14f5311a7dae8c07e】。文章转载请联系作者。
评论