本文由云+社区发表
本文作者:许中清,腾讯云自研数据库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. ZT:阿里合伙人发文:十年磨一剑,自研数据库终拿世界第一

    按:真正做技术的,就该这样. 以下为全文转载 (观察者网讯) 10月24日,阿里巴巴合伙人.高德总裁刘振飞在阿里云开发者社区发文,回忆从2009年启动“去IOE”工程到2019年OceanBase拿下 ...

  3. PostgreSQL Replication之第三章 理解即时恢复(4)

    3.4 重放事务日志 一旦我们创建了一个我们自己的初始基础备份,我们可以收集数据库创建的XLOG.当时间到时,我们可以使用所有这些XLOG 文件并执行我们所期望的恢复进程.这就像本节描述的一样工作. ...

  4. PostgreSQL Replication之第三章 理解即时恢复(3)

    3.3 做基础备份 在上一节中,您已经看到,启用归档只需要几行命令,并提供了极大的灵活性.在本节,我们将看到如何创建一个所谓的基础备份,稍后这可以使用XLOG.一个基本备份是一个最初的数据的拷贝. [ ...

  5. PostgreSQL Replication之第三章 理解即时恢复(1)

    到现在为止,您已经掌握了一定的理论.因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了. 本章的目标是让您明白如何恢复数据到一个给定的时间点.当您的系统崩溃或者有人意外地删除了一个表,不 ...

  6. [转帖]超详细的Oracle数据库在不同损坏级别的恢复总结

    超详细的Oracle数据库在不同损坏级别的恢复总结 原创 波波说运维 2019-07-20 00:02:00 概述 在 DBA 的日常工作中不可避免存在着数据库的损坏,今天主要介绍 Oracle 数据 ...

  7. ajax上传图片到数据库中(不会即时显示)

    一共三个页面 数据表结构 数据表内容 第一个页面 nicheng.html <!DOCTYPE html> <html> <head> <meta chars ...

  8. 通过自研数据库画像工具支持“去O”评估

    “去O”,是近些年来一直很火的一个话题,随之也产生了各种疑惑,包括现有数据库评估.技术选型等.去O是项系统工程,需要做好充分的评估.本文通过自研工具,生成数据库画像,为去O评估提供一手数据,希望给大家 ...

  9. 数据库中数据DELETE了怎样恢复

    USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date ...

随机推荐

  1. HTML/CSS初步了解

    一.CSS是什么? 它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示 ...

  2. 关于css兼容性问题及一些常见问题汇总

    目前主流浏览器的兼容性做的都比较好了,本文主要针对IE6,7的不兼容问题进行解决. 1.圆盘时钟有浮动存在时,计算一定要精确,不要让内容的宽高超出我们所设置的宽高,IE6下,内容会撑开设置好的高度. ...

  3. Process 'command 'D:\jdk8\jdk\bin\java.exe'' finished with non-zero exit value 2

    转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10539006.html 捣鼓了好久,现在已经不想说话,为何会出现这个问题,Process 'comman ...

  4. 教程二 网页和lua交互修改openwrt

    硬件 http://zhan.renren.com/h5/entry/3602888498044209332 GL-iNet 1 首先安装 webserver之lighttpd  ,openwrt自带 ...

  5. LOJ #6050. 「雅礼集训 2017 Day11」TRI

    完全不会的数学神题,正解留着以后填坑 将一个口胡的部分分做法,我们考虑计算格点多边形(包括三角形)面积的皮克公式: \[S=a+\frac{1}{2}b-1\text({a为图形内部节点个数,b为边界 ...

  6. 【死磕 Spring】----- IOC 之解析 bean 标签:开启解析进程

    原文出自:http://cmsblogs.com import 标签解析完毕了,再看 Spring 中最复杂也是最重要的标签 bean 标签的解析过程. 在方法 parseDefaultElement ...

  7. Android Studio导出JavaDoc时中文乱码问题解决

    导出过程中,如果出现JavaDoc中文乱码的问题,可以在Other command line arguments栏目添加命令参数:-encoding UTF-8 -charset UTF-8(如果是G ...

  8. Flarum轻量级论坛的安装

    论坛作为互联网中的远古产物,经历了如QQ群.社区和贴吧等新兴社交工具的冲击,依然能够存在,肯定是有着不可替代的用处,像吾爱.远景等论坛依旧火热.一些博客主也喜欢自己搭建一个论坛作为用户聚集之地. 之前 ...

  9. 【Android Studio安装部署系列】八、Android Studio主题皮肤更换

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio具有自己的主题皮肤,但是如果想要更换自己喜欢的主题皮肤,可以参考下面的步骤. 注意,更换主题皮肤,之前的 ...

  10. MaterialCalendarDialog【Material样式的日历对话框】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Material样式的日历对话框 前提条件:Activity界面必须继承FragmentActivity或者其子类(比如AppCom ...