本节主要介绍如何使用 OceanBase 数据库的备份功能进行备份。

操作步骤

  1. 使用 sys 租户的 root 用户登录数据库。

  2. 配置备份目的端。

    目前,OceanBase 数据库支持 NFS 、OSS 文件系统和腾讯云 COS 作为备份目的地 。

    例如:

    • NFS

      1. obclient> ALTER SYSTEM SET backup_dest='file:///data/nfs/backup';
    • OSS

      1. obclient> ALTER SYSTEM SET backup_dest='oss://antsys-oceanbasebackup/backup_rd/?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx';
    • 腾讯云 COS

      1. obclient> ALTER SYSTEM SET backup_dest='cos://backup-1304745170/backup_rd/20210127?host=cos.ap-nanjing.myqcloud.com&access_id=xxx&access_key=xxx&appid=xxx';

      注意

      在使用腾讯云 COS 作为备份介质时,需要关闭 Bucket 的 List Cache,否则会导致备份报错。

  3. (可选)配置备份模式,并开启归档日志压缩功能。

    其中:

    • 备份模式目前支持 Optional 模式和 Mandatory 模式。

      • Optional 模式表示以用户业务优先。在该模式下,当备份(日志归档)来不及的情况下,日志可能来不及备份就回收了,可能会发生备份断流。

      • Mandatory 模式表示以备份优先。在该模式下如果备份跟不上用户数据的写入,可能会导致用户无法写入。

    • 日志压缩目前支持的压缩算法有:zstd_1.3.8 和 lz4_1.0,默认使用压缩算法 lz4_1.0。

    通过 Optional 模式备份,并开启归档日志压缩功能的示例如下:

    1. obclient> ALTER SYSTEM SET backup_log_archive_option = 'optional compression= enable';

    设置后,您可以根据业务需要动态修改备份模式和压缩算法,您可以执行以下命令修改压缩算法。

    1. obclient> ALTER SYSTEM SET backup_log_archive_option='mandatory compression= zstd_1.3.8';
    2. obclient> ALTER SYSTEM SET backup_log_archive_option='mandatory compression= lz4_1.0';

    说明

    配置后,如果需要关闭日志归档压缩:

    • 对于当前备份模式为 Optional 模式的场景,可以使用 ALTER SYSTEM SET backup_log_archive_option = 'compression= disable'; 命令直接关闭归档日志压缩功能,或者也可以使用 ALTER SYSTEM SET backup_log_archive_option = 'mandatory compression= disable'; 命令配置备份模式并关闭归档日志压缩功能。

    • 对于当前备份模式为 Mandatory 模式的场景,只能使用 ALTER SYSTEM SET backup_log_archive_option = 'mandatory compression= disable'; 命令配置备份模式并关闭归档日志压缩。

  4. 执行以下语句,启动日志备份。

    说明

    为了减少日志备份发起的耗时,建议在开启日志备份前进行一次转储,待转储完成后再备份。这是因为日志备份的起始位点是最近一次转储位点,转储以后可以减少日志备份启动的时间。转储相关操作请参见 手动触发转储

    1. obclient> ALTER SYSTEM ARCHIVELOG;

    启动成功后,OceanBase 数据库会自动将集群产生的事务日志定期备份到之前指定的备份目的地。

  5. 执行以下语句,确认日志备份任务是否已开始。

    1. obclient> SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG_SUMMARY;

    STATUSDOING 时,表示日志备份任务已开始。

  6. 在执行数据备份前,需要对集群发起一轮每日合并,并等待每日合并完成。

    1. 执行以下命令,发起合并。

      1. obclient> ALTER SYSTEM MAJOR FREEZE;
    2. 执行以下语句,查看合并进度。

      1. obclient> SELECT * FROM __all_zone WHERE name='merge_status';

      结果如下所示:

      1. +----------------------------+----------------------------+-------+--------------+-------+------+
      2. | gmt_create | gmt_modified | zone | name | value | info |
      3. +----------------------------+----------------------------+-------+--------------+-------+------+
      4. | 2020-05-26 17:50:11.107352 | 2020-05-26 17:50:45.871523 | | merge_status | 0 | IDLE |
      5. | 2020-05-26 17:50::11.109678 | 2020-05-26 17:50:55.780264 | zone1 | merge_status | 0 | IDLE |
      6. +----------------------------+----------------------------+-------+--------------+-------+------+

      infoIDLE 时,则表示合并结束。

  7. (可选)执行以下命令,设置备份的密码。

    1. obclient> SET ENCRYPTION ON IDENTIFIED BY 'password' ONLY
  8. 执行以下命令,发起数据备份。

    1. obclient> ALTER SYSTEM BACKUP DATABASE;

    备份过程中,您可以通过执行以下语句,在视图中查看备份任务的状态和详细信息:

    • 查看正在备份的任务

      1. obclient> SELECT * FROM CDB_OB_BACKUP_PROGRESS;
    • 查看备份任务的历史

      1. obclient> SELECT * FROM CDB_OB_BACKUP_SET_DETAILS;

      CDB_OB_BACKUP_SET_DETAILS 中,部分字段的说明如下表所示。

      字段

      说明

      OUTPUT_BYTES

      表示写在外部存储介质的数据量,单位为 Bytes。

      OUTPUT_RATE_BYTES

      表示 1 秒内上传的数据量,单位为 Bytes。

      COMPRESSION_RATIO

      表示压缩比例,计算公式:COMPRESSION_RATIO = OUTPUT_BYTES / INPUT_BYTES

      其中,INPUT_BYTES 是 OBServer 本次需要备份的数据的大小,故可以通过 COMPRESSION_RATIO 的值计算出 INPUT_BYTES 的值,即 INPUT_BYTES = OUTPUT_BYTES / COMPRESSION_RATIO

      OUTPUT_BYTES_DISPLAY

      对于 OUTPUT_BYTES 单位转换之后的展示,单位为 MB 、GB、TB 和 PB 中的一种。

      OUTPUT_RATE_BYTES_DISPLAY

      对于 OUTPUT_RATE_BYTES 单位转换之后的展示,单位为 MB、GB、TB 和 PB 中的一种。

      TIME_TAKEN_DISPLAY

      TIMESTAMP 的方式展示 COMPLETION_TIME - START_TIME