首页 > 数据库 >mongodb数据库:手动释放磁盘空间

mongodb数据库:手动释放磁盘空间

时间:2024-05-13 23:31:45浏览次数:25  
标签:compact 释放 mongodb 数据库 磁盘空间 从库

平台:阿里云mongoDB云数据库

版本:Mongodb 4.2

数据库集群方案:一主二从三分片

需求:手动释放过剩磁盘空间

从文档解析可知:delete数据或者做分片数据迁移,并不会释放磁盘空间,而是将这些空间标记为reuse可重用状态,后续新写入的数据会重用这部分空间。

需求是手动释放这些空间,使用compact命令,即磁盘碎片整理:
https://www.mongodb.com/docs/v4.2/reference/command/compact/
https://help.aliyun.com/document_detail/96530.html

业务上对某个做了分片的库做compact,操作时间以小时为单位,在生产环境中热执行。而我们使用的4.2版本,在做compact时会阻塞CRUD,所以不能直接在主库上操作。

整个流程是:
(1)对从库(secondary)做compact
(2)对数据库的副本集做主从切换
(3)对新从库做compact
(4) 执行完成再次切换回原主节点

最终完成对整个分片的空间释放。

效果:
从库磁盘占用从80%降为45%,单节点(700G)跑compact花了1小时左右,开始执行瞬间对业务有一个瞬时峰值造成读写等待,这个操作最好在停服维护时进行。

标签:compact,释放,mongodb,数据库,磁盘空间,从库
From: https://www.cnblogs.com/linxx-/p/18190293

相关文章

  • HarmonyOS 使用关系型数据库进行增删改查
    HarmonyOS中的关系型数据库基于SQLite组件,提供了一套完整的对本地数据库进行管理的机制。它支持事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句等特性。关系型数据库适用于存储包含复杂关系数据的场景,例如学生信息或雇员信息,这些数据之间有较强的对应关系。操......
  • 随笔-调试-数据库常用命令
    目录Mysql命令登录命令在命令行直接执行命令查看表数据/修改表数据/清空数据查看表结构/增加列/删除列/删除表wireshark抓mysql的报文Redis命令登录并执行命令/查看数据批量删除数据sqlite命令Mysql命令登录命令mysql-uroot-p'root'-h127.0.0.1-P3360xxxDb在命令行直接......
  • 备份恢复数据库
    #备份数据并且恢复数据#备份数据,要在DOS下执行mysqldump指令,这个指令其实在mysql安装目录\bin#这个备份的文件,就是对应的sql语句mysqldump-uroot-p-Bhsp_db02hsp_db03>d:\\bak.sqlDROPDATABASEhsp_db03;#恢复数据(注意:在DOS下进去mysql在执行)sourced:\\bak.sql#......
  • 数据库基础
    1.什么是数据库是存储数据的电子仓库2.数据库分类2.1关系型数据库定义:数据库中表与表存在某种关系,数据存储在不同的表中db2mysqloraclesqlserver2.2非关系型数据库定义:通常数据是以对象的形式存储在数据库中mongoredis3.linux添加卸载MySQLyuminstallmysql删除......
  • Python执行PG数据库查询语句:以Markdown格式打印查询结果
    哈喽,大家好,我是木头左!1.准备工作在开始之前,需要确保已经安装了psycopg2和pandas这两个Python库。psycopg2是Python的一个PostgreSQL数据库适配器,用于连接和操作PostgreSQL数据库。而pandas则是一个强大的数据处理库,将用它来处理查询结果并以Markdown格式打印。pipinstallp......
  • 【YashanDB知识库】ycm托管数据库时,数据库非OM安装无法托管
    问题现象ps-ef|grepyas查看无yasom和yasagent进程,且在{数据库安装目录}/om/{数据库名称}的目录下没有conf、data、log等目录,确定数据库不是用yasboot安装,是用脚本安装的问题的风险及影响非yasboot安装,ycm无法完成托管,无法监控问题影响的版本不涉及ycm的版本问题问题发......
  • Python操作数据库
    简介pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。MySQLConnector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的,效率不高。MySQL-python:......
  • inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装
    前言出现有需要打包Java应用和Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。环境JDK17;MySQL5.7;流程Jpackage打包EXEJpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpackage就不需要用exe4j这种打包工具,省去打包的繁......
  • 软件测评笔记06--数据库
     数据控制功能对数据库中的数据的安全性、完整性、并发和故障恢复的控制安全性:防止不合法的使用造成的数据泄露、破坏完整性:防止向数据库加入不符合语义的数据并发控制:导致数据不一致性,主要有:丢失更新、不可重复读和读脏数据,主要原因是破坏了事务的隔离性故障恢复:有三类故......
  • JPA使用pg数据库时,bool字段不能跨库迁移的解决方案
    首先,大多数人的印象里,hibernate作为一个笨重学习成本高的近乎全自动的框架它的优点就是可以支持很多数据库,但是最近研究发现,java中的boolean类型的字段,在mariadb/mysql中为bit0/1,在sqlserver/oracle中为bit0/1numeric(1,0)check*in(0,1),然而在PG数据库中却是bool,因为pg......