首批通过分布式安全可靠测评,为关键业务系统打造
自动清理过期备份
更新时间:2026-04-09 14:12:04
备份成功后,可以根据业务需要,为租户设置清理策略,设置了清理策略的租户将会每小时触发一次自动清理,以便过期的备份能够及时得到清理。
当前版本仅支持自动清理过期备份,不支持手动清理过期备份。
注意事项
由于日志归档数据的清理依赖数据的备份,在清理日志归档数据前,请确认已存在数据备份文件,如果没有数据备份文件,则无法清理日志归档数据。
自动清理仅支持清理
DATA_BACKUP_DEST和LOG_ARCHIVE_DEST中设置的备份目的端和归档目的端的数据,对于已被更换备份目的端或归档目的端的场景,原备份路径或归档路径下的数据将无法通过 OceanBase 数据库进行清理。自动清理会保留至少一份有效的备份数据,如果仅有一份有效的备份数据,则这份有效数据将一直不会被清理。
不同的备份介质,其备份的自动清理结果有所不同:
- 对于备份介质为 NFS 或兼容 S3 协议的对象存储(OBS、GCS 等) 的场景,在进行备份数据的清理时,系统会直接删除满足要求的备份文件。
- 对于备份目的端为 S3/COS(以 S3 协议访问) 的场景,其备份文件的清理方式取决于
data_backup_dest以及log_archive_dest中delete_mode参数的值,该参数的详细介绍,参见 SET LOG_ARCHIVE_DEST 和 SET DATA_BACKUP_DEST。
特别地,对于路径属性中配置了
enable_worm=true参数,在进行备份数据的自动清理时,系统将按照RECOVERY_WINDOW指定的时间选择满足条件的备份集进行清理,但最终能否成功清理与该路径对应的清理模式(delete_mode参数的值)以及对应 Bucket 的保留策略有关。注意
enable_worm=true参数适用于开启了合规保留策略(WORM)的场景。对于 V4.3.5 版本,OceanBase 数据库从 V4.3.5 BP2 版本开始支持将配置了 WORM 策略的阿里云 OSS Bucket 作为备份或归档路径。例如,某一备份集在
RECOVERY_WINDOW指定的时间之外,但其仍然在 WORM(Write Once Read Many)保留期内,则:如果该备份集的清理模式为
delete,则 OceanBase 数据库在清理该备份集时将会失败,需要等到该 Object 的保留期到期后,才能清理该备份集。如果该备份集的清理模式为
tagging,则 OceanBase 数据库会将该备份集打上 tag,最终由对象存储在生命周期结束并且过了 WORM 保留期后来执行删除。
设置清理策略
用户租户下设置清理策略
用户租户的租户管理员登录到数据库。
设置清理策略,相当于开启租户的自动清理功能。
语句如下:
obclient> ALTER SYSTEM ADD DELETE BACKUP POLICY policy_name RECOVERY_WINDOW recovery_window;其中:
POLICY参数用于指定清理策略名,当前仅支持设置为default,表示自动清理的范围仅为当前配置项data_backup_dest以及log_archive_dest中的备份。RECOVERY_WINDOW参数用于控制备份数据可恢复的时间窗口。更多该参数的详细说明请参见 recovery_window 参数介绍。
示例如下:
obclient> ALTER SYSTEM ADD DELETE BACKUP POLICY 'default' RECOVERY_WINDOW '7d';说明
自动清理任务由后台系统每小时定时触发,因此清理策略设置完成后,可能需要等待一段时间(不超过一小时)才能查询到相对应的清理任务。
系统租户下设置清理策略
使用
root用户登录集群的sys租户。设置清理策略,相当于开启租户的自动清理功能。
语句如下:
obclient> ALTER SYSTEM ADD DELETE BACKUP POLICY policy_name RECOVERY_WINDOW recovery_window TENANT tenant_name;其中:
POLICY参数用于指定清理策略名,当前仅支持设置为default,表示自动清理的范围仅为当前配置项data_backup_dest以及log_archive_dest中的备份。RECOVERY_WINDOW参数用于控制备份数据可恢复的时间窗口。更多该参数的详细说明请参见 recovery_window 参数介绍。TENANT参数用以指定清理策略生效的租户,需指定用户租户的租户名,且当前仅支持指定一个租户名。注意
当前仅支持设置租户级清理策略,不支持设置集群级清理策略,每条命令只能为一个租户设置一个清理策略。
系统租户为
MySQL租户指定清理策略的示例如下:obclient> ALTER SYSTEM ADD DELETE BACKUP POLICY 'default' RECOVERY_WINDOW '7d' TENANT MySQL;说明
自动清理任务由后台系统每小时定时触发,因此清理策略设置完成后,可能需要等待一段时间(不超过一小时)才能查询到相对应的清理任务。
查看已设置的清理策略
系统租户和用户租户均可以通过查询视图来获取当前已设置的所有清理策略。
系统租户或用户租户的租户管理员登录到数据库。
查看租户已设置的清理策略。
系统租户通过
oceanbase.CDB_OB_BACKUP_DELETE_POLICY视图查看所有租户清理策略。示例如下:
obclient> SELECT * FROM oceanbase.CDB_OB_BACKUP_DELETE_POLICY; +-----------+-------------+-----------------+ | TENANT_ID | POLICY_NAME | RECOVERY_WINDOW | +-----------+-------------+-----------------+ | 1002 | default | 7d | +-----------+-------------+-----------------+ 1 row in set用户租户通过
oceanbase.DBA_OB_BACKUP_DELETE_POLICY视图或sys.DBA_OB_BACKUP_DELETE_POLICY视图查看当前租户的清理策略。MySQL 租户
obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_BACKUP_DELETE_POLICY; +-------------+-----------------+ | POLICY_NAME | RECOVERY_WINDOW | +-------------+-----------------+ | default | 7d | +-------------+-----------------+ 1 row in setOracle 租户
obclient [SYS]> SELECT * FROM sys.DBA_OB_BACKUP_DELETE_POLICY; +-------------+-----------------+ | POLICY_NAME | RECOVERY_WINDOW | +-------------+-----------------+ | default | 7d | +-------------+-----------------+ 1 row in set