mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。

db.copyDatabase("from","to","127.0.0.1:16161");

将127.0.0.1上的from库。拷贝到to库。

这样做有一个额外的好处。就是from库中可能是删除过数据的库。看我们知道删除数据时磁盘空间是不会被释放的。参考博客里的另一篇文章:mongodb删除集合后磁盘空间不释放

肯能造成占用很大磁盘空间。虽然可以用    db.repairDatabase()修复数据。但这种方法有两个不好的地方。1.在生产上操作如果意外停止可能会造成数据无法恢复的危险。2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了    db.repairDatabase()的。

所以介绍用db.copyDatabase可以备份复制数据的方法。

1.db.copyDatabase("from","to","127.0.0.1:16161");复制出一个新的to数据库。这个已经是最小数据占用的数据。会在数据目录下产生to的相关数据文件。

2.将所有程序的配置从from库改为to库。测试无误。

3.这时可以删除from库。方法。use from 后 db.dropDatabase()。这个方法的好处是可以时间将磁盘上的数据删除掉。节省出很大的空间。

磁盘紧张的同学可以参考以上方法。

时间: 2024-09-21 00:32:11

mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。的相关文章

详解清除MongoDB所占用的多余的磁盘空间的方法_MongoDB

首先一点就是mongodb 不会释放已经占用的硬盘空间,即使drop collection也不行,除非drop database.如果一个db曾经有大量的数据一段时间后又删除的话,硬盘空间就是一个问题,如何收回被mongdodb占用的多余空间?方法有两种1. dump & restore mongodump -d databasename -o /path/to/dump_dir echo 'db.dropDatabase()' | mongo <databasename> mongo

Mysql InnoDB删除数据后释放磁盘空间的方法_Mysql

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长. 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间. 运行OPTIMIZE TABLE 表名后,虽然最后会报Table does not support optimize, doing recreate + analyze in

Win8如何释放磁盘空间的2个办法

Win8进行磁盘管理释放磁盘空间的方法如下: 方法一: 1.在需要清理的磁盘盘符下选择右键属性,选择常规中的磁盘清理. 2.选择要清理的内容后,点击"确定"即可. 3.提示是否删除点击"删除文件"即可. 4.如果需要删除已经删除安装的程序及还原点.需要点击"清理系统文件". 5.在之后弹出的界面中选择其他选项即可. 方法二 1.桌面点击Win按键,在空白出点击右键.最下方会出现所有程序选项. 2.点击所有程序中的项目. 3.之后提示选择要清理的分

Win8如何进行磁盘管理释放磁盘空间

  Win8进行磁盘管理释放磁盘空间的方法如下: 方法一: 1.在需要清理的磁盘盘符下选择右键属性,选择常规中的磁盘清理. 2.选择要清理的内容后,点击"确定"即可. 3.提示是否删除点击"删除文件"即可. 4.如果需要删除已经删除安装的程序及还原点.需要点击"清理系统文件". 5.在之后弹出的界面中选择其他选项即可. 方法二 1.桌面点击Win按键,在空白出点击右键.最下方会出现所有程序选项. 2.点击所有程序中的项目. 3.之后提示选择要清理

Win8系统如何删除还原点增大磁盘空间的方法

  Win8系统如何删除还原点增大磁盘空间的方法 1.在桌面找到"计算机"图标,并点击鼠标右键,在弹出菜单中选择"属性"; 2.在弹出的属性窗口,点击左侧的"系统保护"选项; 3.接下来继续点击"配置"按钮; 4.确认需要删除条件下,可点击"删除"按钮; 5.提示是否确认删除,点击"继续"按钮即可.

Linux找回丢失磁盘空间的方法

  Linux系统磁盘提示满了,可是磁盘内文件加起来的大小和被占用的大小不一致,这就是磁盘丢失的情况,那么是什么程序占用了磁盘空间?下面小编就给大家介绍下Linux找回丢失磁盘空间的方法. 经常接触linux的用户也许会经常遇到这样的问题: 收到一个磁盘告警,说某某分区已经满了,然后登录服务器 df 一看,发现磁盘确实快满了,然后你就想找到具体是哪个目录满了,于是 du -s * 一看,却发现所有子目录的大小总和却和df显示的总已使用磁盘空间对不上,有时候甚至还相差很多,于是就纳闷了:我的磁盘空

xen虚拟化实战系列(五)xen虚拟机扩展磁盘空间的方法二

随着虚拟化技术的大量使用,使用虚拟化的思维与开始多了起来,例如直接扩展磁盘空间一这种情况,我推荐采用重新添加一块磁盘的方式,符合正常的物理机使用的方式. 增加磁盘空间还有另一种方式,就是直接扩展现有磁盘的空间,本文就采用这种方式. 1.  查看虚拟机配置文件 [root@node1 data]# [root@node1 data]# xm list Name                                      ID Mem(MiB) VCPUs State   Time(s

Linux系统找回丢失磁盘空间的方法

  一些使用Linux系统的用户经常会遇到,显示磁盘空间已满的状况,就不得不删除一些文件了.但是回头算算发现,总文件所占空间大小,和磁盘的总大小并不一致,那么那些剩余的空间都去哪儿了呢?是哪些文件隐藏在角落里占据了一部分的空间.下面小编就来教大家如何找回那些丢失的磁盘空间,彻底清理磁盘中的隐藏文件和空洞文件.以下的三种方法可以逐一进行,就能达到彻底清理的效果了. 经常接触linux的用户也许会经常遇到这样的问题: 收到一个磁盘告警,说某某分区已经满了,然后登录服务器 df 一看,发现磁盘确实快满

MAC系统iTunes清理iOS备份文件增大磁盘空间的方法

  MAC用户将iPad和iPhone与电脑连接后,iTunes会自动备份一些手机中的资料,这样占用了一些MAC的磁盘空间,为了增大MAC的磁盘空间,我们要怎么才能将这些不要的备份文件删除呢? 解决方法: 1.打开iTunes,点击"偏好设置". 2.切换到"设备"模块,选择你需要删除的备份,直接点击"删除备份"就OK了. 这就是删除iTunes中不要的备份文件的方法了,如果用户们不想让太多垃圾文件占用自己的磁盘空间,那么就使用这个方法进行清理把