RocksDB备份占用空间远超数据库本身是否正常?求排查方案
RocksDB备份体积远超原数据库的异常分析与排查
结论
这种备份大小(651G)是原数据库(233G)2.8倍的情况完全异常。默认配置下,RocksDB备份体积应接近或略大于原数据库(仅额外增加元数据和少量冗余),你的问题核心在于shared_checksum目录的异常膨胀。
排查方向与解决步骤
1. 历史备份未清理导致累积
默认备份引擎会保留所有备份版本,若多次执行备份未清理旧版本,shared_checksum会累积所有备份的共享文件校验与索引数据,导致体积暴增。
- 查看当前备份数量:
rocksdb_backup_utility --list_backups --backup_dir=rocks_backup - 清理多余备份(保留最近3份为例):
rocksdb_backup_utility --purge_old_backups --num_backups_to_keep=3 --backup_dir=rocks_backup
2. 备份期间数据库高写入导致冗余
默认备份为非原子增量备份,若备份过程中数据库有大量写入、SST文件合并/压缩操作,备份引擎可能重复捕获同一数据的不同版本,导致shared_checksum存储大量重复校验记录。
- 核对备份时段的数据库监控数据(写入QPS、SST文件生成速率),确认是否存在高写入负载
- 在业务低峰期执行一次全量备份,对比新备份体积是否恢复正常
3. 共享校验机制的异常触发
默认share_files_with_checksum选项开启,若数据库存在大量小SST文件生成,或极低概率出现校验值冲突,会导致shared_checksum目录存储异常多的校验映射数据。
- 临时修改备份配置关闭共享校验:
重新执行备份,若体积恢复正常,则说明是共享校验机制导致的问题BackupEngineOptions backup_opts; backup_opts.share_files_with_checksum = false;
4. 文件系统或磁盘故障
极少数情况下,磁盘软错误、文件系统inode异常会导致目录空间计算错误,或shared_checksum下存在大量隐藏临时文件。
- 查看目录内具体文件分布:
du -ah rocks_backup/shared_checksum - 卸载磁盘后执行文件系统检查(如
fsck),排除硬件或文件系统问题
内容的提问来源于stack exchange,提问作者Yakhya
相关产品推荐
相关产品推荐

