数据库备份失败,提示 module: BACKUP_DATA, result: -4184(Server out of disk space)

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】4.2.1-10BP
【问题描述】
数据库备份失败,显示错误信息为module: BACKUP_DATA, result: -4184(Server out of disk space)。

查看了下备份期间,有一台副本磁盘被占用接近95%。 备份的时候为什么会占用磁盘空间

@论坛小助手

根据文档库中的信息,错误码 -4184 表示磁盘空间不足。以下是关于此问题的详细分析和解决方法:

问题分析

  1. 备份过程占用磁盘空间的原因
    在 OceanBase 数据库中,备份操作需要将数据写入到磁盘上的备份文件中。如果磁盘空间不足,备份操作会失败并返回错误码 -4184。此外,备份期间可能会生成临时文件或日志文件,进一步占用磁盘空间。

  2. 磁盘空间不足的风险
    根据文档片段 4 的描述,当事务日志(CLOG)空间利用率超过 [log_disk_utilization_limit_threshold](默认为 95%)时,节点会停止写入。这可能导致备份失败或其他业务操作异常。

  3. 副本磁盘占用接近 95% 的影响
    如果某台副本的磁盘占用接近 95%,可能已经触发了磁盘空间限制,导致备份无法继续。


解决方法

1. 检查磁盘空间

  • 确认所有 OBServer 节点的磁盘空间是否充足。
  • 使用以下命令检查磁盘使用情况:
    df -h
    
  • 特别关注备份目录所在磁盘的空间使用率。

2. 增加磁盘空间

  • 如果磁盘空间不足,可以通过以下方式增加磁盘容量:
    • 添加新的磁盘分区。
    • 扩展现有磁盘分区。
  • 参考文档片段 1 的建议,增加服务器以扩容。

3. 清理不必要的文件

  • 删除旧的备份文件或日志文件,释放磁盘空间。
  • 备份目录路径通常位于 /home/admin/oceanbase/backup 或类似路径,请根据实际环境确认。

4. 调整磁盘分配策略

  • 根据文档片段 4 的建议,推荐分别挂载三块磁盘用于系统日志、事务日志和数据文件。如果无法实现物理分离,可以对磁盘进行逻辑分区。
  • 开启日志限流功能,控制系统日志所能占用的磁盘 I/O 带宽上限:
    alter system set syslog_io_bandwidth_limit='10M';
    
  • 开启回收系统日志功能并设置最大文件数量:
    alter system set enable_syslog_recycle = true;
    alter system set max_syslog_file_count = 1000;
    

5. 优化备份策略

  • 减少单次备份的数据量,避免一次性占用过多磁盘空间。
  • 调整备份时间窗口,避开业务高峰期。

总结

备份失败的原因是磁盘空间不足,建议按照上述步骤逐一排查和解决问题。如果问题仍未解决,可以参考文档片段 6 提供的日志路径,进一步定位问题原因,并联系 OceanBase 技术支持人员协助排查。

详情请参考:

  1. 4000 ~ 4499
  2. 9000 ~ 9499
  3. OceanBase 数据库性能的影响因素
  4. 数据备份失败
  5. 4500 ~ 4999
  6. 0001 ~ 3999

磁盘空间满了啊,或者文件指针用尽了

只有备份期间磁盘空间使用率会上涨是吗?集群是什么部署架构的?只有一台observer上涨?

使用obdiag分析下报错时的日志

obdiag analyze log [options]

https://www.oceanbase.com/docs/common-obdiag-cn-1000000001768214

您把您的集群的规划简单介绍下,同时您的备份的配置比如使用nfs 也介绍下