Mongodb中回收remove的磁碟空間

mchdba發表於2014-03-06

-- purge disk space
1 首先使用rs.remove(“ip:port”)移除一個從庫,使其下線。

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章