基于MySQL的分布式数据库TDSQL十年锻造经验分享

下载 站:www.SyncNavigator.CN  客服QQ1793040
———————————————————-

关于HKROnline SyncNavigator 注册机价格的问题

 

最近一直在研究数据库同步的问题,在 上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心 友那里得知一款很好用的软件—— SyncNavigator。

好东西就要拿出来跟大家分享,所以今天向大家介绍一下这款软件,及其一些使用方法。下面先看看它有什么强大的功能吧!

SyncNavigator的基本功能:

自动同步数据/定时同步数据
无论是实时同步/24小时不间断同步,还是根据计划任务(每小时/每日/每周/等)定时自动同步都能完全胜任。

完整支持 Microsoft SQL Server
完整支持 Microsoft SQL Server 2000 2005 2008 数据库类型。并能在不同数据库版本之间相互同步数据。

支持 MySQL 4.1 以上版本
支持 MySQL 4.1 5.0 5.1 5.4 5.5。并能在不同数据库版本之间相互同步数据。

无人值守和故障自动恢复
当数据库故障或 络故障以后,无需人工干预(或操作)自动恢复同步并确保数据完全准确,可靠。

同构数据库同步/异构数据库同步
SQL Server to SQL Server, MySQL to MySQL, SQL Server to MySQL 等都能轻松实现。

断点续传和增量同步
当同步完成(或中断)后,再次同步时能继续上一次的位置增量同步,避免每次都需要从头开始的问题。

我来自腾讯TEG计费平台部,一开始负责公司整个计费体系的存储系统研发,现在主要负责TDSQL数据库的研发。这是我们产品的几个发展阶段:

到了2009年,考虑到这样的高一致性解决方案易用性并不好,我们基于类似思路做了一套KeyValue系统,这比研发一套SQL系统要简单很多,但依然有一个问题,KV系统不像SQL是标准化的东西,而且功能没有SQL丰富,所以业务系统从SQL迁移到KV存储,相当于存储架构都改了。而我们线上业务是7*24服务的,所以改造及迁移工作量也比较大,推广时间周期依然长。

所以这也是我们为什么将TDSQL在腾讯云上开发出来的一个目的,就是希望TDSQL在近十年在腾讯海量数据运营下走过的弯路、以及解决的问题,在其它团队不要再走一遍。

刚开始我们是定位金融这一块,这当中有几个问题必须要解决,一是高可用问题,二是数据可靠性、零丢失的问题。因为之前在行业内做分布式数据库的人认为,MySQL体系做不到数据零丢失或者是主备之间数据的一致性,但其实这个东西是没什么问题的,是完全可以做到的,看看我们是怎么做这个点的。

 强同步更新流程

这是我们自己实测的结果,TPS下降非常快,所以我们做了两个异步化处理。

 SET结构

刚才我们在同城跨数据中心切换承诺的是40秒,为什么说是40秒呢们是分成了两部分,第一部分20秒是故障检测阶段,第二部分是服务恢复阶段,服务恢复阶段主要是根据Raft协议选主、等待数据回放完成等工作,我们保守一点承诺是20秒完成,不过在我们实际运营环境中,通常3-4秒就可以完成这些工作。相对来说,服务恢复阶段在业界是比较成熟的,理论也比较完备。

在这里我想重点要提一下故障检测阶段。其实故障检测是非常难的事情,首先我们都是基于X86的服务器,虽然现在服务器硬件一年比一年往上翻,性能越来越好,但实际上依然会有很多业务在上线时设计得不合理,每个用户来的时候都会做全表扫描,有时你根本防不胜防,如果稍微没注意放过去了就一下子把系统给冲垮了,整个数据库节点表现就是不可用了。

那么,在资源被消耗光的情况下要不要做切换业务看来,数据库基本上是不可用的,理论上是需要切换的,但是你切换后,发现没啥用,SQL请求里面又把新主机压垮了。

此外,我们现在普遍使用的SSD盘,SSD有一个问题是寿命的问题,坏也不是一下子突然坏了,这中间有一条曲线,IOPS和磁盘响应时间有一个逐渐变差的过程。那这种情况下怎么切,在什么时间点切换呢/p>

在故障检测这个点上,目前来看很难有统一的一个理论说怎么发现故障、怎么去切换,这是非常难的事情,更多还是经验方面的积累,我们秉承的原则还是:切换后,如果系统可用性能提升,才切,否则免切。这确实可以避免很多没有意义的切换。

2

主备高一致性保障 

 数据高可用性的保障机制(恢复)

故障检测时间是可以配置的,我们配置3秒钟一次监测,大概要连续6次出现异常情况才会去触发切换,而且连续6次的情况下还要匹配到自己内部的逻辑——是不是切换过去就能够解决问题,如果像刚才那种因为业务使用不当导致了系统数据库不用的话切过去也没什么用,在这种情况下不会做无谓的切换。

如果有时候系统出了问题可能会引发连续的切换,连续切换对系统也没什么好处,比如说我们切换了一次后,配置在未来的一段时间不会做切换,用这样的逻辑做判断。

整个切换流程是一个严谨的操作,每个操作是有顺序的,否则可能会出现双写的情况,这都是靠切换流程来保障。

通常同城三中心架构,每个数据中心都是对等平等的。一旦因为故障,导致主备发生切换,除非再次发生故障,我们不会主动切换回来,这是同城三中心高度对等架构的好处。

任何一个中心的节点都可以提供主服务,这种更加标准化的部署,运维可以做到自动化操作,对运维管理的复杂程度要稍微低些。

 可靠性保障体系

3

性能 

 性能指标:单节点

性能绝对数值本身没什么太大意义,不同的厂商可以用不同测试场景,发布对自己产品有利的数据。这里我想补充一点就是关于硬件。

硬件发展其实很快。大概两年前,我们自己内部用一个代 为Z3的服务器,大概1.3T SSD FusionIO卡。到了2017年年初,我们现在已经开始用上了TS85服务器,这种机型已经相当厉害了,是24个物理核,512G内存,4块1.8T NVME SSD卡,我们把它做成RAID 0,在数据库里很少有人说数据盘是用RAID 0的,但在我们架构里通常都是RAID 0。前提就是数据三副本,我们系统的可靠性及可用性不依赖单个副本,一个副本故障了就重新构建一个副本。

  • 基于Hint的读写分离

下面讲一下分布式实践。TDSQL一开始是定位在腾讯内部做计费、金融支付这类场景,是常见的OLTP场景。考虑到OLTP场景,一个系统的实时交易数据量并不会超级大,所以我们采用预分片的策略,一开始把数据帮你做好逻辑分片,例如设置为64个分片或者是128个分片,当然要做到1024个分片甚至更多都没什么问题,但通常来说用不了那么多分片。

 SQL支持

所以我们更加偏向于保守一些,而且尽量地把错误在前面开发测试阶段发现,而不是到生产的时候才处理,当然我们也在逐步放开一些限制,在系统层面去做好控制、确保安全。

2

分布式事务 

 分布式事务性能对比

 TDSQL整体视图

前面也提到了MySQL和Oracle对比生态系统不够完善,Oracle的配套工具相当完善,此外就像Oracle有很多专家,客户出了什么问题,ITPUB发个帖子说有没有专家过来帮我解决问题,就会有很多专家过来解决,在MySQL体系下还没有这样的方法去处理。

确实周边配套、内部监控的处理包括本身的优化没有提供很好的工具,所以在这方面我们也投入了很大的精力。如果做产品化的话,这是非常重要的过程,无论是公有云还是私有云,目前提供给腾讯内部的其它业务也是云方式,整个这一套东西部署进去就能实现DBaaS服务,你可以直接购买TDSQL的实例应用。

同城双中心没有什么很大的借鉴,这是微众银行最开始的架构。微众银行是全国第一家互联 新筹民营银行,所以是从零开始建构的,最开始的时候同城只有两个数据中心,最大的问题是出了故障时彼此都不知道到底是谁出了故障。

考虑到客户当前的数据中心及成本情况,更多的是客户会做两地三中心的架构,比如说深圳两个中心一主两备,通常在主数据中心会加一个备机,这个备机是为了做异步复制。

因为异步复制跟强同步复制本身上来说没有区别,所以异步大部分情况下数据也是最新的,如果真的主机出现故障要切换时会去优先选择本地备机,避免跨数据中心切换,如果数据确实跟其它的强同步节点最新的数据是一致的,当然没有异步节点也是没有什么问题的。

3

两地四中心(自动化切换的强同步架构) 

基于MySQL的分布式数据库TDSQL十年锻造经验分享

在腾讯内部通常就是这种部署架构,基本上能够满足大部分客户的需求。同城三个数据中心对等,任何数据中心及故障都能40秒内切换,数据零丢失,性能也稳定可靠,所以对业务来说是非常友好的。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8615 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月23日
下一篇 2018年11月24日

相关推荐