跨数据中心部署方案

作为 NewSQL 数据库,TiDB 兼顾了传统关系型数据库的优秀特性以及 NoSQL 数据库可扩展性,以及跨数据中心(下文简称“中心”)场景下的高可用。本文档旨在介绍跨数据中心部署的不同解决方案。

三中心部署方案

TiDB, TiKV, PD 分别分布在 3 个不同的中心,这是最常规,可用性最高的方案。

优点

所有数据的副本分布在三个数据中心,任何一个数据中心失效后,另外两个数据中心会自动发起 leader election,并在合理长的时间内(通常情况 20s 以内)恢复服务,并且不会产生数据丢失。

缺点

性能受网络延迟影响。

对于写入的场景,所有写入的数据需要同步复制到至少 2 个数据中心,由于 TiDB 写入过程使用两阶段提交,故写入延迟至少需要 2 倍数据中心间的延迟。

对于读请求来说,如果数据 leader 与发起读取的 TiDB 节点不在同一个数据中心,也会受网络延迟影响。

TiDB 中的每个事务都需要向 PD leader 获取 TSO,当 TiDB 与 PD leader 不在同一个数据中心时,它上面运行的事务也会因此受网络延迟影响,每个有写入的事务会获取两次 TSO。

读性能优化

如果不需要每个数据中心同时对外提供服务,可以将业务流量全部派发到一个数据中心,并通过调度策略把 Region leader 和 PD leader 都迁移到同一个数据中心(我们在上文所述的测试中也做了这个优化)。这样一来,不管是从 PD 获取 TSO 还是读取 Region 都不受数据中心间网络的影响。当该数据中心失效后,PD leader 和 Region leader 会自动在其它数据中心选出,只需要把业务流量转移至其他存活的数据中心即可。

两地三中心部署方案

两地三中心的方案与三数据中心类似,算是三机房方案根据业务特点进行的优化,区别是其中有两个数据中心距离很近(通常在同一个城市),网络延迟相对很小。这种场景下,我们可以把业务流量同时派发到同城的两个数据中心,同时控制 Region leader 和 PD leader 也分布在同城的两个数据中心。

与三数据中心方案相比,两地三中心有以下优势:

写入速度更优

两中心同时提供服务资源利用率更高

依然能保证任何一个数据中心失效后保持可用并且不发生数据丢失

但是,缺陷是如果同城的两个数据中心同时失效(理论上讲要高于异地三数据中心损失 2 个的概率),将会导致不可用以及部分数据丢失。

两数据中心 + binlog 同步方案

两数据中心 + binlog 同步类似于传统的 MySQL 中 master/slave 方案。两个数据中心分别部署一套完整的 TiDB 集群,我们称之为主集群和从集群。正常情况下所有的请求都在主集群,写入的数据通过 binlog 异步同步至从集群并写入。

当主集群整个数据中心失效后,业务可以切换至从集群,与 MySQL 类似,这种情况下会有一些数据缺失。对比 MySQL,这个方案的优势是数据中心内的 HA — 少部分节点故障时,通过重新选举 leader 自动恢复服务,不需要人工干预。

另外部分用户采用这种方式做双数据中心多活,两个数据中心各有一个集群,将业务分为两个库,每个库服务一部分数据,每个数据中心的业务只会访问一个库,两个集群之间通过 binlog 将本数据中心业务所涉及的库中的数据变更同步到对端机房,形成环状备份。

注意:

在两数据中心 + binlog 同步部署方案中,数据中心之间只有 binlog 异步复制。在数据中心间的延迟较高的情况下,从集群落后主集群的数据量会增大。当主集群故障后(DR),会造成数据丢失,丢失的数据量受网络延迟等因素影响。

高可用和容灾分析

对于三数据中心方案和两地三中心方案,我们能得到的保障是任意一个数据中心故障时,集群能自动恢复服务,不需要人工介入,并能保证数据一致性。注意各种调度策略都是用于帮助性能优化的,当发生故障时调度机制总是第一优先考虑可用性而不是性能。

对于两数据中心 + binlog 同步的方案,主集群内少量节点故障时也能自动恢复服务,不需要人工介入,并能保证数据一致性。当整个主集群故障时,需要人工切换至从集群,并可能发生一些数据丢失,数据丢失的数量取决于同步延迟,和网络条件有关。

mysql集群跨地域同步部署_跨地域冗余 - 跨数据中心部署方案 - 《TiDB v2.1 用户文档》 - 书栈网 · BookStack...相关推荐

  1. mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...

    数学函数 abs(double a) 功能: 返回参数的绝对值 返回类型:double类型 使用说明:使用该函数需要确保函数的返回值是整数. acos(double a) 功能: 返回参数的反余弦值 ...

  2. dateutil 日期计算_日期时间 - 日期时间工具-DateUtil - 《Hutool 参考文档》 - 书栈网 · BookStack...

    日期时间工具-DateUtil 由来 考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装.这其中的封装主要是日期和字符串 ...

  3. mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查

    现象 环境: Server version: 10.0.25-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e 配置文件: [root@node-2 ...

  4. mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...

    前言: 数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性? 1 半同步复制 简单的说就是: 主库发生增删改操作的时候,会等从库及时复制了并且通知了主库, 才会把这 ...

  5. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...

    Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...

  6. mysql 中间件 租户管理_多租户的设计与实现 - 《Gaea - MySQL 中间件》 - 书栈网 · BookStack...

    多租户的设计与实现 背景 gaea多租户是为了实现一套gaea集群,可以接入多个业务系统的不同数据库,方便部署.运维.gaea多租户为软多租户,一个租户称为一个namespace,多个namespac ...

  7. emqtt数据存储mysql,数据存储 - MongoDB 消息存储 - 《EMQ X Enterprise v3.0 中文文档》 - 书栈网 · BookStack...

    MongoDB 消息存储 配置 MongoDB 消息存储 配置文件: emqx_backend_mongo.conf 配置 MongoDB 服务器 支持配置多台 MongoDB 服务器连接池:## M ...

  8. 华润大学ldap账号是什么_认证配置 - 接入 LDAP / AD 域账号(Beta) - 《KubeSphere v2.1 使用手册》 - 书栈网 · BookStack...

    接入 LDAP / AD 域账号(Beta) 如果您的企业使用 LDAP 作为用户认证系统,您可以在 KubeSphere 中通过脚本配置内置的 OpenLDAP 接入您的 LDAP 用户系统,从而允 ...

  9. MySQL集群搭建——主从同步(一主二从)

    一.安装MySQL数据库 Centos7安装MySQL5.7 目前准备了三台服务器作为主从配置数据库 #主 192.168.159.100:3306 #从 192.168.159.101:3306 # ...

最新文章

  1. 暑期集训1:C++STL 例1:UVA-10815
  2. 树莓派应用实例3:环境光照强度测量
  3. WINCE的内存配置
  4. PDF文件转jpg格式图片
  5. asp.net导出GridView数据到Excel
  6. 文献记录(part88)--Robust clustering using a kNN mode seeking ensemble
  7. java基础试题_Java基础测试题带答案
  8. mysql alisql,Mysql-03. ubuntu 安装 alisql
  9. Web防火墙(WAF)是什么?和传统防火墙区别是什么?
  10. 被黑客入侵了怎么办_被黑客入侵后该怎么办
  11. 6.3.1广度优先搜索
  12. mysql循环方法总结
  13. 向着阳光的华为,淬火而行的哪吒
  14. 气象站的技术参数有哪些?
  15. Codeforces: TMT Document
  16. java管理系统界面_java编程实现一个学生信息管理系统的图形界面
  17. Android推送服务(2)微信智能心跳方案
  18. VC操作Excel之sercies、Trendline
  19. 功分器,双工器,耦合器,合路器,环形器
  20. 揭秘《铃芽之旅》动画电影幕后特效制作细节

热门文章

  1. C++中引用传递与指针传递区别(进一步整理)
  2. 初级程序员需要接触好的架构代码
  3. @Value和Hibernate问题
  4. mac cad石材填充图案_CAD电视背景墙画法步骤
  5. 前端常见的加密算法介绍
  6. java中大数开方_大数开方(Java版)
  7. 云计算系统是大规模计算机系统吗,云计算的系统架构及技术探析
  8. JSP 插入到数据库的数据出现 “SQLServerException: 将截断字符串或二进制数据” 错误解决方案
  9. 浅析inline-block--使用inline-block创建布局
  10. 玩转异步 JS :async/await 简明教程(附视频下载)