CockroachDB-备份与恢复(5)BACKUP命令
CRDB的BACKUP语句允许您创建集群模式和数据的完整或增量备份,这些备份与给定的时间戳一致。
您可以备份整个集群,包括:
- 相关系统表
- 所有数据库
- 所有表(自动包含它们的索引)
- 所有视图
- 所有预定的作业
你也可以备份:
- 一个单独的数据库,它包括所有的表和视图。
- 一个单独的表,其中包括它的索引和视图。
BACKUP只备份整个表;它不支持备份表的子集。
因为cockachdb设计了高容错性,所以这些备份主要用于通过RESTORE进行灾难恢复(即,如果您的集群失去了大部分节点)。孤立的问题(如小规模节点中断)不需要任何干预。
要查看使用backup语句创建的备份的内容,请使用SHOW backup。
考虑因素
恢复之前目标集群上的区域配置将在使用备份集群中的区域配置进行集群恢复时被覆盖。如果在进行备份时集群上没有定制的分区配置,那么在恢复之后,目标集群将使用RANGE DEFAULT配置中的分区配置。
使用exclude_data_from_backup参数从备份中排除表的行数据。
BACKUP是一个阻塞语句。要异步运行备份作业,请使用DETACHED选项。
存储考虑
备份和恢复不支持HTTP存储。
修改存储位置中的备份文件可能会使备份失效,因此会阻止恢复。
必需权限
全集群备份只能由管理角色的成员运行。默认情况下,root用户属于admin角色。
对于所有其他备份,用户必须对正在备份的所有对象具有读访问权。数据库备份需要CONNECT权限,表备份需要SELECT权限。用户定义模式的备份或包含用户定义类型的备份需要USAGE特权。
BACKUP要求对其目标目的地具有完全的读和写权限。
参数
cockachdb将完整备份存储在备份集合中。集合中的每个全量备份也可以有增量备份。
参数 | 描述 |
---|---|
targets | 备份目标。不指定代表备份整个集群。或者使用DATABASE {database_name}[,…]代表备份哪些库,使用TABLE {table_name}[,…]代表备份哪些表 |
subdirectory | 指定集合中增量备份的名称(例如,2011/03/23 -213101.37)。要查看可用的备份子目录,请使用SHOW BACKUPS IN collectionURI。如果没有提供备份子目录,则增量备份将存储在集合URI根目录的默认/incrementals目录中。警告:如果使用任意STRING作为子目录,将创建一个新的完全备份,但它永远不会显示在SHOW BACKUPS in中。我们不建议使用任意字符串作为子目录名。 |
LATEST | 将增量备份追加到最近完成的完整备份的子目录。 |
collectionURI | 要存储备份的URI。(或者,用于位置感知备份的默认位置。)有关此URL结构的信息,请参阅备份文件URL。 |
localityURI | 包含用于非默认位置的COCKROACH_LOCALITY参数的URI,该位置是单个位置感知备份的一部分。 |
timestamp | 备份从时间戳开始就存在的数据。时间戳必须比您的集群上一次垃圾收集(默认每25小时发生一次,但可以对每个表进行配置)更近。 |
backup_options | 使用这些选项的逗号分隔列表来控制备份行为。 |
backup_options备份选项
选项 | 值 | 描述 |
---|---|---|
revision_history | N/A | 创建一个具有完整修订历史的备份,它记录了垃圾收集周期内从给定时间戳开始(包括给定时间戳)对集群所做的每一个更改。 |
encryption_passphrase | STRING | 用于加密BACKUP语句生成的文件(BACKUP清单和数据文件)的密码短语。在使用该文件进行恢复时,解密该文件以及在使用SHOW backup时列出备份的内容都需要使用相同的密码短语。对于密码短语的长度没有实际的限制。 |
DETACHED | N/A | 当备份以DETACHED模式运行时,它将异步执行。任务ID将在备份任务创建完成后返回。注意,如果指定了DETACHED,则不会返回进一步的作业信息和作业完成状态。有关返回作业数据之间差异的更多信息,请参见下面的示例。要检查作业状态,请使用SHOW JOBS语句。要在事务中运行备份,请使用DETACHED选项。 |
kms | STRING | 密钥管理服务(KMS) URI(或以逗号分隔的URI列表),用于加密BACKUP语句生成的文件(BACKUP清单和数据文件)。在使用该文件进行恢复时,解密该文件以及在使用SHOW backup时列出备份的内容都需要相同的KMS URI。 |
incremental_location | STRING | 在与默认增量备份位置不同的位置创建增量备份。WITH incremental_location = 'explicit_incrementals_URI’请参阅使用显式指定目的地的增量备份。 |
备份文件URL
Location | Example |
---|---|
Amazon S3 | s3://acme-co/employees.sql?AWS_ACCESS_KEY_ID=123&AWS_SECRET_ACCESS_KEY=456 |
Azure | azure://acme-co/employees.sql?AZURE_ACCOUNT_NAME=acme-co&AZURE_ACCOUNT_KEY=url-encoded-123 |
Google Cloud | gs://acme-co/employees.sql?AUTH=specified&CREDENTIALS=encoded-123 |
HTTP | http://localhost:8080/employees.sql |
NFS/Local | nodelocal://1/path/employees,nodelocal://self/nfsmount/backups/employees |
功能细节
依赖对象必须与它们所依赖的对象同时备份,包括表相关的外键约束、sequence、视图
要从备份中排除表的行数据,请使用exclude_data_from_backup参数和CREATE table或ALTER table。
ALTER TABLE movr.user_promo_codes SET (exclude_data_from_backup = true);
性能
BACKUP进程通过将工作分配到所有节点,将其对集群性能的影响降到最低。每个节点只备份它所存储的数据的一个特定子集(它所服务的写入数据),没有两个节点备份相同的数据。
与任何读取一样,如果范围包含未处理的意图,BACKUP不能导出该范围。虽然您通常希望像BACKUP这样的大容量后台作业对前台流量的影响尽可能小,但更重要的是让备份实际完成(这将维护您的恢复点目标(RPO))。普通的读事务会阻塞直到它遇到的任何未提交的写都被解决,与之不同的是,BACKUP只会阻塞一个可配置的持续时间,然后调用优先级以确保它能按时完成。
我们建议总是以至少10秒前的特定时间戳启动备份。例如:
BACKUP...AS OF SYSTEM TIME '-10s';
这降低了BACKUP因为与其他语句/事务争用而被重试的可能性,从而提高了性能。但是,因为AS OF SYSTEM TIME返回的是历史数据,所以您的读取可能会过时。使用AS OF SYSTEM TIME '-10s’进行备份是减少可能遇到的仍在运行的事务数量的最佳实践,因为备份将具有优先级,并将在备份完成后强制仍在运行的事务重新启动。
BACKUP最初会要求各个范围进行备份,但如果它们遇到意图,则跳过。任何被跳过的范围都放在队列的末尾。当BACKUP完成了它的初始传递并重新访问范围时,它将要求在给定的时间限制(默认为1分钟)内没有处理的任何范围尝试处理它遇到的任何意图,并且不跳过。此外,备份的事务优先级被设置为高,这将导致其他事务中止,直到意图被处理和备份完成。
v22.1新增功能:如果备份作业在重试次数达到最大次数后继续遇到瞬时错误,则备份作业将暂停,而不是进入失败状态。暂停备份后,可以恢复备份或取消备份。
要设置写入每个备份文件的备份数据量的目标,可以使用bulkio.backup.file_size集群设置。
查看并控制备份任务
在cockachdb成功启动备份后,它将备份注册为一个作业,您可以执行以下操作:
- SHOW JOBS
- PAUSE JOBS
- RESUME JOBS
- CANCEL JOBS
备份示例
全量备份整个集群
BACKUP INTO 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s'
WITH revision_history,detached;
基于全量备份进行增量备份
BACKUP INTO LATEST IN 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s'
WITH revision_history,detached;
增量备份并指定增量备份目录
BACKUP INTO '/2021/11/23/inc_bk/1' IN 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s'
WITH revision_history,detached;
CockroachDB-备份与恢复(5)BACKUP命令相关推荐
- MongoDB备份与恢复(linux命令行实现)
1.mongodb数据库备份(mongodump) mongodump -h 193.112.168.19 -d Eatwhat -o /root/eatwhat -h: MongDB所在服务器地址, ...
- sql backup database备份d盘_Oracle RMAN备份与恢复
Oracle RMAN备份 Oracle RMAN备份集是用来存储数据库的备份信息,RMAN使用BACKUP命令对目标数据库进行数据备份. RMAN一个备份集可以存储一个或多个文件的备份信息,所以说备 ...
- RMAN backup recovery area 命令
一朋友问我一个问题: RMAN> BACKUP RECOVERY AREA; 这个命令备份哪些内容, 还真不太清楚. Google了一下. 这个命令是备份Flash recovery Area的 ...
- ch5 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- oracle物理备份与恢复,Oracle 备份与恢复概念原理学习
梳理下oracle中备份与恢复的概念原理--[@more@] 一.备份与恢复分逻辑和物理备份与恢复. 二.逻辑类:命令有EXP和IMP. 三.物理类:Noarchivelog和archivelog模式 ...
- mysql对数据库进行备份吗_怎么对MySQL数据库进行备份与恢复
MySQL的备份与恢复 前言:前面我们已经了解了 MySQL 数据库的安装及使用,但随着自动化办公与电子商务的不断发展,企业对信息系统的依赖性越来越高,而 数据库 在信息系统中担任着非常重要的角色.尤 ...
- MySQL性能调优与架构设计——第5章 备份与恢复
第5章 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 MySQL数据库的备 ...
- 对 Oracle 备份与恢复 的补充说明
之前曾整理过一片文章,来说明Oracle 的备份与恢复的. Oracle 备份 与 恢复 概述 http://blog.csdn.net/tianlesoftware/archive/2010/04/ ...
- MS SQL入门基础:sql 其它命令
4.7.1 BACKUP BACKUP 命令用于将数据库内容或其事务处理日志备份到存储介质上(软盘.硬盘.磁带).等SQL Server 7.0 以前的版本用的是DUMP 命令来执行此功能,从SQL ...
最新文章
- mysql pdo 查询一条数据_pdo mysql怎么输出第1条 第4条 第7条数据
- linux下ping不通问题的说明与解决(DNS配置丢失)
- Linux 系统如何调整时区和时间
- 从0到1构建美团压测工具
- 面试官又整新活,居然问我for循环用i++和++i哪个效率高?
- 你可能也看过这个生物学家转行后创造的价值 120 亿美元的动画
- mac、Linux SSH 阿里云 vultr免密登录服务器
- linux笔记 第十七天 加密技术、openssl详解
- 不善待小狗的主人畜生不如
- 流媒体服务器架设(转载)
- 二、Nginx 反向代理配置初学个人理解
- c# hdf5 写string_关于C#中读取HDF4文件数据的说明
- ERROR: Could not install Gradle distribution from ‘https://services.gradle.org/distributions/gradle-
- 汽车芯片严重短缺,价格全线上涨,“缺芯”仍将延续
- android edittext禁止输入特殊字符,Android edittext 禁止输入特殊字符/或者表情符的方案...
- 天津春考计算机学什么,2016天津春季高考计算机基础科目考试大纲
- 苹果列出了app被拒最常见原因,你中枪了吗?
- mysql 换文件夹_windows下更换MySql数据库数据文件夹位置
- GII全球创新指数2013-2020
- linux设备和驱动匹配的方法,Linux使用设备树的i2c驱动与设备匹配方式