我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB中怎么释放空闲空间

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB中怎么释放空闲空间

本篇文章给大家分享的是有关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中怎么释放空闲空间,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB中怎么释放空闲空间

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

下载Word文档

猜你喜欢

mongodb怎么释放磁盘空间

要释放MongoDB使用的磁盘空间,可以采取以下几种方法:删除不必要的数据:通过删除不再需要的数据库、集合或文档,可以释放一部分磁盘空间。可以使用`db.dropDatabase()`命令删除整个数据库,使用`db.collection.d
2023-10-26

Ubuntu中怎么释放空间

这期内容当中小编将会给大家带来有关Ubuntu中怎么释放空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在 Ubuntu 系统上如何检查可用的空间?在你的系统上使用 df 命令 来检查当前磁盘利用率。$
2023-06-16

Win7怎么释放C盘空间

这篇文章主要介绍“Win7怎么释放C盘空间”,在日常操作中,相信很多人在Win7怎么释放C盘空间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Win7怎么释放C盘空间”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-28

c#怎么释放内存空间

释放 c# 对象内存的方法包括:显式释放 (obj = null)使用 using 语句使用垃圾回收器(gc):调用 gc.collect()调用 gc.waitforpendingfinalizers()使用 weakreference
c#怎么释放内存空间
2024-05-11

java怎么释放数组空间

释放Java数组空间Java数组引用数据元素,不再需要时释放空间以避免内存泄漏。有三种方法:1.显式置空引用:将数组引用设置为null。2.使用try-with-resources语句:自动关闭实现AutoCloseable接口的数组。3.使用finalize()方法:在垃圾回收准备回收数组时释放空间。选择合适的方法取决于数组类型和应用程序需求。
java怎么释放数组空间
2024-04-09

java怎么释放数组空间

在Java中,数组的空间是由Java虚拟机自动管理的,无法直接释放数组的空间。当数组不再被引用时,Java虚拟机会自动回收该数组的空间,释放内存。可以通过将数组置为null来显式地将数组引用置空,以便让Java虚拟机回收数组的空间。示例代
2023-10-27

oracle怎么释放临时表空间

要释放Oracle数据库中的临时表空间,可以按照以下步骤进行操作:1. 首先,确保当前会话没有使用该临时表空间。可以通过执行以下查询语句来查看当前会话使用的临时表空间:```SELECT s.sid, s.serial#, p.spid,
2023-09-28

win10怎么关闭休眠释放空间

关闭休眠功能可以释放一部分空间,以下是在Windows 10中关闭休眠的方法:1. 打开“控制面板”。2. 在控制面板中,选择“系统和安全”。3. 在“系统和安全”页面中,选择“电源选项”。4. 在“电源选项”页面中,点击左侧的“选择电源按
2023-08-19

怎么释放Linux操作系统空间

这篇文章给大家分享的是有关怎么释放Linux操作系统空间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 移除不再需要的软件包如果你了解过 apt-get 或 apt 命令的详细用法,应该知道 autoremo
2023-06-16

sqlserver怎么删除数据释放空间

要删除SQL Server中的数据并释放空间,可以使用以下步骤:打开SQL Server Management Studio(SSMS)并连接到数据库服务器。在对象资源管理器中,展开数据库并找到要删除数据的表。右键单击该表并选择“编辑顶部
sqlserver怎么删除数据释放空间
2024-04-09

oracle中drop表后无法释放空间怎么办

在Oracle中,当使用DROP TABLE命令删除表时,实际上并不会立即释放表所占用的存储空间,而是将表移到回收站中。这是为了防止意外删除表后无法恢复数据。如果您希望立即释放表所占用的存储空间,可以使用以下方法:使用PURGE命令永久删
oracle中drop表后无法释放空间怎么办
2024-04-09

linux中rm删除不释放空间怎么解决

这篇文章主要介绍“linux中rm删除不释放空间怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux中rm删除不释放空间怎么解决”文章能帮助大家解决问题。解决方法:1、利用“lsof |
2023-06-30

网站空间过期被释放怎么办

网站空间过期被释放怎么办?网站空间过期被释放是一个让人头疼的问题。当一个网站的空间过期并被释放时,网站所有者可能会面临数据丢失、访问中断以及声誉受损的风险。然而,有几种方法可以应对这一问题,帮助网站所有者尽快恢复网站的正常运行。
网站空间过期被释放怎么办
2024-01-23

mysql删除数据后怎么释放空间

在MySQL中,删除数据并不会立即释放空间,而是将空间标记为可重用。如果您想要释放空间,可以使用OPTIMIZE TABLE命令来重新组织表并释放未使用的空间。例如,如果您想释放一个表的空间,可以执行以下命令:OPTIMIZE TABLE
mysql删除数据后怎么释放空间
2024-05-21

hdfs平衡空间没释放怎么解决

如果HDFS空间没有释放,可以尝试以下方法来解决问题:手动清理不必要的文件:通过HDFS命令行或者HDFS管理界面,手动删除不必要的文件和目录,释放空间。执行数据节点上的磁盘检查和修复:使用HDFS fsck命令来检查HDFS文件系统的完整
hdfs平衡空间没释放怎么解决
2024-04-18

linux怎么删除文件并释放空间

要删除文件并释放空间,可以使用以下命令:使用 rm 命令删除文件:rm 文件名如果要删除一个目录及其所有内容,可以使用 rm 命令加上 -r 参数:rm -r 目录名如果想要彻底删除文件,并不仅仅是删除文件名,还要释放磁盘空间,可以使用 s
linux怎么删除文件并释放空间
2024-04-09

云服务器怎么释放存储空间

云服务器通常会提供高可用性、负载均衡和自动扩展等功能,以提高服务器的性能和容错能力。下面是释放云服务器存储空间的步骤:清空Web服务器上的CPU核心和内存:在AWSCloudPlatform(如AWSAzure和AmazonWebServices等)中,用户可以手动清空Web服务器上的CPU核心和内存。释放所有数据:在AWSCloudPlatform(如AWSAzure和AmazonWeb
2023-10-26

云服务器怎么释放内存空间

云服务器通常会提供虚拟内存和物理内存的使用方式,以便在同一服务器上同时使用多条内存。释放内存需要遵循以下几个步骤:确认服务器的内存使用情况,如果有内存泄漏,需要及时修复。关闭服务器的进程,关闭所有不使用的服务,并检查是否有可用于释放内存的文件,以确保释放后内存的使用不会影响其他服务的运行。如果内存不足,需要增加内存,可以考虑购买更高配置的服务器。如果需要释放物理内存,则需要将内存使用情
2023-10-26

linux删除未释放空间怎么解决

在Linux上,当删除文件或目录后,磁盘空间并不会立即释放。相反,它们被放入一个特殊的回收站,称为“垃圾箱”或“垃圾桶”。这样做是为了防止用户意外删除文件而无法恢复。默认情况下,垃圾箱的大小限制为2%的文件系统空间。要彻底删除垃圾箱中的文
linux删除未释放空间怎么解决
2024-04-09

编程热搜

目录