本文由云+社区发表
本文作者:许中清,腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为,2015年加入腾讯,参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据库、数据库集群、新型数据库架构等领域。目前担任CynosDB的分布式存储CynosStore负责人。

CynosDB for PostgreSQL是腾讯云自研的一款云原生数据库,其主要核心思想来自于亚马逊的云数据库服务Aurora。这种核心思想就是“基于日志的存储”和“存储计算分离”。同时,CynosDB在架构和工程实现上确实有很多和Aurora不一样的地方。

下图为CynosDB for PostgreSQL的产品架构图,CynosDB是一个基于共享存储、支持一写多读的数据库集群。

CynosDB for PostgreSQL产品架构图

CynosDB基于CynosStore之上,CynosStore是一个分布式存储,为CynosDB提供坚实的底座。CynosStore由多个Storage Node和CynosStore Client组成。CynosStore Client以二进制包的形式与DB(PostgreSQL)一起编译,为DB提供访问接口,以及负责主从DB之间的日志流传输。除此之外,每个Storage Node会自动将数据和日志持续地备份到腾讯云对象存储服务COS上,用来实现PIT(Point In Time)功能。

CynosStore会为每一个数据库分配一段存储空间,我们称之为Pool,一个数据库对应一个Pool。数据库存储空间的扩缩容是通过Pool的扩缩容来实现的。一个Pool会分成多个Segment Group(SG),每个SG固定大小为10G。我们也把每个SG叫做一个逻辑分片。一个Segment Group(SG)由多个物理的Segment组成,一个Segment对应一个物理副本,多个副本通过RAFT协议来实现一致性。Segment是CynosStore中最小的数据迁移和备份单位。每个SG保存属于它的数据以及对这部分数据最近一段时间的写日志。

CynosStore 数据组织形式

图二中CynosStore一共有3个Store Node,CynosStore中创建了一个Pool,这个Pool由3个SG组成,每个SG有3个副本。CynosStore还有空闲的副本,可以用来给当前Pool扩容,也可以创建另一个Pool,将这空闲的3个Segment组成一个SG并分配个这个新的Pool。

数据库用户有可能因为某种原因需要回到过去某个时间点的数据库快照,CynosDB提供快照备份特性,满足用户的回档需求。当然,可以回到过去的时间段总是有限的,这取决于快照备份的存储空间成本。CynosStore通过持续不断地将各个SG上的数据和日志备份到腾讯云对象存储服务COS上。其中,基础数据的快照根据一定频率定期备份,而日志则从RAFT状态机中源源不断地向COS备份。为了避免备份本身对SG的同步日志过程产生影响, SG会先将日志持久化到所在Store Node的本地存储,然后通过Journal Backup Service将本地Journal上传到COS。每个SG向COS备份的过程是完全独立并互不依赖的。每个SG备份时的故障处理也是独立的。

CynosStore即时恢复

相比SG的备份,一个数据库实例回档到某个时间点的过程要复杂得多,因为回档过程必须保证这个Pool的所有SG回到同一个快照点。当CynosStore接收到一个回档Pool的请求,CynosStore会根据这个Pool上所有SG备份的日志信息找到并计算出与这个时间点对应的VDL。这个计算的依据是每个SG的日志中会定期不断地加入一个时间戳日志。每个SG根据需要回档的时间点和Pool全局VDL找到时间上最接近的前一个快照以及相应的日志文件。然后根据快照和日志重放SG,各个SG重放过

程互不依赖。这个回档过程借助Replayer Service服务来完成,其根据某个SG的快照数据和日志重放到给定的一致性点,并将新产生的快照数据上传到COS。然后由META Center在CynosStore中构建新的Pool和新的SG,通知新SG leader从COS获取刚刚生成的快照数据,这样就完成了一个SG的回档。当这个Pool上所有的SG的回档完成,那么这个Pool的回档也就完成了。

此文已由作者授权腾讯云+社区发布


自研数据库CynosDB存储系统如何实现即时恢复相关推荐

  1. 免费报名 | 腾讯云自研数据库CynosDB交流会

    本文由云+社区发表 作者:技术沙龙 All in 云+时代,数据库的高可用性.按需付费.按需扩展等属性解放了大批开发者.腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原生数 ...

  2. 为什么腾讯云要自研云原生数据库 CynosDB?

    IT正以前所未有的速度驱动着时代的发展,深刻地改变着人类的生活,作为面向未来的IT形式,云计算重新定义了科技创新与企业发展的基础动力.11月22日,腾讯云宣布新一代自研云原生数据库CynosDB正式发 ...

  3. 腾讯自研云原生数据库CynosDB发布 兼容MySQL和PostgreSQL

    云数据库的战争已经打响,云计算走向成熟的过程中,也让云数据库脱离逐渐脱离稚嫩,有了可以和传统数据库软件叫板的资格,不过云数据库和传统数据库的发展各有千秋,最大区别在于适用场景不同. 雷锋网11月22日 ...

  4. 腾讯云发布新一代自研云原生数据库CynosDB

    11月22日消息,腾讯云宣布新一代自研云原生数据库CynosDB正式发布. 作为腾讯云在产品矩阵上的重要布局,CynosDB融合了传统数据库.云计算和新硬件的优势,支持无限量存储.百万级查询和秒级的故 ...

  5. 攻克数据库核心技术壁垒,腾讯云推出新一代企业级云数据库CynosDB

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ CynosDB是腾讯云自研的新一代高性能高可用的企业级分布式云数据库.融合了传统数据库.云计算与新硬件的优势,100%兼容开源数据库,百万级 ...

  6. 腾讯新一代企业级云数据库CynosDB(NewCDB)

    CynosDB产品简介 CynosDB,又称NewCDB,是由腾讯云和TEG基础架构部数据库技术团队联合打造的面向云计算2.0时代的新一代企业级分布式云数据库.在兼容开源数据库MySQL的生态体系下, ...

  7. 阿里云自研数据库支撑双11,助力电商客户订单峰值突破每秒20万笔

    简介:阿里云自研数据库产品家族全面支撑双11活动,帮助客户从容应对流量高峰. 记者采访获悉,日前阿里云自研云原生数据库PolarDB.云原生数据仓库AnalyticDB等数据库产品家族全面支撑双11活 ...

  8. 十年磨一剑!支付宝自研数据库OceanBase通过阿里云向全球开放

    近日,由支付宝自研的金融级分布式数据库OceanBase正式通过阿里云向全球开放,提供高可用.高性能.低成本的计算服务,企业可在云上获得"支付宝同款"的世界顶级数据库处理能力. 数 ...

  9. 蚂蚁金服自研数据库OceanBase如何登顶TPC-C

    10 月 2 日,国际事务处理性能委员会(TPC)宣布:在最新发布的 TPC-C 排行榜中,蚂蚁金服自研数据库 OceanBase 位列第一.InfoQ 记者第一时间采访到蚂蚁金服研究员.OceanB ...

最新文章

  1. 从IaaS到SaaS,腾讯二十年自研技术云上集结
  2. python网页爬虫-python网页爬虫浅析
  3. Error creating bean with name ‘multipartResolver‘: Lookup method resolution failed; 上传文件异常
  4. jquery easyui datagrid mvc server端分页排序筛选的实现
  5. sql语句提高数据库查询效率
  6. centos7限制cpu使用_CentOS7 CPU隔离配置
  7. 通用唯一识别码UUID
  8. linux数据库监听配了两个,Oracle数据库和监听随LINUX系统启动
  9. CTS(14)---Android O CTS 测试之Media相关测试小结(二)
  10. 仅能帮的(非技术分享)
  11. 1一10到时的英文单词_1到90的英语单词,1~10的英文单词!
  12. 机器智能-高频问题:一阶逻辑转化合取范式
  13. 斯卡布罗市集 (口哨/宁林 人声/宁林) - 韩乘光
  14. ECCV2022细粒度图像检索SEMICON学习记录
  15. 飞机黑匣子结构:拆解神秘的飞机黑匣子,看看里面的PCB和元器件都长什么样?...
  16. 树莓派4安装Debian10
  17. python 遍历列表中的每个元素 for循环 while循环 迭代器
  18. office2007各组件全面介绍
  19. 3.7 Feature envy(依恋情结)
  20. linux操作系统培训_免费在线技术培训丨SLE201v15 SUSE Linux Enterprise Server 15 管理课程...

热门文章

  1. windows无法验证发行者
  2. 软考系统集成项目管理工程师历年真题汇总(2020-2022)
  3. zigbee 问题一:协调器究竟如何选择信道?
  4. vue-router基本概念总结
  5. linux下创建文件和文件夹
  6. 阿里云服务 - Java实现短信验证码发送 --(完整教程)
  7. [转载]我的时间管理与方法论
  8. Grid Garden
  9. jq里的event对象
  10. VC6代码移植VS2008的SDK总结,包括OPENGL和DireX还有Cimage 【总结】