数据备份成功后,您可以根据业务需要,手动清理备份的备份数据。
清理前准备
手动清理已经过期的备份的备份数据前,需要先配置备份的备份数据的过期时间和清理策略,即配置 backup_backup_dest_option
配置项中的 recovery_window
和 auto_delete_obsolete_backup
。
配置 recovery_window
和 auto_delete_obsolete_backup
的示例如下:
obclient> ALTER SYSTEM SET backup_backup_dest_option='recovery_window=14d&auto_delete_obsolete_backup=false';
示例中:
recovery_window
用于控制备份的备份数据的保留时间。如果不通过
backup_backup_dest_option
配置项设置,则默认使用集群级别的配置项backup_recovery_window
的值。如果backup_dest_option
和backup_recovery_window
均未设置,则使用默认值0
,表示备份的备份数据不过期。建议使用backup_backup_dest_option
配置项来设置备份的备份数据的保留时间。对于手动清理的场景,备份的备份数据过期后,您可以手动清理过期的备份的备份数据。
auto_delete_obsolete_backup
用于控制是否自动删除过期的备份的备份数据。如果不通过
backup_backup_dest_option
配置项设置,则默认使用集群级别的配置项auto_delete_expired_backup
的值。如果backup_dest_option
和auto_delete_expired_backup
均未设置,则系统会使用默认值false
,表示不自动删除过期的备份数据,此处需要将auto_delete_obsolete_backup
设置为false
。建议使用backup_backup_dest_option
配置项来控制是否自动删除过期的备份数据。
更多 backup_backup_dest_option
配置项的说明信息,请参见《参考指南(MySQL 模式)》 或《参考指南 (Oracle 模式)》文档中 backup_backup_dest_option 章节。
清理指定备份的备份数据
使用 sys 租户的 root 用户登录数据库。
分别查询视图
CDB_OB_BACKUP_SET_DETAILS
和CDB_OB_BACKUP_PIECE_FILES
,找到待删除的备份数据对应的backup_set_id
、copy_id
、piece_id
和round_id
。CDB_OB_BACKUP_SET_DETAILS
和CDB_OB_BACKUP_PIECE_FILES
视图各字段的详细说明请参见《参考指南(MySQL 模式)》文档中 oceanbase.CDB_OB_BACKUP_SET_DETAILS 和 oceanbase.CDB_OB_BACKUP_PIECE_FILES 章节。根据清理场景,选择合适的命令,清理备份的备份数据。
清理指定
<backup_set_id,copy_id>
的数据obclient> ALTER SYSTEM DELETE BACKUPSET backup_set_id COPY copy_id;
对于不切分 Piece 的场景,即
backup_dest_option
中log_archive_piece_switch_interval
参数的值为0
,则系统会删除有效备份之外的 Clog 数据;对于切分 Piece 的场景,即backup_dest_option
中log_archive_piece_switch_interval
参数的值不为0
,则系统不会删除对应的 Clog 数据。注意
由于指定的
backup_set_id
不会区分全量备份和增量备份,即全量备份和增量备份均可以删除,在手动清理数据时,请注意保证数据的完整性。如果不小心删除了增量备份所依赖的备份,则导致对应backup_set
的恢复不可用。使用
DELETE BACKUPSET
命令清理备份的备份数据时,有以下限制:当待删除的
<backup_set_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端相同时,删除数据的规则是,至少保留一份完整的有效的备份数据。当待删除的<backup_set_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端不相同时,不支持保留一份有效备份的备份数据的限制。当待删除的
<backup_set_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端相同时,仅支持<backup_set_id,copy_id>
的顺序删除。当待删除的<backup_set_id,copy_ id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端不相同时,删除<backup_set_id,copy_id>
的顺序不受限制。删除不存在的
<backup_set_id,copy_id>
会失败,删除正在备份的<backup_set_id,copy_id>
也会失败。
清理指定
<piece_id,copy_id>
的归档数据obclient> ALTER SYSTEM DELETE BACKUPPIECE piece_id COPY copy_id;
使用
DELETE BACKUPPIECE
命令清理备份归档数据时,有以下限制:不允许删除处于非 Frozen 、非 Inactive 状态的
<piece_id,copy_id>
。当待删除的
<piece_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端相同,且已有的备份数据没有完全覆盖backup_piece
时,对应的<piece_id,copy_id>
不允许删除。当待删除的<piece_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端不相同时,无论已有的备份数据是否完全覆盖backup_piece
,对应的<piece_id,copy_id>
均可以删除。当待删除的
<piece_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端相同时,仅支持<piece_id,copy_id>
的顺序删除。当待删除的<piece_id,copy_id>
的backup_dest
与backup_backup_dest
配置项中设置的备份目的端不相同时,删除<piece_id,copy_id>
的顺序不受限制。