---
title: "通过命令行备份 | OceanBase 文档中心"
description: 通过命令行备份 本节主要介绍如何使用 OceanBase 数据库的备份功能进行备份。 全量备份 使用 root 用户登录数据库的 sys 租户。 配置备份目的端。 目前，OceanBase 数据库支持 NFS 和阿里云 OSS 作为备份目的地。 例如： NFS 注意 使用 NFS 作为备份目的端时，需要注意以下事项：…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 2.2.77 企业版 LTS

# 通过命令行备份

更新时间：2024-06-17 17:18:31

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

## 全量备份

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 配置备份目的端。

   目前，OceanBase 数据库支持 NFS 和阿里云 OSS 作为备份目的地。

   例如：

      - NFS

       > **注意**
       >
       >  
       >
       > 使用 NFS 作为备份目的端时，需要注意以下事项：
       >
       >  
       >      - 必须保证所有 OBServer 都挂载了同一个服务器的 NFS。同时，为保证备份的顺利进行，务必使用本文档中推荐的参数挂载 NFS。挂载 NFS 具体操作请参见 [部署 NFS 客户端](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000376730)。
       >      - `backup_dest` 的值不支持设置为带有问号（?）的字符串。
       >      - 设置备份目的端并开启备份后，备份文件通常存放在以集群名命名的目录中，同一备份目的端可以存放不同集群的备份文件。如果在设置目的端时，备份目的端所在的目录中出现了与当前集群名相同的目录，则要求该目录（以集群名命名的目录）为空。

       设置备份目的端的示例如下：

       ```sql
       obclient> ALTER SYSTEM SET backup_dest='file:///data/nfs/backup';

       ```
      - 阿里云 OSS

       当使用阿里云 OSS 作为备份目的端时，除了设置备份目的端，您还可以通过 `delete_mode` 参数来配置备份文件的清理模式。

       `delete_mode` 参数当前支持以下两种备份文件的清理模式：

            - `delete`：表示清理模式为直接删除满足要求的备份文件。

             配置为该模式后，当您通过自动或手动的方式清理备份文件时，对于满足清理要求的备份文件，系统会直接将其删除。该模式为默认的清理模式，如果不配置 `delete_mode` 参数，则使用默认清理模式 `delete`。
            - `tagging`：表示清理模式为对满足清理要求的备份文件设置 Tag，备份文件将仍然保留。

             配置为该模式后，当您通过自动或手动的方式清理备份文件时，对于满足清理要求的备份文件，系统会给这些文件设置标签，标签的 `key` 为 `"delete_mode"`， `value` 为 `"tagging"`，以便后续您可以通过设置的标签在 OSS 上对这些文件的生命周期进行管理。

       设置 `delete` 模式或 `tagging` 模式后，自动清理备份数据的相关操作请参见 [自动清理备份的数据](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000377198)；手动清理备份数据的相关操作请参见 [手动清理备份的数据](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000377199)。

       设置备份目的地并配置备份文件的清理模式的示例如下：

       ```sql
       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&delete_mode=delete';

       ```

       > **注意**
       >
       >  
       >
       > `backup_dest` 设置完成且发起过备份后，将无法再修改 `delete_mode` 参数的值。
 3. （可选）配置备份模式，并开启归档日志压缩功能。

   其中：

      - 备份模式目前支持 Optional 模式和 Mandatory 模式，如果不配置，默认为 Optional 模式。

            - Optional 模式表示以用户业务优先。在该模式下，当备份（日志归档）来不及的情况下，日志可能来不及备份就回收了，可能会发生备份断流。
            - Mandatory 模式表示以备份优先。在该模式下如果备份跟不上用户数据的写入，可能会导致用户无法写入。
      - 日志压缩目前支持的压缩算法有：zstd_1.3.8 和 lz4_1.0，默认使用压缩算法 lz4_1.0。

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

   ```sql
   obclient> ALTER SYSTEM SET backup_log_archive_option = 'optional compression= enable';

   ```

   设置后，您可以根据业务需要动态修改压缩算法，您可以执行以下命令修改压缩算法。

   ```sql
   obclient> ALTER SYSTEM SET backup_log_archive_option='optional compression= zstd_1.3.8';

   obclient> ALTER SYSTEM SET backup_log_archive_option='optional 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. 执行以下语句，启动日志备份。

   > **说明**
   >
   >  
   >
   > 为了减少日志备份发起的耗时，建议在开启日志备份前进行一次转储，待转储完成后再备份。这是因为日志备份的起始位点是最近一次转储位点，转储以后可以减少日志备份启动的时间。转储相关操作请参见 [手动触发转储](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000376775)。

   ```sql
   obclient> ALTER SYSTEM ARCHIVELOG;

   ```

   启动成功后，OceanBase 数据库会自动将集群产生的事务日志定期备份到之前指定的备份目的地。
 5. 执行以下语句，确认日志备份任务是否已开始。

   ```sql
   obclient> SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG;

   ```

   当 `STATUS`为 `DOING`时，表示日志备份任务已开始。
 6. 在执行数据备份前，需要对集群发起一轮合并，并等待合并完成。

   > **注意**
   >
   >  
   >
   > 仅当日志备份任务的 `STATUS`为 `DOING`时，才能开始数据备份。

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

        ```sql
        obclient> ALTER SYSTEM MAJOR FREEZE;

        ```
      2. 执行以下语句，查看合并进度。

        ```sql
        obclient> USE oceanbase;

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

        ```

        结果如下所示：

        ```sql
        +----------------------------+----------------------------+-------+--------------+-------+------+
        | gmt_create                 | gmt_modified               | zone  | name         | value | info |
        +----------------------------+----------------------------+-------+--------------+-------+------+
        | 2020-05-26 17:50:11.107352 |  2020-05-26 17:50:45.871523 |       | merge_status |     0 | IDLE |
        | 2020-05-26 17:50::11.109678 |  2020-05-26 17:50:55.780264 | zone1 | merge_status |     0 | IDLE |
        +----------------------------+----------------------------+-------+--------------+-------+------+

        ```

        当 `info`为 `IDLE`时，则表示合并结束。
 7. （可选）执行以下命令，设置备份的密码。

   ```sql
   obclient> SET ENCRYPTION ON IDENTIFIED BY 'password' ONLY;

   ```

   示例：

   ```sql
   obclient> SET ENCRYPTION ON IDENTIFIED BY '******' ONLY；

   ```

   > **说明**
   >
   >  
   >
   > 设置备份密码后，在未发起数据备份前，您可以通过断开会话再重新连接数据库的方式取消本次设置。
 8. 执行以下命令，发起数据备份。

   ```sql
   obclient> ALTER SYSTEM BACKUP DATABASE;

   ```

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

      - 查看正在备份的任务

       ```sql
       obclient> SELECT * FROM CDB_OB_BACKUP_PROGRESS;

       ```
      - 查看备份任务的历史

       ```sql
       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`。 |

## 增量备份

增量备份是从上一次全量备份或增量备份开始，备份所有修改后的宏块，即仅针对已备份数据的增量部分进行备份。例如，假设当前租户最近一次是全量备份数据 `full_backup_set`，系统就会备份最近一次 `full_backup_set` 之后修改的所有宏块；如果租户最近一次是增量备份数据 `inc_backup_set`，则系统就会备份最近一次 `inc_backup_set` 之后修改的所有宏块。

#### 说明

在执行增量备份前，请确保已经有全量备份存在。

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 执行以下语句，启动增量备份。

   ```sql
   obclient> ALTER SYSTEM BACKUP INCREMENTAL DATABASE;

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
