OceanBase 备份清理任务卡死之谜

OceanBase 备份清理任务卡死原因及解决

正常情况下,会有一个 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 |      0 |       0 |
+----------------------------+----
<think>好的,我现在需要帮助用户了解OceanBase数据库备份方法或教程。首先,我要回顾用户提供的引用内容,看看里面有没有相关的信息。 根据引用[1],OceanBase备份与恢复是重要的功能,提到了备份的高可用性和可靠性,但具体步骤可能没有详细说明。引用[2]提到了OceanBase的数据迁移工具,可以支持从MySQL迁移到OceanBase,但用户的问题是关于备份的,可能需要更直接的信息。引用[3]中有关于挂载NFS存储和日志归档的操作步骤,这可能和备份存储的位置有关。 接下来,我需要整理OceanBase备份的常见方法。通常数据库备份包括物理备份和逻辑备份。物理备份可能涉及数据文件的直接复制,而逻辑备份可能是导出数据为SQL语句等形式。OceanBase作为分布式数据库,可能有自己的工具或命令来进行备份。 用户提供的引用中,引用[3]提到了使用NFS挂载存储,这可能是备份存储的位置。例如,挂载NFS目录到本地路径,然后进行备份操作。此外,日志归档也是备份恢复流程的一部分,需要配置归档路径,比如设置`backup_dest`参数到挂载的NFS目录。 另外,引用[1]和[2]提到OceanBase备份功能和工具,可能包括命令行工具如`ALTER SYSTEM BACKUP`,或者使用OCP(OceanBase云平台)进行管理。需要分步骤说明这些方法,比如配置归档、执行全量备份、增量备份等。 可能还需要提到备份的最佳实践,比如定期备份、验证备份完整性、存储位置的安全性等。同时,结合用户提供的挂载命令示例,给出具体的操作步骤,比如如何挂载NFS,如何设置备份路径。 需要确保回答结构清晰,分步骤说明,并且引用相关的引用内容,比如在说明挂载存储时引用[3],在介绍备份工具时引用[2]等。此外,生成相关问题时要围绕备份方法、工具、恢复流程、注意事项等方面提问。</think>### OceanBase数据库备份方法详解 OceanBase数据库支持**物理备份**和**日志归档**两种核心备份方式,结合分布式特性可实现高可靠性数据保护。以下是具体操作步骤: --- #### 一、配置日志归档(基础前提) 1. **挂载备份存储** 使用NFS协议挂载存储路径(需提前部署NFS服务): ```bash sudo mount -tnfs4 -o rw,nfsvers=4.1,sync 11.11.15.210:/obbackup /obbackup ``` 此命令将远程NFS目录挂载到本地路径`/obbackup`[^3]。 2. **设置归档路径** 登录OceanBase数据库,执行SQL配置备份目标路径: ```sql ALTER SYSTEM SET backup_dest='file:///obbackup/archive'; ``` 该路径需与挂载目录一致[^3]。 --- #### 二、执行全量备份 1. **启动数据备份** 通过命令行触发全量备份任务: ```sql ALTER SYSTEM BACKUP DATABASE; ``` 备份文件将自动写入`backup_dest`指定路径,包含数据快照和元信息[^1]。 2. **验证备份状态** 查询备份进度: ```sql SELECT * FROM oceanbase.CDB_OB_BACKUP_PROGRESS; ``` --- #### 三、增量备份与日志切割 1. **自动增量备份** OceanBase默认在开启归档后,会自动记录增量日志到`backup_dest`路径。 2. **手动日志切割** 强制切换日志文件以触发归档: ```sql ALTER SYSTEM ARCHIVELOG CURRENT; ``` --- #### 四、使用生态工具辅助(可选) - **OCP管理平台**:通过Web界面可视化操作备份任务,监控备份状态[^2]。 - **OBLOADER/OBDUMPER**:逻辑备份工具,支持导出指定表数据为SQL文件[^2]。 --- #### 注意事项 1. 确保NFS存储空间充足且网络稳定。 2. 定期测试备份恢复流程,验证备份有效性。 3. 生产环境建议采用**多地冗余存储**,如OSS结合NFS。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值