• 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_historyN/A创建一个具有完整修订历史的备份,它记录了垃圾收集周期内从给定时间戳开始(包括给定时间戳)对集群所做的每一个更改。
    encryption_passphraseSTRING用于加密BACKUP语句生成的文件(BACKUP清单和数据文件)的密码短语。在使用该文件进行恢复时,解密该文件以及在使用SHOW backup时列出备份的内容都需要使用相同的密码短语。对于密码短语的长度没有实际的限制。
    DETACHEDN/A当备份以DETACHED模式运行时,它将异步执行。任务ID将在备份任务创建完成后返回。注意,如果指定了DETACHED,则不会返回进一步的作业信息和作业完成状态。有关返回作业数据之间差异的更多信息,请参见下面的示例。要检查作业状态,请使用SHOW JOBS语句。要在事务中运行备份,请使用DETACHED选项。
    kmsSTRING密钥管理服务(KMS) URI(或以逗号分隔的URI列表),用于加密BACKUP语句生成的文件(BACKUP清单和数据文件)。在使用该文件进行恢复时,解密该文件以及在使用SHOW backup时列出备份的内容都需要相同的KMS URI。
    incremental_locationSTRING在与默认增量备份位置不同的位置创建增量备份。WITH incremental_location = 'explicit_incrementals_URI’请参阅使用显式指定目的地的增量备份。

    备份文件URL

    LocationExample
    Amazon S3s3://acme-co/employees.sql?AWS_ACCESS_KEY_ID=123&AWS_SECRET_ACCESS_KEY=456
    Azureazure://acme-co/employees.sql?AZURE_ACCOUNT_NAME=acme-co&AZURE_ACCOUNT_KEY=url-encoded-123
    Google Cloudgs://acme-co/employees.sql?AUTH=specified&CREDENTIALS=encoded-123
    HTTPhttp://localhost:8080/employees.sql
    NFS/Localnodelocal://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);
    
    • 1

    性能

    BACKUP进程通过将工作分配到所有节点,将其对集群性能的影响降到最低。每个节点只备份它所存储的数据的一个特定子集(它所服务的写入数据),没有两个节点备份相同的数据。
    与任何读取一样,如果范围包含未处理的意图,BACKUP不能导出该范围。虽然您通常希望像BACKUP这样的大容量后台作业对前台流量的影响尽可能小,但更重要的是让备份实际完成(这将维护您的恢复点目标(RPO))。普通的读事务会阻塞直到它遇到的任何未提交的写都被解决,与之不同的是,BACKUP只会阻塞一个可配置的持续时间,然后调用优先级以确保它能按时完成。

    我们建议总是以至少10秒前的特定时间戳启动备份。例如:

    BACKUP...AS OF SYSTEM TIME '-10s';
    
    • 1

    这降低了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;
    
    • 1
    • 2
    • 3

    基于全量备份进行增量备份

    BACKUP INTO LATEST IN 'nodelocal://1/windbackup'
     AS OF SYSTEM TIME '-10s'
    WITH revision_history,detached;
    
    • 1
    • 2
    • 3

    增量备份并指定增量备份目录

    BACKUP INTO '/2021/11/23/inc_bk/1' IN 'nodelocal://1/windbackup'
     AS OF SYSTEM TIME '-10s'
    WITH revision_history,detached;
    
    • 1
    • 2
    • 3
  • 相关阅读:
    c++ MFC CString 字符串转BYTE数组
    matlab线性规划与整数规划方法
    10-11 周三 shell xargs tr curl 做大事情
    WordPress批量给没有图片的文章自动添加图片配图
    盛元广通农业种子检测实验室信息化管理系统LIMS
    Learning Transferable Features with Deep Adaptation Networks
    MS2400隔离式调制器可pin对pin兼容AD7400
    面向对象(构造方法、封装、继承、多态、接口和抽象类的区别)
    react中在js文件里定义的变量,如何在less文件里去使用该变量
    【2024秋招】2023-8-5-小红书-数据引擎团队后端开发提前批面经
  • 原文地址:https://blog.csdn.net/Post_Yuan/article/details/128109225