正常情况下,会有一个 OceanBase 备份文件清理任务定期执行。备份文件超过了预设数量,猜测可能是文件清理任务出现问题。
作者:何文超,爱可生南区交付服务部 DBA 团队成员。主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。
爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
本文约 1500 字,预计阅读需要 5 分钟。
问题背景
客户 OceanBase 集群的备份策略是每天全备,备份文件最近保留 4 天。经过观察,实际保留的备份文件多大 13 个,导致磁盘空间占用较高。
问题排查
正常情况下,会有一个备份文件清理任务定期执行。备份文件超过了预设数量,猜测可能是文件清理任务出现问题。
1. 备份文件的清理任务
先看一下自动清理时间间隔的计算公式:
自动清理的时间间隔 = min(recovery_window/2, 1d)
故正常每天会发起一次备份文件的清理任务。
注意:对于 oceanbase-3.1.2-20211230114204 之前的版本(不含该版本),自动清理的时间间隔为 recovery_window/2。
备份文件的清理任务卡住了!
信息采集时间为 22 日。
发现 19 日发起备份清理任务,22 日还未完成,判断为清理任务卡住了。
MySQL [oceanbase]> select * from __all_tenant_backup_clean_info;
+----------------------------+----------------------------+-----------+--------+----------------------------+----------------------------+-------------+------------------------+--------+------------------+-----------+---------+------------------+--------+---------+
| gmt_create | gmt_modified | tenant_id | job_id | start_time | end_time | incarnation | type | status | parameter | error_msg | comment | clog_gc_snapshot | result | copy_id |
+----------------------------+----------------------------+-----------+--------+----------------------------+----------------------------+-------------+------------------------+--------+------------------+-----------+---------+------------------+--------+---------+
| 2021-03-19 14:18:50.841475 | 2024-10-19 00:28:50.021733 | 1 | 1187 | 2024-10-19 00:28:49.998736 | 2024-10-19 00:27:09.663132 | 1 | DELETE OBSOLETE BACKUP | DOING | 1728923329993025 | | | 1728845993342237 | 0 | 0 |
| 2024-10-19 00:28:50.030195 | 2024-10-19 00:28:50.030195 | 1001 | 1187 | 2024-10-19 00:28:49.998736 | 2024-10-19 00:27:09.663132 | 1 | DELETE OBSOLETE BACKUP | DOING | 1728923329993025 | | | 1728845993342237 |