新聞中心
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由 C++ 語言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案,下面為大家詳細(xì)講解一下MongoDB副本集存儲(chǔ)回收機(jī)制。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),休寧縣企業(yè)網(wǎng)站建設(shè),休寧縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,休寧縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,休寧縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
描述:
目前Mongodb副本集為三節(jié)點(diǎn)+1仲裁節(jié)點(diǎn),已經(jīng)穩(wěn)定運(yùn)行兩年,由于數(shù)據(jù)不斷的更新和刪除,存儲(chǔ)空間很大一部分沒有釋放,數(shù)據(jù)庫中查看數(shù)據(jù)庫暫用存儲(chǔ)并不大,存儲(chǔ)沒有回收(1.8T數(shù)據(jù)刪除掉了1.2T),為了節(jié)省成本進(jìn)行維護(hù)。
解決辦法:
在這里沒有使用官方的磁盤整理 我們采用新節(jié)點(diǎn)替換老節(jié)點(diǎn)的方式,要注意數(shù)據(jù)庫的oplog設(shè)置的大小,是否能存儲(chǔ)所有的信息。 1、添加新的節(jié)點(diǎn)重新同步 啟動(dòng)新節(jié)點(diǎn)新節(jié)點(diǎn)配置文件和復(fù)制集成員配置文件保持一致,數(shù)據(jù)庫版本也要一致。 新節(jié)點(diǎn)1T存儲(chǔ),我們有一個(gè)節(jié)點(diǎn)隱藏專門為程序統(tǒng)計(jì)使用,線上業(yè)務(wù)程序不可見訪問不到這個(gè)節(jié)點(diǎn), 將新節(jié)點(diǎn)加入復(fù)制集時(shí)設(shè)置為隱藏節(jié)點(diǎn) 在復(fù)制集primary節(jié)點(diǎn)操作: 延遲0秒,權(quán)重為0,隱藏開啟,同步索引開啟
mongo> rs.add({_id:1,host:'10.0.6.44:27010',"slaveDelay":0,"priority":0,"hidden":true,"buildIndexes":true});
mongo> rs.status() #查看節(jié)點(diǎn)成員狀態(tài)
通過查看節(jié)點(diǎn)狀態(tài)我發(fā)現(xiàn),新加如的節(jié)點(diǎn)同步源我們的主節(jié)點(diǎn),我們要保證線上業(yè)務(wù),我們要修改同步源。
2、修改新加入節(jié)點(diǎn)同步源
在復(fù)制集primary節(jié)點(diǎn)操作
Run replSetSyncFrom in the admin database.需要切換到admin數(shù)據(jù)庫使用此命令。
mongo> db.adminCommand( { replSetSyncFrom: "10.0.6.55:27010" })
#設(shè)置同步源為隱藏節(jié)點(diǎn)
Mongodb副本集存儲(chǔ)回收
查看是否修改成功:
3、我們通過命令查看新添加節(jié)點(diǎn)是否同步完成 查看節(jié)點(diǎn)狀態(tài)
PRIMARY> rs.status()
"members" : [
{
"_id" : 1,
"name" : "10.0.6.44:27010",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY", #由開始的STARTUP2變?yōu)榱薙ECONDARY
"uptime" : 2991253,
"optime" : {
"ts" : Timestamp(1584078756, 24),
"t" : NumberLong(1687)
},
"optimeDurable" : {
"ts" : Timestamp(1584078756, 24),
"t" : NumberLong(1687)
},
"optimeDate" : ISODate("2020-03-13T05:52:36Z"),
"optimeDurableDate" : ISODate("2020-03-13T05:52:36Z"),
"lastHeartbeat" : ISODate("2020-03-13T05:52:36.903Z"),
"lastHeartbeatRecv" : ISODate("2020-03-13T05:52:37.019Z"),
"pingMs" : NumberLong(1),
"lastHeartbeatMessage" : "",
"syncingTo" : "10.10.20.31:27010",
"syncSourceHost" : "10.10.20.31:27010",
"syncSourceId" : 5,
"infoMessage" : "",
"configVersion" : 171
},
查看節(jié)點(diǎn)復(fù)制是否有延遲
PRIMARY> db.printSlaveReplicationInfo()
source: 10.0.6.44:27010
syncedTo: Fri Mar 13 2020 13:49:54 GMT+0800 (CST)
1 secs (0 hrs) behind the primary
PRIMARY>
4、隱藏節(jié)點(diǎn)數(shù)據(jù)同步完成以后,修改為程序可見 連接到PRIMARY節(jié)點(diǎn)
PRIMARY> conf = rs.conf(); #查看10.0.6.44:27010排序第幾,不是_id
PRIMARY> conf.members[3].priority=10 #從第一個(gè)節(jié)點(diǎn)開始為0 、1、 2、 3 //10.0.6.44:27010排序3,修改權(quán)重為10
10
rs02:PRIMARY> conf.members[3].hidden=false #隱藏設(shè)為false
false
PRIMARY> rs.reconfig(conf); #重新加載配置
{
"ok" : 1,
"operationTime" : Timestamp(1584080742, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1584080742, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
PRIMARY> rs.config()
5、查看新節(jié)點(diǎn)日志是否正常 6、可以關(guān)閉老的節(jié)點(diǎn),并在集群中去掉
PRIMARY> rs.remove("10.1.1.77:27030")
{
"ok" : 1,
"operationTime" : Timestamp(1584081322, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1584081322, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
PRIMARY>
復(fù)制集其多節(jié)點(diǎn)采用輪訓(xùn)替換的方式,完成磁盤整理。
本文題目:講解一下MongoDB副本集存儲(chǔ)回收機(jī)制
路徑分享:http://m.fisionsoft.com.cn/article/djsddsd.html


咨詢
建站咨詢
