`
xitonga
  • 浏览: 589711 次
文章分类
社区版块
存档分类
最新评论

Mongodb中回收remove的磁盘空间

 
阅读更多

-- 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");

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics