【Mongo】数据删了磁盘空间但没有减少

Author:skate

Time:2023/10/22

一、问题描述

产线用户反馈,一个华为云的mongo实例磁盘空间告警,使用率超过90%(使用状况 1630.9/1800GB),让其通过数据库运维平台找到占用大空间的表,然后清理历史数据;用户清理数据后,发现使用的磁盘空间没有减少

二、问题分析

华为云mongo实例信息:

配置:| 2 vCPUs | 4GB

版本:4.0

存储引擎:WiredTiger

磁盘使用率:90.61%(使用状况 1630.9/1800 GB)

查看占用磁盘空间大的表

通过数据库运维平台查看如上三个表占用磁盘空间最大,而且数据逻辑大小远远小于数据占用的存储空间,说明数据清理产生了有大量的碎片;一般来说磁盘碎片会被数据库继续使用,当有新数据插入时,会重复利用这些碎片。

但是我们目前碎片占用空间太大,需要回收下

三、解决方案

可以通过如下命令回收集合的的磁盘碎片

db.runCommand({compact:"<collection_name>",force:true})

因为MongoDB 4.4及之前的版本执行compact命令会导致集合所属的数据库被锁定,且该数据库的读写操作将被阻塞,建议在业务低峰期操作,操作的步骤如下

1、先在备库执行compact命令

db.runCommand({compact:"<collection_name>"})

2、然后主备切换

3、在新的备库执行compact命令

db.runCommand({compact:"<collection_name>"})

A.阿里云的mongo实例说明

阿里云的mongo实例,如果需要compact,需要我们自己按如上步骤手工操作

B.华为云的mongo实例特殊说明:

默认华为云的mongo实例的管理员用户rwuser默认是没有执行compact权限的,如果需要执行这个命令,联系华为云工程师,让华为云工程师帮其在后台执行(或者升级mongo实例的小版本,向华为云申请开通compact命令权限),这个compact命令是低频的,目前命令提供给华为云执行即可。

RocksDB在删除数据后,将删除操作直接转化为追加写,在积攒了一定数据量的冗余数据后,会自动触发后台compact线程对同一数据的多版本进行归并聚合,从而释放多余的磁盘空间,因此建议等待系统自动回收。当磁盘空间使用率较高,接近只读状态阈值时,手工操作回收

WiredTiger在删除数据,进行数据多版本归并聚合后,也会空余出磁盘空间碎片,但wiredTiger并不会将这部分磁盘空间返还给操作系统,而是打上标记预留给当前collection后续的写入,此collection后续的写入会优先使用这部分预留的磁盘空间,如果需要释放这部分磁盘空间,可以尝试通过执行compact命令进行释放(注:此命令会阻塞正常业务)。

具体操作步骤:

1、通过数据库运维平台查看哪些集合占用磁盘空间大、碎片率高,碎片率超过50%就要注意了

2、在备库执行集合压缩命令(降低对主库的写操作的阻塞,在业务低峰期操作)

use tbm
db.runCommand({compact:"zjthStdTag"})     //耗时:424.702s (7.08min)
db.runCommand({compact:"ztzbStdTag"})   //耗时:379.738s (6.33min)
db.runCommand({compact:"hrkStdTag"})    //耗时:46.857s

3、主备库倒换

4、在新备库执行集合压缩命令

use tbm
db.runCommand({compact:"zjthStdTag"})
db.runCommand({compact:"ztzbStdTag"})
db.runCommand({compact:"hrkStdTag"})

把2-4步骤发给华为云工程师,让其在后台执行帮手工回收集合磁盘空间

四、结果收益

经过compact后,磁盘利用率从90%降低到25%,磁盘空间回收了1180G

---end---

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱创科技携手洽洽食品,探索渠道数字化最优解!

坚果的下半场&#xff0c;是从吃到喝。 消费升级大潮下&#xff0c;健康养生理念逐渐深入人心。以“天然健康”为核心的食品新消费潮流正加速形成&#xff0c;一个个打着“美味与营养”黄金设定的品类风口正被不断创建&#xff0c;其中人气有增无减的当属植物基饮品。据相关报告…

Anaconda/minAnaconda下配置虚拟环境并安装pytorch相关

Anaconda/minAnaconda下配置虚拟环境并安装pytorch相关 官网下载对应版本anaconda/minAnaconda进入Anaconda Prompt创建虚拟环境 conda create -n 虚拟环境名 python版本 -c https://mirrors.bfsu.edu.cn/anaconda/pkgs/main查看当前环境&#xff0c;如果之前anaconda3文件夹…

docker和k8s之间的关系

一句话总结&#xff1a;Docker只是容器的一种&#xff0c;它面向的是单体&#xff0c;K8S可以管理多种容器&#xff0c;它面向的是集群&#xff0c;Docker可以作为一种容器方案被K8S管理。 https://baijiahao.baidu.com/s?id1763716289717819767&wfrspider&forpc 背…

【idea】使用教程:idea 打开项目、配置、项目打包详细教程

目录 一、配套软件安装 二、打开已有项目 三、配置 jdk 四、项目打包 五、服务器首次创建目录 &#xff08;1&#xff09;后端代码目录 &#xff08;2&#xff09;前端代码目录 &#xff08;3&#xff09; 打包后的代码包上传到服务器上 一、配套软件安装 【idea】wi…

计算机算法分析与设计(20)---回溯法(0-1背包问题)

文章目录 1. 题目描述2. 算法思路3. 例题分析4. 代码编写 1. 题目描述 对于给定的 n n n 个物品&#xff0c;第 i i i 个物品的重量为 W i W_i Wi​&#xff0c;价值为 V i V_i Vi​&#xff0c;对于一个最多能装重量 c c c 的背包&#xff0c;应该如何选择放入包中的物品…

Git报错解决

本篇主要汇总在使用 Git 进行提交和拉取文件时&#xff0c;遇到的问题的解决方案&#xff0c;以便下次查找。 1 关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案 1. 问题描述 在使用 git 拉取、提交代码的时候&#xff…

一款集成了主流大语言模型以及绘图模型的 APP, 采用 Flutter 开发,代码完全开源!!

一款集成了主流大语言模型以及绘图模型的 APP&#xff0c; 采用 Flutter 开发&#xff0c;代码完全开源&#xff0c;支持以下功能&#xff1a; 支持 OpenAI 的 GPT-3.5&#xff0c;GPT-4 大语言模型支持 Anthropic 的 Claude instant&#xff0c;Claude 2.0 大语言模型支持国产…

【React】编程式路由,push 与 replace,withRouter,BrowserRouter 和 HashRouter 的区别

push 与 replace 模式 默认情况下&#xff0c;开启的是 push 模式&#xff0c;也就是说&#xff0c;每次点击跳转&#xff0c;都会向栈中压入一个新的地址&#xff0c;在点击返回时&#xff0c;可以返回到上一个打开的地址 有时候页面不需要这么繁琐的跳转&#xff0c;我们可以…

uniapp map polygons 区域填充色(fillColor)在ios显示正常,但在安卓手机显示是黑色的,怎么解决?

uniapp map polygons 区域填充色&#xff08;fillColor&#xff09;在ios显示正常&#xff0c;但在安卓手机显示是黑色的,怎么解决&#xff1f; <MapPage :longitude"item.centerCoord[0]" :latitude"item.centerCoord[1]":polygons"[{ points: it…

Word docx转html和markdown

Pypandoc使用pandoc来进行各种文本格式的转换。 安装 # 不带pandoc执行库 pip install pypandoc# 自带pandoc pip install pypandoc_binary使用 import pypandoc# convert all markdown files in a chapters/ subdirectory. pypandoc.convert_file(chapters/*.md, docx, out…

1.初识MySQL

初识 MySQL 1.服务器处理客户端请求2.常用存储引擎3.关于存储引擎的一些操作3.1 查看当前服务器程序支持的存储引擎3.2 设置表的存储引擎3.2.1 创建表时指定存储引擎3.2.2 修改表的存储引擎 4.总结 MySQL 默认采用 TCP/IP 的方式来处理客户端与服务器连接过程。 1.服务器处理客…

Java中ReentrantLock测试线程的安全

使用场景 当需要在多线程环境下保证共享资源的安全访问时&#xff0c;可以使用Java中的ReentrantLock来实现线程安全。ReentrantLock是一个可重入的互斥锁&#xff0c;它提供了与synchronized关键字类似的功能&#xff0c;但更加灵活和扩展性强。 下面是一个使用ReentrantLoc…

启动jar时指定nacos配置

背景 由于需要在不同服务上部署应用&#xff0c;避免频繁打包&#xff0c;需要在jar启动时灵活配置naocs配置 启动命令 java -Xms256m -Xmx512m -Dfile.encodingutf-8 -jar mes-gateway-1.0.1.jar --spring.cloud.nacos.discovery.server-addrhttp://127.0.0.1:8848 --spri…

Python 面向对象编程:类、对象、初始化和方法详解

Python 是一种面向对象的编程语言。在 Python 中&#xff0c;几乎所有东西都是对象&#xff0c;都具有其属性和方法。 类似于对象构造函数或用于创建对象的“蓝图”的类。 创建一个类 要创建一个类&#xff0c;请使用关键字 class&#xff1a; 示例&#xff0c;创建一个名为…

二进制部署k8s

常见的K8S安装部署方式 ●Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特性使用。 部署地址&#xff1a;https://kubernetes.io/docs/setup/minikube ●Kubeadm Kubeadm也是一个工具&#xff0c;提供…

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关&#xff1a;网络的关卡 网关的作用 1&#xff1a;路由转发 2&#xff1a;安全控制 保护每个服务&#xff0c;不需要将每个暴露出去 3&#xff1a;负载均衡 1.没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多…

OpenCV官方教程中文版 —— 直方图均衡化

OpenCV官方教程中文版 —— 直方图均衡化 前言一、原理二、 OpenCV 中的直方图均衡化三、 CLAHE 有限对比适应性直方图均衡化 前言 本小节我们要学习直方图均衡化的概念&#xff0c;以及如何使用它来改善图片的对比。 一、原理 想象一下如果一副图像中的大多是像素点的像素值…

无人值守机房浸水监测数据采集网关

机房动环监控支持水浸远程开关门 机房动环监控系统是保障机房设备安全和稳定运行的关键设备。 水浸检测&#xff1a;系统配备水浸传感器&#xff0c;可以监测机房内的水浸情况&#xff0c;一旦发现水浸&#xff0c;即刻发出报警信号。 远程开关门&#xff1a;在接收到水浸报警…

c++编译使用log4cplus

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、log4cplus是什么&#xff1f;二、使用步骤1.下载源代码2.开始配置1.配置介绍2.开始编译 3.cmake引用4.示例 总结 前言 C很强大&#xff0c;但是仍然有很多…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来&#xff0c;软件供应链安全相关攻击事件呈快速增长态势&#xff0c;造成的危害也越来越严重&#xff0c;为了保障软件供应链安全&#xff0c;各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践&#xff0c;蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…