CockroachDB-备份与恢复(1)备份架构

news2025/2/25 6:35:25

本文知识点来源于官网地址https://www.cockroachlabs.com/docs/stable/backup-architecture.html

CockachDB备份以作业的方式操作,作业是可能跨越多个SQL会话的长期运行操作。与常规SQL语句不同,BACKUP语句在作业工作流中执行。备份任务有四个主要阶段:

  • 创建作业
  • 解析
  • 导出数据
  • 写元数据

概述

CRDB在运行备份作业时执行以下任务:

  1. 验证BACKUP语句的参数,然后将它们写入描述备份的作业系统中的作业。
  2. 根据作业中记录的参数,以及在存储位置中找到的任何以前的备份,确定需要备份存储层中数据的哪个键跨度和时间范围。
  3. 指示集群中的各个节点分别读取这些键并将行数据写入备份存储位置。
  4. 记录关于备份到备份存储位置的任何附加元数据。

下图展示了在云存储中从BACKUP语句到完整备份的流程:
在这里插入图片描述

创建作业

我们使用以下语句来启动备份过程:

BACKUP DATABASE movr INTO 's3://bucket' WITH revision_history;

该语句请求对movr数据库进行完全备份,并带有revision_history选项。
cockachdb将验证BACKUP语句中传递的选项,并检查用户是否具有执行备份所需的权限。表与要备份的键跨度集一起标识。在本例中,备份将识别movr数据库中的所有表,并注意到需要使用revision_history选项。
作业创建阶段的最终目标是完成所有这些检查,并将备份作业应该完成的任务的详细信息写入作业记录。
如果请求了一个已分离的备份,那么backup语句就完成了,因为它已经创建了一个未提交但准备运行的备份作业。您将发现作为输出返回的作业ID。如果没有detached选项,作业将被提交,语句将等待返回结果,直到备份作业启动、运行和终止。
一旦作业记录被提交,即使客户端断开连接或处理backup语句的节点终止,集群也会尝试运行备份作业。从这一点开始,备份是一个持久化作业,集群中的任何节点都可以接管其执行,以确保其运行。作业记录将移动到系统作业表,以便节点认领它。

解析

一旦其中一个节点从系统作业表中声明了作业,它将获取作业记录的信息并概述计划。此节点成为协调器。在我们的示例中,Node 2成为协调器,并开始完成以下工作,以准备和解析分布式备份工作的目标:
测试到存储桶URL (‘s3://bucket’)的连接。
确定此备份的特定子目录,包括它是否应该从任何发现的现有目录中增量。
计算备份数据的键值,如果是增量备份,则计算时间范围。
确定要备份的键的leaseholder节点。
向将执行数据导出的节点(通常是leaseholder节点)提供计划。
为了绘制节点将写入数据的存储位置的目录,协调器标识备份的类型。这将确定用于存储备份文件的新(或编辑过的)目录的名称。例如,如果目标存储位置中存在现有的完全备份,那么即将进行的备份将是增量备份,因此在其中发现任何现有增量层之后追加到完全备份。

解析键和时间范围

在解析阶段,协调器将计算集群需要为此备份导出的所有必要的键的跨度及其时间范围。它根据哪个节点是该键跨度范围的租赁者来划分键跨度。每个节点上都有一个SQL处理器,用于处理协调器将传递给它的备份计划。通常,完成导出工作的是键范围的leaseholder节点上的备份SQL处理器。
每个节点的备份SQL处理器负责:

  1. 向存储层询问每个键跨度的内容。
  2. 从存储层接收内容。
  3. 将其写入备份存储位置或特定的位置。
    由于集群中的任何节点都可以成为协调器,所有节点都可以在备份期间负责导出数据,因此有必要使所有节点都可以连接到备份存储位置。

导出

一旦协调器向指定备份数据的每个备份SQL处理器提供了计划,备份数据的分布式导出就开始了。
在下面的图中,节点2和节点3包含R1和R2范围的租赁者。因此,在本例备份任务中,备份数据将从这些节点导出到指定的存储位置。
在处理过程中,节点向协调器发送跟踪其备份工作的进度数据。在图中,节点3将向节点2发送进度数据。然后,协调器节点将进度数据聚合到存储桶中的检查点文件中。检查点文件为备份提供了一个标记,以便在可重试状态后恢复备份,例如当它被暂停时。
在这里插入图片描述

写元数据

一旦每个节点完全完成了它们的数据导出工作,协调器将通过写入备份元数据文件来结束备份任务。在图中,节点2将R1的备份数据导出因为它是该范围的租赁者,该节点还将备份的元数据导出因为它也是协调器。
备份元数据文件描述备份包含的所有内容。也就是说,还原作业成功完成所需的所有信息。如果备份中没有元数据文件,则表示备份没有正确完成,并且无法恢复。
完全备份完成后,指定的存储位置将包含备份数据及其元数据,以便进行潜在的恢复。在将movr数据库后续备份到此存储位置之后,cockachdb将创建一个备份集合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CDMP考试时间与报名方式

CDMP“数据管理专业人士认证”证书国际通用,行业认可度极高,是一项涵盖学历教育、工作经验和专业知识考试在内的综合资格认证,也是 目前全球唯一数据管理方面权威性认证 。CDMP考试时间是什么时候?怎样报名?今天小编来…

C语言 =(按位与后赋值)^=(按位异或后赋值) |=(按位或后赋值)

&(按位与后赋值) x 0x02; x & 0x01; 按位与后的结果为:0x00 x 0x02; x & 0x01; 字符 & 的最早历史可以追溯到公元1世纪,最早是拉丁语et (意为and)的连写。最早的 & 很像 E 和 T 的组合,随着印刷技术的发展&…

[附源码]计算机毕业设计springboot付费自习室管理小程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计Django宠物领养与物品捐赠小程序

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

文件上传漏洞详解

文件上传漏洞详解1.文件上传漏洞1.1.文件上传漏洞定义1.2.文件上传漏洞原理1.3.文件上传思路1.3.1.常规类1.3.2.cms类1.3.3.编辑类1.3.4.其他类/CVE1.4.web界面存在的风险点1.5.文件上传实战思路2.文件上传绕过分类2.1.JS类防护2.1.1.前端验证  2.1.1.1.基本概念  2.1.1.2.…

普元中间件Primeton AppServer6.5部署SuperMap iServer

本文使用Windows环境普元中间件Primeton AppServer6.5(以下简称PAS)部署SuperMap iServer 一、部署前准备 本文使用SuperMap iServer 11.0.1(10.2.1版本同理可以使用) supermap-iserver-11.0.1-war.zip 安装完成的普元中间件PAS…

EEMD分解如何对IMF分量进行显著性检验?

EEMD简介 集合经验模态分解 (EEMD)方法是一种时间上局部的自适应时间序列分析技术, 适合于分析非线性、非平稳的时间序列. EEMD 方法改进了经验模态分解 (EMD)的 模态混叠问题 。EEMD 方法是利用多次测量取平均值的原理,通过在原数据中加入适当大小的白噪音来模拟多次观测的情…

【服务器数据恢复】hp服务器raid5磁盘掉线导致raid5不可用的数据恢复案例

服务器数据恢复环境: 惠普ML系列某型号塔式服务器,5块SAS硬盘组建raid5磁盘阵列。 服务器故障&分析: 服务器中的一块硬盘掉线,由于磁盘阵列的冗余特性,服务器正常运行,用户没有察觉。直到另外一块硬盘掉…

JVM垃圾回收算法

Java有着自己一套的内存管理机制,不需要开发者去手动释放内存,开发者只需要写好代码即可,运行过程中产生的垃圾都由JVM回收。那JVM都是用哪些算法进行垃圾回收呢? 标记-清除(Mark-Sweep)算法 标记-清除(Mark-Sweep)算法是最早出…

分布式 ID 生成系统 Leaf 的设计思路,源码解读

什么是分布式ID? ID 最大的特点是 唯一 而分布式 ID,就是指分布式系统下的 ID,它是 全局唯一 的。 为啥需要分布式ID呢? 这就和 唯一 息息相关了。 比如我们用 MySQL 存储数据,一开始数据量不大,但是业…

别再纠结线程池大小 + 线程数量了,没有固定公式的

可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 - 核心数 1I/O 密集型的程序 - 核心数 * 2 不会吧,不会吧,真的有人按照这个理论规划线程数? 线程数和CPU利用率的小测试 抛开一些操作系统,计算机原理不…

水资源税取水计量监管系统 取用水户水量在线监测平台 水资源远程实时监控管理系统

平升电子水资源税取水计量监管系统/取用水户水量在线监测平台/水资源远程实时监控管理系统适用于水资源管理部门对地下水和地表水的用水量、水位、水质进行监测,还可扩展远程或自动控制泵/闸/阀实现用水量控制。系统帮助管理部门掌握所辖区域内水资源取用水情况&…

打电话用蓝牙耳机什么牌子好?打电话清晰的蓝牙耳机推荐

随着蓝牙耳机的普及,我们可以享受到沉浸式的音乐。在不打扰任何人的情况下,尽情的享受,使用蓝牙耳机有时候避免不了来电,为了保证通话的清晰,许多人在选购的时候也会更加的看重麦克风,下面小编整理了几款打…

如何使用JMeter操作Elasticsearch

JMeter是Apache组织基于Java开发的压力测试工具,用于对软件做压力测试,Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎(简称ES),下面来展示最基本的用JMeter操作ES示例。 打开JMeter工具,在测试计划下添加“线程…

【金万维】使用天联高级版登录U8,进行凭证打印操作。

【操作步骤】 通过“天联高级版客户端”登录 U8,打印凭证步骤: 第一步:首先查看一下天联高级版客户端的打印参数是否如下图所示。 (一般软件初次安装后,默认即可。) 第二步:进入U8后&#xff0…

web概述20

MVC模式 MVC全名是Model View Controller是模型视图控制器的缩写,是一种软件设计典范,是一种架构型的模式,本身不引入新功能,只是帮助将开发的结构组织的更加合理。 它使用一种业务逻辑、数据、界面显示分离的方法,将…

麦芽糖-聚乙二醇-顺铂 cisplatin-PEG-maltose

麦芽糖-聚乙二醇-顺铂 cisplatin-PEG-maltose 中文名称:麦芽糖-顺铂 英文名称:maltose-cisplatin 别称:生物素修饰麦芽糖 生物素-麦芽糖 麦芽糖-聚乙二醇-顺铂 cisplatin-PEG-maltose 顺铂-PEG-麦芽糖 纯度:95% 存储条件…

电动车充电费到了涨价的时候了,低能源使用成本正在成为过去

电动汽车以省钱成为各个新能源汽车企业吹嘘的宣传点,然而电动汽车车主如今正面临公共充电桩短缺的问题,公共充电桩的建设跟不上电动汽车增长的速度,导致电动汽车车主充电难问题日益突出,解决这个问题就只能通过涨价来解决供应短缺…

ln命令应用

记录:352 场景:在CentOS 7.9操作系统上,使用ln命令创建软链接(symbolic links)和硬链接(hard links)。解决:Too many levels of symbolic links。 版本: 操作系统:CentOS 7.9 1.命令应用 (1)目录创建软…

mybatis-plus,sgg,杨bochao,p5完成

一 MyBatis-Plus简介 增强工具。只做增强不做改。 可以直接在mybatis的基础上整合mybatis-plus。此时并不会影响mybatis的功能,即mybatis原来的功能都在,该怎么用还怎么用。锦上添花的是还能使用mybatis-plus提供的:通用的mapper、通用的ser…