数据备份成功后,您可以根据业务需要,手动清理备份的备份数据。

清理前准备

手动清理已经过期的备份的备份数据前,需要先配置备份的备份数据的过期时间和清理策略,即配置 backup_backup_dest_option 配置项中的 recovery_windowauto_delete_obsolete_backup

配置 recovery_windowauto_delete_obsolete_backup 的示例如下:

  1. 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_optionbackup_recovery_window 均未设置,则使用默认值 0,表示备份的备份数据不过期。建议使用 backup_backup_dest_option 配置项来设置备份的备份数据的保留时间。

    对于手动清理的场景,备份的备份数据过期后,您可以手动清理过期的备份的备份数据。

  • auto_delete_obsolete_backup 用于控制是否自动删除过期的备份的备份数据。

    如果不通过 backup_backup_dest_option 配置项设置,则默认使用集群级别的配置项 auto_delete_expired_backup 的值。如果 backup_dest_optionauto_delete_expired_backup 均未设置,则系统会使用默认值 false,表示不自动删除过期的备份数据,此处需要将 auto_delete_obsolete_backup 设置为 false。建议使用 backup_backup_dest_option 配置项来控制是否自动删除过期的备份数据。

更多 backup_backup_dest_option 配置项的说明信息,请参见《参考指南(MySQL 模式)》 或《参考指南 (Oracle 模式)》文档中 backup_backup_dest_option 章节。

清理指定备份的备份数据

  1. 使用 sys 租户的 root 用户登录数据库。

  2. 分别查询视图 CDB_OB_BACKUP_SET_DETAILSCDB_OB_BACKUP_PIECE_FILES,找到待删除的备份数据对应的 backup_set_idcopy_idpiece_idround_id

    CDB_OB_BACKUP_SET_DETAILSCDB_OB_BACKUP_PIECE_FILES 视图各字段的详细说明请参见《参考指南(MySQL 模式)》文档中 oceanbase.CDB_OB_BACKUP_SET_DETAILSoceanbase.CDB_OB_BACKUP_PIECE_FILES 章节。

  3. 根据清理场景,选择合适的命令,清理备份的备份数据。

    • 清理指定 <backup_set_id,copy_id> 的数据

      1. obclient> ALTER SYSTEM DELETE BACKUPSET backup_set_id COPY copy_id;

      对于不切分 Piece 的场景,即 backup_dest_optionlog_archive_piece_switch_interval 参数的值为 0,则系统会删除有效备份之外的 Clog 数据;对于切分 Piece 的场景,即 backup_dest_optionlog_archive_piece_switch_interval 参数的值不为 0,则系统不会删除对应的 Clog 数据。

      注意

      由于指定的 backup_set_id 不会区分全量备份和增量备份,即全量备份和增量备份均可以删除,在手动清理数据时,请注意保证数据的完整性。如果不小心删除了增量备份所依赖的备份,则导致对应 backup_set 的恢复不可用。

      使用 DELETE BACKUPSET 命令清理备份的备份数据时,有以下限制:

      • 当待删除的 <backup_set_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端相同时,删除数据的规则是,至少保留一份完整的有效的备份数据。当待删除的 <backup_set_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端不相同时,不支持保留一份有效备份的备份数据的限制。

      • 当待删除的 <backup_set_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端相同时,仅支持 <backup_set_id,copy_id> 的顺序删除。当待删除的 <backup_set_id,copy_ id>backup_destbackup_backup_dest 配置项中设置的备份目的端不相同时,删除 <backup_set_id,copy_id> 的顺序不受限制。

      • 删除不存在的 <backup_set_id,copy_id> 会失败,删除正在备份的 <backup_set_id,copy_id> 也会失败。

    • 清理指定 <piece_id,copy_id> 的归档数据

      1. obclient> ALTER SYSTEM DELETE BACKUPPIECE piece_id COPY copy_id;

      使用 DELETE BACKUPPIECE 命令清理备份归档数据时,有以下限制:

      • 不允许删除处于非 Frozen 、非 Inactive 状态的 <piece_id,copy_id>

      • 当待删除的 <piece_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端相同,且已有的备份数据没有完全覆盖 backup_piece 时,对应的 <piece_id,copy_id> 不允许删除。当待删除的 <piece_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端不相同时,无论已有的备份数据是否完全覆盖 backup_piece,对应的 <piece_id,copy_id> 均可以删除。

      • 当待删除的 <piece_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端相同时,仅支持 <piece_id,copy_id> 的顺序删除。当待删除的 <piece_id,copy_id>backup_destbackup_backup_dest 配置项中设置的备份目的端不相同时,删除 <piece_id,copy_id> 的顺序不受限制。