适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
问题现象
用户备份一段时间后报备份失败,失败原因为 4184,日志例子如下。
ob_backup_operator.cpp:432 [2424847][0][YB4215033905-0005EE859CFA71167-0-07 1lt=147「dc=07 batch report tenant backup task(sal=UPDATE __all_tenant_backup_task SET backu p_type ='D',device_type='oss',snapshot_version=1678585981452541,prev_ful1_backup_set_id =0,prev_inc_backup_set_id = 0,prev_backup_data_v ersion =0,pg_count =0,macro_block_count = 0,finish_pg_count = 0,finish_macro_block_count = 0,i nput_bytes = 0,output_bytes = 0,start_time =usec_to_time(1678585981452541),end_time = usec_to_time(1678586349174995),compatible = 4, cluster_ve wersion=12885033731,status ='FINISH’,result =-4184,cluster_id = 1661212657,backup_dest = 'oss://lj-jtoceanbase?host=xxxx.group.xxxx.com&access_id-09CKC8X6L1XP07XE4816&access_key=72rZBHKnVR0Cs1UtKorekpWC91PAyXRbMSq0f2NP', backup_data_versior on=169,backup.schema_version=1677759033289728,cluster_version_display ='12885033731(3,2,3, 3)7,partition_count=0, finish.partitioncount=0,start_replay_logts =0,date=20230312,backup_level='CLUSTER', encryption_mode = 'NONE', po Dasswd =WHERE tenant_id =1 AND backup_set_id =31 AND incarnation =1)
问题原因
备份任务要首先建立一个全局快照,在备份任务完成之前,全局快照不能被回收,也意味着相关的多版本数据不能被回收。因此,当磁盘空间使用率比较高的时候,有可能因为备份任务的全局快照数据的存在,导致磁盘空间超限。 对于磁盘空间的使用,OceanBase 数据库有自我保护机制,当某个节点的使用率超过 data_disk_usage_limit_percentage 的设置时,将触发备份任务失败,这是为了避免因为备份任务将磁盘空间占满导致其他任务无法执行。
解决方法
- 可以修改配置项
data_disk_usage_limit_percentage,但这样做存在将磁盘空间占满的风险。 - 建议优先通过迁移、扩容等方式,以降低磁盘空间的使用率。