数据备份成功后,您可以根据业务需要,手动清理备份的数据。
手动清理方式主要通过 ALTER SYSTEM
命令删除指定的 backup_set_id
、backup_piece_id
、backup_round_id
或者过期的数据。
清理前准备
手动清理已经过期的备份数据前,需要先配置备份数据的过期时间和清理策略,即配置 backup_dest_option
配置项中的 recovery_window
和 auto_delete_obsolete_backup
。
配置 recovery_window
和 auto_delete_obsolete_backup
的示例如下:
obclient> ALTER SYSTEM SET backup_dest_option='log_archive_checkpoint_interval=5s&recovery_window=7d&auto_delete_obsolete_backup=false&log_archive_piece_switch_interval=120s&backup_copies=2';
示例中:
log_archive_checkpoint_interval
用于控制日志备份的时间间隔。如果不通过
backup_dest_option
配置项设置,则默认使用集群级别的配置项log_archive_checkpoint_interval
的值。如果backup_dest_option
和log_archive_checkpoint_interval
均未设置,则使用默认值120s
。建议使用backup_dest_option
配置项来设置日志备份的时间间隔。recovery_window
用于控制备份数据的保留时间。如果不通过
backup_dest_option
配置项设置,则默认使用集群级别的配置项backup_recovery_window
的值。如果backup_dest_option
和backup_recovery_window
均未设置,则使用默认值0
,表示备份数据不过期。建议使用backup_dest_option
配置项来控制备份数据的保留时间。对于手动清理的场景,备份数据过期后,您可以手动清理过期的备份数据。
auto_delete_obsolete_backup
用于控制是否自动删除过期的备份数据。如果不通过
backup_dest_option
配置项设置,则默认使用集群级别的配置项auto_delete_expired_backup
的值。如果backup_dest_option
和auto_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_copies
设置为1
,则在清理备份时,系统不会考虑备份备份是否已成功;如果backup_copies
设置为2
,则仅当成功备份备份数据到backup_backup_dest
后才会自动删除backup_dest
下的备份。
更多 backup_dest_option
配置项的使用说明,请参见《参考指南(MySQL 模式)》 或《参考指南 (Oracle 模式》文档中 backup_dest_option 章节。
清理指定的备份数据
使用 sys 租户的 root 用户登录数据库。
分别查询视图
CDB_OB_BACKUP_SET_DETAILS
和CDB_OB_BACKUP_PIECE_FILES
,找到待删除的备份数据的backup_set_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
的数据obclient> ALTER SYSTEM DELETE BACKUPSET backup_set_id;
例如,执行以下命令,表示删除
backup_set_id
为1
的备份数据。obclient> ALTER SYSTEM DELETE BACKUPSET 1;
使用
DELETE BACKUPSET
命令清理备份时,有以下限制:当待删除的
backup_set_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同时,删除数据的原则是,至少保留一份完整的有效备份数据。当待删除的backup_set_id
所在的路径与backup_dest
配置项中设置的备份目的端不相同时,不支持保留一份有效备份数据的限制。当待删除的
backup_set_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同时,仅支持backup_set
的顺序删除。例如,对于backup_set_id
为1
、2
、3
的backup_set
,必须先删除1
后,再删除2
和3
。当待删除的backup_set_id
所在的路径与backup_dest
配置项中设置的备份目的端不相同时,删除backup_set
的顺序不受限制。删除不存在的
backup_set_id
会失败,删除正在备份的backup_set_id
也会失败。
清理指定
piece_id
的归档数据obclient> ALTER SYSTEM DELETE BACKUPPIECE piece_id;
使用
DELETE BACKUPPIECE
命令清理备份时,有以下限制:不允许删除处于非 Frozen、非 Inactive 状态的
backup_piece
。当
piece_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同,且已有的备份数据没有完全覆盖backup_piece
时,对应的piece_id
不允许删除。当piece_id
的backup_dest
与backup_dest
配置项中设置的备份目的端不相同时,无论已有的备份数据是否完全覆盖backup_piece
,对应的piece_id
均可以删除。当
piece_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同时,仅支持piece_id
的顺序删除,防止用户因删除backup_piece
造成日志不连续。例如,对于piece_id
为1
、2
、3
的backup_piece
,必须先删除1
后,再删除2
和3
。当piece_id
的backup_dest
与backup_dest
配置项中设置的备份目的端不相同时,删除piece_id
的顺序不受限制。
清理指定
round_id
的日志备份的 Round 中的所有数据obclient> ALTER SYSTEM DELETE BACKUPROUND round_id;
使用
DELETE BACKUPROUND
命令清理备份与使用DELETE BACKUPPIECE
命令的限制一致:不允许删除处于非 Stop 状态的
backup_round
。当
round_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同,且已有的备份数据没有完全覆盖backup_round
时,对应的round_id
不允许删除。当round_id
的backup_dest
与backup_dest
配置项中设置的备份目的端不相同时,无论已有的备份数据是否完全覆盖backup_round
,对应的round_id
均可以删除。当
round_id
的backup_dest
与backup_dest
配置项中设置的备份目的端相同时,仅支持round_id
的顺序删除,防止用户因删除backup_round
造成日志不连续。例如,对于round_id
为1
、2
、3
的backup_round
,必须先删除1
后,再删除2
和3
。当round_id
的backup_dest
与backup_dest
配置项中设置的备份目的端不相同时,删除round_id
的顺序不受限制。
清理过期的备份数据
使用 sys 租户的 root 用户登录数据库。
执行以下命令,立即清理过期的备份数据。
obclient> ALTER SYSTEM DELETE OBSOLETE;
DELETE OBSOLETE
命令的使用限制如下:如果没有有效的
backup_set
或者仅有一份有效的backup_set
,则日志归档的数据切分 Piece 后不能被清理。DELETE OBSOLETE
命令仅支持删除过期的备份数据,且过期数据所在的路径需要与配置项backup_dest
的设置相同。对于更换过备份目的端的过期数据,请参见本节 清理指定备份的备份数据 中的内容。DELETE OBSOLETE
命令不支持删除备份的备份数据。如果
backup_copies
的个数未达到backup_dest_option
配置中backup_copies
配置项设置的个数,则不能清理数据。