iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB中怎么释放空闲空间
  • 127
分享到

MongoDB中怎么释放空闲空间

2024-04-02 19:04:59 127人浏览 独家记忆
摘要

本篇文章给大家分享的是有关mongoDB中怎么释放空闲空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、compat官网对该命令的定义:对

本篇文章给大家分享的是有关mongoDB中怎么释放空闲空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、compat

官网对该命令的定义:对集合中的所有数据和索引进行重写和碎片整理。

使用方法

use yourdatabase;
db.runCommand({ compact : 'yourCollection' });

注意事项

1、在执行命令前请保证你有比较新的备份

2、在使用MMAPv1存储引擎的MonGoDB上compact需要数据文件所在分区至少有2G的空闲空间

3、在使用WiredTiger存储引擎的MongoDB上,compact命令将重写集合和索引,且释放未使用的空间,但使用MMAPv1存储引擎的MongoDB上,该命令只对集合的数据文件进行碎片整理并重新创建其索引。不会释放空间,在使用MMAPv1存储引擎的MongoDB上回收空间,建议使用第三种方法“secondary节点重同步”

4、使用MMAPv1存储引擎的MongoDB中的Capped Collections,是无法被压缩的,但使用WiredTiger存储引擎的MongoDB在执行compact时会进行压缩。

5、在副本集上运行该命令时,要分别在每个节点执行

6、该命令只能在mongod实例上执行,不能再mongos实例上运行。也就是说针对分片集群的compact操作要分别在每个分片节点上执行。

7、一般该命令运行在secondary节点上,在执行时,会强制节点进入RECOVERING状态,RECOVERING状态的实例读写操作将被阻塞

8、再碰到特殊情况要停止运行该命令时,可通过db.currentOp()查询进程信息,然后通过db.killOp()干掉进程

9、compact可能会增加数据文件的总大小和数量,尤其是第一次运行时。但这不会增加总集合使用的磁盘空间,因为存储大小是数据库文件中分配的数据量,而不是文件系统上文件的大小/数量

10、使用MMAPv1存储引擎的MongoDB中的Capped Collections,是无法被压缩的,但使用WiredTiger存储引擎的MongoDB在执行compact时会进行压缩。

二、db.repairDatabase()

官网该命令的定义:通过丢无效或损坏的数据老重建数据库和索引。类似于文件系统修复命令fsck。所以此命令主要是用于修复数据。

使用方法

use yourdatabase;
db.repairDatabase();

注意事项

1、db.repairDatabase()主要用于修复数据。若你拥有数据的完整副本,且有权限访问,请使用第三种方法“secondary节点重同步”

2、在执行命令前请保证你有比较新的备份

3、此命令会完全阻塞数据库的读写,谨慎操作

4、此命令执行需要数据文件所在位置有等同于所有数据文件大小总和的空闲空间再加上2G

5、在使用MMAPv1存储引擎的secondary节点上执行该命令可以压缩集合数据

6、在使用WiredTiger存储引擎的MongoDB库上执行不会有压缩的效果

7、再碰到特殊情况要停止运行该命令时,可通过db.currentOp()查询进程信息,然后通过db.killOp()干掉进程

8、非常消耗时间

三、secondary节点重同步

主要思想就是:删除secondary节点中指定数据,使之与primary重新开始数据同步。当副本集成员数据太过陈旧,也可以使用重新同步。数据的重新同步与直接复制数据文件不同,MongoDB会只同步数据,因此重同步完成后的数据文件是没有空集合的,以此实现了磁盘空间的回收。

使用方法

首先必须确保数据有完整的备份。

1、若是primary节点,先强制将之变为secondary节点,否则跳过此步骤:

 rs.stepdown(120);

2、然后在primary上删除secondary节点:

 rs.remove("IP:port");

3、删除secondary节点dbpath下的所有文件。

4、将节点重新加入集群,然后使之自动进行数据的同步:

 rs.add("IP:port");

5、等数据同步完成后,循环1-4的步骤可以将集群中所有节点的磁盘空间释放

针对一些特殊情况,不能下线secondary节点的,可以新增一个节点到副本集中,然后secondary就自动开始数据的同步了。

总的来说,重同步的方法是比较好的,第一基本不会阻塞副本集的读写,第二消耗的时间相对前两种比较短

四、db.copyDatabase()

mongodb还支持在线复制数据:db.copyDatabase("from","to","IP:port"),此种方法也能释放空间,因为db.copyDatabase复制的数据,而不是表示在磁盘中的数据文件。但,该命令在4.0版本起被弃用;3.x版本还能继续使用

如:

 db.copyDatabase("sourceDB","DistDB");

    将源库sourceDB。拷贝为DistDB。

当然,该命令支持远程复制。

该命令的完整语法为:

db.copyDatabase(<源数据库名称>, <目标数据库名称>, <源mongodb的IP:port>, <源数据库连接需要的账户>,<密码>, <mechanism>)

以上:命令必须在目标数据库服务器上执行。若源数据库与目标数据库存在于一个MongoDB服务器,<源mongodb的IP:port>, <源数据库连接需要的账户>,<密码>都可省略。<mechanism>是身份验证类型,可选的。

注意事项

1、db.copyDatabase()不会阻塞源数据库和目标数据库数据的读写,因此可能会出现两份数据不一致的情况

2、db.copyDatabase()复制索引数据会定数据库,此操作也会对其他数据库产生影响

3、db.copyDatabase()不要在mongos实例中使用

4、db.copyDatabase()不要用于复制包含分片集合的数据库

5、在4.0版中更改:db.copyDatabase()仅支持SCRAM进行身份验证fromhost,<mechanism>选项。

以上就是MongoDB中怎么释放空闲空间,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中怎么释放空闲空间

本文链接: https://www.lsjlt.com/news/56464.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB中怎么释放空闲空间
    本篇文章给大家分享的是有关MongoDB中怎么释放空闲空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、compat官网对该命令的定义:对...
    99+
    2024-04-02
  • mongodb怎么释放磁盘空间
    要释放MongoDB使用的磁盘空间,可以采取以下几种方法: 删除不必要的数据:通过删除不再需要的数据库、集合或文档,可以释放一部...
    99+
    2023-10-26
    mongodb
  • Ubuntu中怎么释放空间
    这期内容当中小编将会给大家带来有关Ubuntu中怎么释放空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在 Ubuntu 系统上如何检查可用的空间?在你的系统上使用 df 命令 来检查当前磁盘利用率。$...
    99+
    2023-06-16
  • Win7怎么释放C盘空间
    这篇文章主要介绍“Win7怎么释放C盘空间”,在日常操作中,相信很多人在Win7怎么释放C盘空间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Win7怎么释放C盘空间”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-28
  • c#怎么释放内存空间
    释放 c# 对象内存的方法包括:显式释放 (obj = null)使用 using 语句使用垃圾回收器(gc):调用 gc.collect()调用 gc.waitforpendingfi...
    99+
    2024-05-11
    c# 垃圾回收器
  • java怎么释放数组空间
    在Java中,数组的空间是由Java虚拟机自动管理的,无法直接释放数组的空间。当数组不再被引用时,Java虚拟机会自动回收该数组的空...
    99+
    2023-10-27
    java
  • oracle怎么释放临时表空间
    要释放Oracle数据库中的临时表空间,可以按照以下步骤进行操作:1. 首先,确保当前会话没有使用该临时表空间。可以通过执行以下查询...
    99+
    2023-09-28
    oracle
  • 怎么释放Linux操作系统空间
    这篇文章给大家分享的是有关怎么释放Linux操作系统空间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 移除不再需要的软件包如果你了解过 apt-get 或 apt 命令的详细用法,应该知道 autoremo...
    99+
    2023-06-16
  • win10怎么关闭休眠释放空间
    关闭休眠功能可以释放一部分空间,以下是在Windows 10中关闭休眠的方法:1. 打开“控制面板”。2. 在控制面板中,选择“系统...
    99+
    2023-08-19
    win10
  • sqlserver怎么删除数据释放空间
    要删除SQL Server中的数据并释放空间,可以使用以下步骤: 打开SQL Server Management Studio(...
    99+
    2024-04-09
    sqlserver
  • 网站空间过期被释放怎么办
    网站空间过期被释放怎么办?网站空间过期被释放是一个让人头疼的问题。当一个网站的空间过期并被释放时,网站所有者可能会面临数据丢失、访问中断以及声誉受损的风险。然而,有几种方法可以应对这一问题,帮助网站所有者尽快恢复网站的正常运行。 1.当网...
    99+
    2024-01-23
    网站空间续费 网站空间过期 网站空间过期被释放 网站空间过期被释放怎么办 虚拟主机知识
  • linux删除未释放空间怎么解决
    在Linux上,当删除文件或目录后,磁盘空间并不会立即释放。相反,它们被放入一个特殊的回收站,称为“垃圾箱”或“垃圾桶”。这样做是为...
    99+
    2024-04-09
    linux
  • hdfs平衡空间没释放怎么解决
    如果HDFS空间没有释放,可以尝试以下方法来解决问题: 手动清理不必要的文件:通过HDFS命令行或者HDFS管理界面,手动删除不...
    99+
    2024-04-18
    hdfs
  • 云服务器怎么释放存储空间
    云服务器通常会提供高可用性、负载均衡和自动扩展等功能,以提高服务器的性能和容错能力。下面是释放云服务器存储空间的步骤: 清空 Web 服务器上的 CPU 核心和内存:在 AWS Cloud Platform(如 AWS Azure和 A...
    99+
    2023-10-26
    存储空间 服务器
  • oracle中drop表后无法释放空间怎么办
    在Oracle中,当使用DROP TABLE命令删除表时,实际上并不会立即释放表所占用的存储空间,而是将表移到回收站中。这是为了防止...
    99+
    2024-04-09
    oracle
  • 云服务器怎么释放内存空间
    云服务器通常会提供虚拟内存和物理内存的使用方式,以便在同一服务器上同时使用多条内存。释放内存需要遵循以下几个步骤: 确认服务器的内存使用情况,如果有内存泄漏,需要及时修复。 关闭服务器的进程,关闭所有不使用的服务,并检查是否有可用于释放...
    99+
    2023-10-26
    内存空间 服务器
  • linux中rm删除不释放空间怎么解决
    这篇文章主要介绍“linux中rm删除不释放空间怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux中rm删除不释放空间怎么解决”文章能帮助大家解决问题。解决方法:1、利用“lsof |...
    99+
    2023-06-30
  • linux怎么删除文件并释放空间
    要删除文件并释放空间,可以使用以下命令: 使用 rm 命令删除文件: rm 文件名 如果要删除一个目录及其所有内容,可以使用...
    99+
    2024-04-09
    linux
  • 如何释放Ubuntu磁盘空间
    这篇文章将为大家详细讲解有关如何释放Ubuntu磁盘空间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、移除不再需要的软件包如果你了解过 apt-get 或 apt&nbs...
    99+
    2023-06-13
  • 如何释放 Mac 上的空间
    其关键是提供可行的建议,以解决Mac上的存储空间问题。您将学习如何识别和删除大文件、正确清空垃圾箱、卸载不必要的应用程序等,所有这些都是为了优化 Mac 的存储空间。因此,让我们深入研究一下回收存储空间的旅程。确定正在使用所有 Mac 储存...
    99+
    2023-07-24
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作