mongodb 释放磁盘空间

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-10-13 17:51:18

mongodb 释放磁盘空间的相关文章

MongoDB释放磁盘空间

1. 先删除旧的文档db.remove({}): 2. 从副本集中移除待清理的成员: (1) 登录副本集中的 Primary 服务器(/opt/mongo1/bin/mongo --port 27017) (2) rs.remove("192.168.1.54:27019") 3. 关闭待清理的 mongodb 服务器 (1) 登录待清理的 mongodb 服务器(/opt/mongo2/bin/mongo --port 27018) (2) user admin; db.shutdo

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

下面我们一起来看看关于mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法,希望文章对各位同学会有所帮助. db.copyDatabase("from","to","127.0.0.1:16161"); 将127.0.0.1上的from库.拷贝到to库. 这样做有一个额外的好处.就是from库中可能是删除过数据的库.看我们知道删除数据时磁盘空间是不会被释放的.参考博客里的另一篇文章:mongodb删除集合后磁盘空间不释放

mongo删除表或库后,释放磁盘空间

参考文档: http://bbs.csdn.net/topics/390906498 2-硬盘空间不足,如何释放已删除的mongodb集合 https://segmentfault.com/q/1010000002414576 3-mongo剔除大表之后的操作 http://www.myexception.cn/open-source/1441621.html 4-mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法. http://www.111cn.net/datab

MySQL删除数据几种情况以及是否释放磁盘空间【转】

MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM .truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等.所以速度上应该是接近drop table的速度; 3.delet

MongoDB repairDatabase 释放磁盘空间

repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法. repairDatabase is the appropriate and the only way to reclaim disk space. 虽然可以用 db.repairDatabase()修复数据.但这种方法有两个不好的地方.1.在生产上操作如果意外停止可能会造成数据无法恢复的危险.2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了 db.repairDatabase()的. 注意,repai

mongodb drop不释放磁盘空间

点击(此处)折叠或打开 use demodb //使用demodb,以下假设操作的collection是foo db.foo.remove({"id":"123456"}) //删除一条数据 db.foo.remove() //删除foo中的所有记录,但是foo还存在,show collection还可以看到foo db.foo.drop() //删除foo这个collection,(show collection已经看不到foo了)但是查看数据文件发现大小不变,M

Linux 删除文件后空间不释放磁盘空间

在Linux操作系统下,有个没用的文件占用了400G,于是删除掉. [[email protected] log]# rm -rf messages [[email protected] log]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/sda3       545G  438G  101G  82% /tmpfs            32G     0   32G   0% /dev/shm/dev/sda1  

如何批量清除128组节点db上面的过期的binlog,释放磁盘空间。(转)

如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binlog位置, 然后再远程去purge master上面的binlog. 1,  建立slave dbserver列表 slavelist; 一个slave一行. 2,远程获取slave db上面的binlog位置以及slave的master主机名(也许是ip地址) 3,拿到binlog位置以及mast

批量清除过期的binlog释放磁盘空间

方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下 1,  建立双master列表masterlist; 一个master一行. 2,远程获取master db上面的binlog位置以及对应master的master主机名(也许是ip地址) 3,拿到binlog位置以及master主机名,然后ssh远程清理掉远程master上面的binlog 4, 采用shell for循环操作step 2以及step 3. clearbinlog.sh脚本如下 [p