ITPub博客

首页 > 数据库 > NoSQL > Mongodb中回收remove的磁盘空间

Mongodb中回收remove的磁盘空间

原创 NoSQL 作者:mchdba 时间:2014-03-06 17:02:46 1 删除 编辑

-- purge disk space
1 首先使用rs.remove(“ip:port”)移除一个从库,使其下线。
http://docs.mongodb.org/manual/tutorial/remove-replica-set-member/
rs.remove("127.0.0.1:37020");

 

2 关闭下线的mongod进程,kill -2 pid 
kill the pid

3 删除其datapath下的所有文件
rm -rf all datafiles

4 重新启动该mongod
start the mongodb server

 

5 在主库上使用rs.add(“ip:port”)重新加回该从库
rs.add("127.0.0.1:37020");
此从库将会自动从主库或者其他从库同步数据,相当于导数据,不会复制已经删除的数据,而且将进行空间压缩,此过程将会显示recovery或startup状态,不提供服务,待同步完成之后,角色会自动变为secondary。

6 使用rs.status()对比optime,确保从库没有延迟。
rs.status();

7 同样的,将其它的secondary重新整理一遍

8 在primary上面执行, 主库降级 rs.stepDown();

rs.remove("127.0.0.1:37017");

config = {_id: 'sso-resti', members: [
        {_id: 0, host: '127.0.0.1:37017'},
        {_id: 1, host: '127.0.0.1:37018'},
  {_id: 2, host: '127.0.0.1:37019'},
        {_id: 3, host: '127.0.0.1:37020'}
    ]};
    rs.initiate(config);
    rs.status();

rs.add("127.0.0.1:37017");

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26230597/viewspace-1102474/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Happy is the man who is living by his hobby.

注册时间:2011-09-05

  • 博文量
    232
  • 访问量
    3703506