手动清理方式主要通过 命令删除指定的 backup_set_idbackup_piece_idbackup_round_id 或者过期的数据。

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

配置 recovery_windowauto_delete_obsolete_backup 的示例如下:

示例中:

  • log_archive_checkpoint_interval 用于控制日志备份的时间间隔。

    如果不通过 backup_dest_option 配置项设置,则默认使用集群级别的配置项 log_archive_checkpoint_interval 的值。如果 backup_dest_optionlog_archive_checkpoint_interval 均未设置,则使用默认值 120s。建议使用 backup_dest_option 配置项来设置日志备份的时间间隔。

  • recovery_window 用于控制备份数据的保留时间。

    如果不通过 backup_dest_option 配置项设置,则默认使用集群级别的配置项 backup_recovery_window 的值。如果 backup_dest_optionbackup_recovery_window 均未设置,则使用默认值 0,表示备份数据不过期。建议使用 backup_dest_option 配置项来控制备份数据的保留时间。

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

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

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

  • log_archive_piece_switch_interval 用于控制自动按照时间段来切日志文件的目录,默认值为 0,表示不切分 Piece, 有效范围为 [1d, 7d]。

  • backup_copies 用于指定一个备份级的冗余度。默认值为 1。如果设置了 backup_backup_dest,建议该参数设置为 2,其有效范围为 [1,8]。

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

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

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

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

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

  2. 执行以下命令,立即清理过期的备份数据。

    1. obclient> ALTER SYSTEM DELETE OBSOLETE;

    DELETE OBSOLETE 命令的使用限制如下:

    • 如果没有有效的 backup_set 或者仅有一份有效的 backup_set,则日志归档的数据切分 Piece 后不能被清理。

    • DELETE OBSOLETE 命令仅支持删除过期的备份数据,且过期数据所在的路径需要与配置项 backup_dest 的设置相同。对于更换过备份目的端的过期数据,请参见本节 清理指定备份的备份数据 中的内容。