首批通过分布式安全可靠测评,为关键业务系统打造
自动清理备份的数据(集群级别)
更新时间:2026-07-03 18:10:40
备份成功后,您可以根据业务需要,开启自动清理功能,系统会自动清理满足要求的备份数据。当前仅支持集群级别备份数据的自动清理。
注意事项
由于日志归档数据的清理依赖数据的备份,在清理日志归档数据前,请确认已存在数据备份文件,如果没有数据备份文件,则无法清理日志归档数据。
自动清理仅支持清理配置项
backup_dest中设置的备份目的端的数据,对于更换备份目的端的场景,需要手动清理过期数据。自动清理会保留至少一份有效的备份数据,如果仅有一份有效的备份数据,则这份有效数据将一直不会过期。
对于备份目的端为 NFS 的场景,在进行备份数据的清理时,系统会直接删除满足要求的备份文件;对于备份目的端为 OSS 的场景,其备份文件的清理方式取决于
backup_dest中delete_mode参数的值,详细信息请参见 备份前准备。
通过配置项开启自动清理功能
通过配置项 backup_dest_option 开启自动清理功能(推荐)
使用
root用户登录数据库的sys租户。在配置项
backup_dest_option中添加清理策略的设置。备份数据的清理由配置项
backup_dest_option中的以下 2 个参数来控制:auto_delete_obsolete_backup参数和recovery_window参数,参数的配置方法及更多说明信息请参见 备份前准备。有关
backup_dest_option配置项的更多说明信息请参见 backup_dest_option。其中:
auto_delete_obsolete_backup参数该参数用于控制是否启动自动清理功能。自动清理场景下,设置
auto_delete_obsolete_backup=true表示启动自动清理功能后,系统将会自动清理过期的备份数据。recovery_window参数该参数用于控制备份数据可恢复的时间窗口,以及作为判断备份数据是否过期的依据。
通过
recovery_window判断数据备份过期的方式: 比满足当前时间 - 备份时间点 >= recovery_window条件的最新备份更早的所有备份都被视为过期。例如,设置
recovery_window='7d'表示从当前时间往前推,7 天内的数据保证可恢复,且与这 7 天数据恢复无关的备份数据将被视为过期的数据。下面通过一个简单的示例来说明设置
recovery_window后,哪些为过期的备份数据。假设当前的数据备份情况如下图所示。
自动清理场景下,系统按照一次全量备份+若干次增量备份来进行过期数据的清理,以上图为例:
第一组备份: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配置项后续将不再使用。
使用
root用户登录数据库的sys租户。根据以下命令,通过
backup_recovery_window配置项设置数据可恢复的时间窗口。obclient>ALTER SYSTEM SET backup_recovery_window = <可恢复时间窗口>;其中,
backup_recovery_window是一个配置项,功能与配置项backup_dest_option中的recovery_window参数相同。示例如下:
obclient> ALTER SYSTEM SET backup_recovery_window = '7d';执行以下命令,通过
auto_delete_expired_backup配置项开启备份数据的自动清理功能。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 字段来获取。具体方法如下:
使用 root 用户登录数据库的 sys 租户。
查询视图
oceanbase.CDB_OB_BACKUP_CLEAN_HISTORY,获取上一次自动清理成功的时间。例如如下:
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 备份(集群级别)。
后续操作
除了通过自动的方式清理备份数据外,您也可以手动清理备份数据。手动清理支持清理指定的备份数据以及清理过期的备份数据。详细信息请参见 手动清理备份的数据(集群级别)。
OceanBase 数据库支持取消清理备份数据,详细操作参见 停止清理备份数据(集群级别)。