通过cmd打开一个命令行窗口。通过mongo命令连接本地MongoDB数据库服务。注意:本地MongoDB服务需要工作在27017端口上,图示,连接成功即可。
查看需要处理的集合:showdb命令查看所有数据库。use目标数据库,切换到目标数据库中。showcollections查看当前数据库下所有集合信息。
方法/步骤在mongodb的官方上search mongodump没有相应的资料,自己就在shell命令行里面 :
/data/mongodb-linux-x86_64-1.6.0/bin/mongodump --help 了一把, 自己来测试了,测试总结如下:
备份本机mongodb到/tmp/bakup目录下面:[root@localhost csf]# /data/mongodb-linux-x86_64-1.6.0/bin/mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
将/tmp/backup 下面的文件导入数据库:[root@localhost csf]#/data/mongodb-linux-x86_64-1.6.0/bin/mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在;/backup/mongodb则是备份文件存放路径
原因是mongodb设计的本身机制问题造成的。首先,mongodb在创建数据文件时,会根据64M,128M,256M...递增的方式产生数据文件,最大数据文件为2G,增大到2G之后,后面新增的数据文件都占用2G空间。
当删除某一个表的数据时,mongodb会标记你删除该表所在数据文件位置为:该部分的数据已经删除,但是不会释放该数据文件所占用的空间,当有新的数据进来之后,会将数据分配到该数据文件中。
一方面是:删除文件后不产生多余的数据碎片,
另一方面不做数据的大规模迁移,减少mongodb内部的IO *** 作。
所以在删除数据表之后,会发现系统空间并没有释放,从mongodb本身看,空间已经释放了,被删除数据的空间依然可用;
但从系统角度看,空间没有释放,并不会影响数据的存储。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)