[TOC] # 清理备份数据 数据备份成功后,您可以根据业务需要,参考本节选择合适的操作进行备份数据的清理。 当前 OceanBase 数据库提供了以下三种方式清理备份数据: * 指定某一个备份的`backup_set_id`进行清理 * 手动触发过期数据的清理 * 自动进行过期数据的清理 ## 清理指定备份 1. 查询`CDB_BACKUP_SET_DETAILS`表,找到待删除的备份数据的`backup_set_id`。 `CDB_BACKUP_SET_DETAILS`表展示了历史上备份的`backup_set`信息,包括`backup_set_id`和`status`。 其中,`status`对应的状态目前有三种: * `COMPELETED`:表示备份数据清理完成 * `FAILED`:表示备份数据清理失败 * `DELETING`:表示某个`backup_set_id`的备份数据正在删除 2. 执行以下命令,清理备份数据。 ~~~ obclient> ALTER SYSTEM DELETE BACKUPSET backup_set_id; ~~~ 例如,执行以下命令,表示删除`backup_set_id`为`1`的备份数据。 ~~~ obclient> ALTER SYSTEM DELETE BACKUPSET 1; ~~~ **说明** 如果出现了`9044`的报错,则表示数据清理任务已开始,不允许再次发起清理任务。 ## 手动清理过期数据 1. 根据以下命令,设置备份数据的过期时间。 ~~~ ALTER SYSTEM SET backup_recovery_window = <过期时间>; ~~~ 其中,`backup_recovery_window`是一个配置项,用于表示成功备份的数据可以提供恢复的时间窗口,默认值为`0`,表示永久保留;建议设置为`'7d'`,表示备份数据保留一周后过期。对于手动清理的场景,备份数据过期后,您可以手动清理过期的备份数据。 示例如下: ~~~ obclient> ALTER SYSTEM SET backup_recovery_window = '7d'; ~~~ 2. 执行以下命令,立即清理过期的备份数据。 ~~~ obclient> ALTER SYSTEM SET DELETE OBSOLETE; ~~~ **说明** 如果出现了`9044`的报错,则表示数据清理任务已开始,不允许再次发起清理任务。 ## 自动清理过期数据 1. 根据以下命令,设置备份数据的过期时间。 ~~~ ALTER SYSTEM SET backup_recovery_window = <过期时间>; ~~~ 其中,`backup_recovery_window`是一个配置项,用于表示成功备份的数据可以提供恢复的时间窗口,默认值为`0`,表示永久保留;建议设置为`'7d'`,表示备份数据保留一周后过期。对于自动清理场景,备份数据过期后系统会自动清理备份的数据。 示例如下: ~~~ obclient> ALTER SYSTEM SET backup_recovery_window = '7d'; ~~~ 2. 执行以下命令,开启备份数据的自动清理功能。 ~~~ obclient> ALTER SYSTEM SET auto_delete_expired_backup = 'True'; ~~~ **说明** 如果出现了`9044`的报错,则表示数据清理任务已开始,不允许再次发起清理任务。