ITPub博客

首页 > 数据库 > 国内数据库 > TDSQL数据同步和备份

TDSQL数据同步和备份

原创 国内数据库 作者:腾讯云数据库 时间:2021-09-26 17:21:56 0 删除 编辑

TDSQL另外一个辅助特性:数据同步和备份。


# TDSQL数据同步组件


![file](http://image.openwrite.cn/24379_6139296C1B0749FE9F98FF88D8802D05)


**数据同步的重点分为三个场景:**


**第一个场景是一个数据汇总。**比如,多个数据库实例的数据同步到一个数据库实例,如保险行业用户多喜欢将全国多个区域数据库实例的数据同步到全国总库进行统计分析。


**第二个就是跨城的容灾。**跨城容灾,一般一个城市的分布式数据库的数据需要同步到另外一个城市异构的分布式数据库中做灾备。有的时候我们要做异构数据库的跨城容灾,比如说主城是一个十六节点的数据库,它非常庞大。但是备城,可能我们基于成本考虑,选用的设备数量、机房都要差一些。


比如灾备实例只有两个物理分片。一个是两分片数据库实例,而另外一个时十六分片的数据库实例。从十六分片同步到;两分片,这是一个异构的数据库的同步,这时候我们就需要利用数据同步这个组件。


**第三个是迁移。**异构数据库的迁移,将数据从TDSQL同步到MySQL、Oracle、PostgreSQL等数据库。当然,从TDSQL到TDSQL是一种同步方式,更有一种是TDSQL到其他异构数据库。举个例子,张家港农商行,它的核心系统需要从传统的国外商用数据库替换为TDSQL,可能还是需要做一定的风险的防范。


最终我们给了一套用Oracle作为TDSQL灾备示例的方案,通过数据同步组件,将TDSQL的数据准实时同步到Oracle。假如在极端情况下需要将业务切到Oracle,我们也是有这个能力的。


当然数据迁移也体现了TDSQL开放的思想,既然允许用户将数据迁移到TDSQL,如果有一天用户可能觉得TDSQL不是很好,觉得有更好的产品可以替代它,TDSQL支持用户把数据迁走。


# TDSQL数据备份


![file](http://image.openwrite.cn/24379_82229BE06AEC4FAF958D98F02B3751F4)


**TDSQL支持在线的实时热备,同时这个备份是基于备机上做的备份,备份支持镜像和binlog的备份。镜像又支持物理镜像和逻辑镜像(也叫物理备份和逻辑备份)。**


物理备份的好处是速度快,直接操纵物理文件,缺点是只能备份整个数据库实例,无法选择指定库表。逻辑备份的好处是通过SQL的方式备份,它可以选择单个库表备份,但是如果对整个实例备份效率不及物理备份。比如说有1T的数据,只有100兆是我的关键的数据,如果为了节省存储空间就没有必要用物理备份,就用逻辑备份,只备份我们关心的库表。


有了物理备份和逻辑备份之后,基于数据的镜像,再结合binlog轻松实现数据的定点恢复。对于binlog的备份TDSQL的Agent模块完成准实时的异步备份。比如说我们每天的0点备份镜像,同时各个时间段的binlog准实时备份。当需要恢复到一个早上6点的数据,利用0点的数据镜像再结合0点到6点的binlog,即可完成6点的数据恢复。


**备份是在备机上做不会影响主机。整个备份过程也是有监控有告警,实现整个备份过程的追踪。**


因为架构这一块内容确实是比较多,本次也作为所有TDSQL系列分享的一个前瞻,后面更多的系列分享会根据这门课的部分章节详细展开。这次分享主要是想帮助大家了解TDSQL的整体架构和模块划分,以及它的关键特性是如何设计,是基于什么样的考虑。听完本次分享再听后面的专题,会更容易去理解。


# Q&A


Q:TDSQL 1.0版本没有SQL引擎模块吧? 


A:最早在2002年的时候我们使用单机版MySQL作为数据存取服务,而后衍生出了TDSQL,这种计算存储相分离的架构,进而引入SQL引擎。


Q:请问存储节点的MySQL是使用官方原生的么 ? 


A:TDSQL在原生MySQL基础上做了大量调优,如线程池、强同步的优化,以及安全限制,分布式事务XA优化等等。


Q:银行核心要做到分库分表,开发的聚合查询如何实现?


A:SQL引擎屏蔽了分表的细节,让业务在逻辑上看到的和单节点模式一下一样,仍然是一张独立的库表。此外,SQL引擎会自动做数据聚合,业务开发不需要关心。


Q:a+3,如果掉失了,B和C节点都没有同步过来,怎么办?A机器已经已经无法恢复。


A:a+3如果没有被B,C确认,即不满足被多数派确认,是不会应答给业务成功的,最终会以超时的错误返回给业务。如果A机器无法恢复,这时新加入节点会通过物理拷贝方式最快速度“克隆”出一个备节点继续代替A节点提供服务。


Q:Shard版本的可以通过pt工具,或者gh-ost加字段不?会有什么限制不?


A:TDSQL管理台提供online ddl的功能,会自动对多分片做原子性变更,不需要业务再用第三方工具;分布式TDSQL在做DDL的时候不允许调整shardkey字段,比如原来以id作为shardkey,现在要调整成name作为shardkey,这样是不允许的。


Q:TDSQL Shard算法有几种?建表语句必须需要修改语法吗?


A:TDSQL shard算法对业务屏蔽,即基于MySQL分区表做的hash拆分(该算法不允许用户修改),这么做也是为了对业务屏蔽TDSQL分表细节。这里并不是限制用户只能做基于hash的分区,用户可以在TDSQL-shard的基础上做二级分区(比如:按照日期、时间)。建表以及使用方面的语法,后面有一门关于分布式开发的课程,敬请期待。


Q:谁来解决zk的可靠性?


A:一方面,zk自身做了高可用跨机房部署,同时奇数个zk部署当发生故障时只要剩余存活zk数量大于集群zk的一半,zk就可以继续提供服务;另外一方面,就算zk节点全部宕机,各个模块自身对zk也不是强依赖的,即zk在不工作的情况下,数据库实例的正常读写请求不会受到任何影响,只是不能处理切换、扩容等调度相关的触发式操作。


Q:老师刚才讲两种模式,如果是用Shard模式,应用层对Sql语法有要求?是我听错了吗? 


A:兼容MySQL 99%的SQL语法,shard模式与noshard模式最主要的区别是shardkey的引入。引入shardkey之后,为了发挥出shard模式下的性能优势,建议所有sql都带shardkey访问,同时在shard模式下,一些数据库的高级特性如:存储过程、触发器、视图等特性会受到一定的使用限制。更详细的内容后面会有专门的分布式开发的课程会专门介绍。


Q:分支到总行数据同步汇总,Oralce 同步到TDSQL是双向都支持么?


A:支持双向同步。这里的支持是有条件的,从TDSQL到Oracle是可以做到准实时同步,但是从Oracle到TDSQL目前还无法做到准实时同步,后续会支持。


Q:分布式表和非分布式表如何做join?


A:分布式TDSQL下存在两种表分别是大表和小表,大表就是shard表(分布式表),小表又叫广播表,会冗余到所有数据节点上。分布式表和非分布式表做join时,由于分布式表所在的物理节点上存在非分布式表的一份冗余,因而可以在单个数据节点上完成join。


Q:是否支持自建私有云?如果公有云,成本会不会上升?


A:支持私有云的,TDSQL大部分的银行客户都是采用私有云部署模式,并和外网隔离。公有云的成本相比私有云明显是前者更低,像私有云需要自建机房,搭建光纤设备,但是好处是独占物理硬件资源。公有云的话都是和公有云上的其他用户公用一套IDC、网络环境。


Q:是否支持K8S部署?


A:TDSQL自带了一键部署解决方案,不依赖K8S。


Q:分局分表支持大表关联查询吗?


A:支持的


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69940575/viewspace-2793858/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-08

  • 博文量
    188
  • 访问量
    82579