---
title: "自动清理备份的数据（集群级别） | OceanBase 文档中心"
description: 自动清理备份的数据（集群级别） 备份成功后，您可以根据业务需要，开启自动清理功能，系统会自动清理满足要求的备份数据。当前仅支持集群级别备份数据的自动清理。 注意事项 由于日志归档数据的清理依赖数据的备份，在清理日志归档数据前，请确认已存在数据备份文件，如果没有数据备份文件，则无法清理日志归档数据。 自动清理仅支持清理…
---
切换语言

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

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

# 自动清理备份的数据（集群级别）

更新时间：2026-07-03 18:10:40

备份成功后，您可以根据业务需要，开启自动清理功能，系统会自动清理满足要求的备份数据。当前仅支持集群级别备份数据的自动清理。

## 注意事项

- 由于日志归档数据的清理依赖数据的备份，在清理日志归档数据前，请确认已存在数据备份文件，如果没有数据备份文件，则无法清理日志归档数据。
 - 自动清理仅支持清理配置项 `backup_dest` 中设置的备份目的端的数据，对于更换备份目的端的场景，需要手动清理过期数据。
 - 自动清理会保留至少一份有效的备份数据，如果仅有一份有效的备份数据，则这份有效数据将一直不会过期。
 - 对于备份目的端为 NFS 的场景，在进行备份数据的清理时，系统会直接删除满足要求的备份文件；对于备份目的端为 OSS 的场景，其备份文件的清理方式取决于 `backup_dest` 中 `delete_mode` 参数的值，详细信息请参见 [备份前准备](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000945704)。

## 通过配置项开启自动清理功能

### 通过配置项 backup_dest_option 开启自动清理功能（推荐）

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 在配置项 `backup_dest_option` 中添加清理策略的设置。

   备份数据的清理由配置项`backup_dest_option` 中的以下 2 个参数来控制： `auto_delete_obsolete_backup` 参数和 `recovery_window` 参数，参数的配置方法及更多说明信息请参见 [备份前准备](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000945704)。

   有关 `backup_dest_option` 配置项的更多说明信息请参见 [backup_dest_option](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000944930)。

   其中：

      - `auto_delete_obsolete_backup` 参数

       该参数用于控制是否启动自动清理功能。自动清理场景下，设置 `auto_delete_obsolete_backup=true` 表示启动自动清理功能后，系统将会自动清理过期的备份数据。
      - `recovery_window` 参数

       该参数用于控制备份数据可恢复的时间窗口，以及作为判断备份数据是否过期的依据。

       通过 `recovery_window` 判断数据备份过期的方式： 比满足 `当前时间 - 备份时间点 >= recovery_window` 条件的最新备份更早的所有备份都被视为过期。

       例如，设置 `recovery_window='7d'` 表示从当前时间往前推，7 天内的数据保证可恢复，且与这 7 天数据恢复无关的备份数据将被视为过期的数据。

       下面通过一个简单的示例来说明设置 `recovery_window` 后，哪些为过期的备份数据。假设当前的数据备份情况如下图所示。

       ![自动备份清理图](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9039415461/p402766.png)

       自动清理场景下，系统按照一次全量备份+若干次增量备份来进行过期数据的清理，以上图为例：

            - 第一组备份：1 月 1 日全量备份 `backup_set 1`， 1 月 4 日增量备份 `backup_set 2`。
            - 第二组备份：1 月 7 日全量备份 `backup_set 3`，1 月 11 日增量备份 `backup_set 4`。
            - 第三组备份：1 月 14 日全量备份 `backup_set 5`。

       当前时间为 1 月 15 日，最早恢复点为 1 月 8 日，即 1 月 8 日～1 月 15 日的备份数据保证可恢复。 由于 1 月 11 日增量备份 `backup_set 4` 的恢复需要依赖 1 月 7 日的全量备份 `backup_set 3`，故系统会保留 `backup_set 3`，在 1 月 7 日之前的备份数据均视为已过期的备份数据，即第一组备份`backup_set 1` 和 `backup_set 2` 为过期的备份。当启动自动清理功能时，过期的备份数据将被清理。

       > **说明**
       >
       >  
       >
       > 如果您通过 OCP 创建备份策略并设置了全量备份周期，则您需要为备份预留的磁盘空间大小的计算方式如下（仅作为开启自动清理功能的参考）：
       >
       >  
       >
       > 备份需要预留的最小磁盘空间大小 = 最多可保留的全量数据备份所占用的磁盘大小 + 最多可保留的日志备份所占用的磁盘大小 + 需要额外预留的磁盘空间
       >
       >  
       >
       > 其中：
       >
       >  
       >      - 最多可保留的全量数据备份（单位：次）：recovery_window/全量备份周期 + 2
       >      - 最多可保留的日志备份（单位：天）：最多可保留的全量备份数 * 全量备份周期
       >      - 需要额外预留的磁盘空间：（保留的数据备份所占用的磁盘空间+保留的日志备份所占用的磁盘空间）* 30%
       >
       > 此外，由于该计算方式未考虑增量备份的场景，如果有增量备份，还需要加上全量备份之间的所有增量备份所占用的磁盘空间。

### 通过配置项 auto_delete_expired_backup 开启自动清理功能

> **注意**
>
>  
>
> 虽然集群级别配置项 `auto_delete_expired_backup` 也可以用来开启自动清理功能，但是在日常使用中，建议您使用 `backup_dest_option` 配置项来开启自动清理功能，因为 `auto_delete_expired_backup` 配置项后续将不再使用。

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 根据以下命令，通过 `backup_recovery_window` 配置项设置数据可恢复的时间窗口。

   ```sql
   obclient>ALTER SYSTEM SET backup_recovery_window = <可恢复时间窗口>;

   ```

   其中，`backup_recovery_window` 是一个配置项，功能与配置项 `backup_dest_option` 中的 `recovery_window` 参数相同。

   示例如下：

   ```sql
   obclient> ALTER SYSTEM SET backup_recovery_window = '7d';

   ```
 3. 执行以下命令，通过 `auto_delete_expired_backup` 配置项开启备份数据的自动清理功能。

   ```sql
   obclient> ALTER SYSTEM SET auto_delete_expired_backup = 'True';

   ```

### 自动清理的触发机制说明

开启备份数据的自动清理功能后，当数据清理的时间间隔满足以下条件时，系统就会触发一次自动清理：

`自动清理的时间间隔 = min(recovery_window/2, 1d)`

当 `当前时间 - 上一次自动清理成功的时间 > 自动清理时间间隔` 时，系统就会触发一次自动清理。通常情况下，自动清理任务执行的时间间隔最长不超过 1 天。

其中 ，`recovery_window` 参数的详细说明请参见本文 **通过配置项 backup_dest_option 开启自动清理功能** 中的介绍;`上一次自动清理成功的时间` 可以通过查询视图 `oceanbase.CDB_OB_BACKUP_CLEAN_HISTORY` 的 `END_TIME` 字段来获取。具体方法如下：

1. 使用 root 用户登录数据库的 sys 租户。
 2. 查询视图 `oceanbase.CDB_OB_BACKUP_CLEAN_HISTORY` ，获取上一次自动清理成功的时间。

   例如如下：

   ```sql
   obclient> SELECT * FROM oceanbase.CDB_OB_BACKUP_CLEAN_HISTORY WHERE tenant_id = 1 AND type = 'DELETE OBSOLETE BACKUP' AND ERROR_MSG='' ORDER BY END_TIME DESC LIMIT 1;
   +-----------+--------+---------+----------------------------+----------------------------+-------------+------------------------+--------+------------------+-----------+-------------------------------------------+
   | TENANT_ID | BS_KEY | COPY_ID | START_TIME                 | END_TIME                   | INCARNATION | TYPE                   | STATUS | PARAMETER        | ERROR_MSG | COMMENT                                   |
   +-----------+--------+---------+----------------------------+----------------------------+-------------+------------------------+--------+------------------+-----------+-------------------------------------------+
   |         1 |      3 |       0 | 2022-10-28 11:23:51.330579 | 2022-10-28 11:23:52.928141 |           1 | DELETE OBSOLETE BACKUP | STOP   | 1666927131324508 |           | server:xxx, trace_id:xxx                  |
   +-----------+--------+---------+----------------------------+----------------------------+-------------+------------------------+--------+------------------+-----------+-------------------------------------------+
   1 row in set

   ```

   查询结果中：

      - `BS_KEY` 表示清理任务的 Job ID。
      - `COPY_ID`：表示发起的清理任务的 copy_id，仅在使用备份清理命令清理指定备份的备份时，该字段才会为非 0。
      - `END_TIME` 表示清理任务结束的时间。
      - `STATUS`：表示清理任务的状态。进入历史视图的任务，`STATUS` 均为 `STOP`。
      - `ERROR_MSG`：记录清理任务失败信息的描述。如果清理任务成功，则该字段显示为空。

   如果查询结果为空，可能有以下两种情况：

      - 有清理任务正在执行，可以通过查看 `oceanbase.__all_virtual_backup_clean_info` 表来确认是否有清理任务正在被执行。待所有清理任务（包含手动和自动）全部执行完成，并且达到自动清理的时间间隔条件后，系统就会进行下一次的自动清理。
      - 从未进行过备份的自动清理，该情况下开启自动清理功能后，系统会立即进行一次备份的自动清理。

## 通过 OCP 开启自动过期备份清理开关

在 OCP 上创建备份策略时，您可以开启 **过期备份清理调度配置** 开关，待备份数据过期后系统会自动清理过期的数据。通过 OCP 创建备份策略的详细操作请参见 [通过 OCP 备份（集群级别）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946183)。

## 后续操作

除了通过自动的方式清理备份数据外，您也可以手动清理备份数据。手动清理支持清理指定的备份数据以及清理过期的备份数据。详细信息请参见 [手动清理备份的数据（集群级别）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946195)。

OceanBase 数据库支持取消清理备份数据，详细操作参见 [停止清理备份数据（集群级别）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946197)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
