溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MONGODB復(fù)制集建立及節(jié)點的添加是怎樣的

發(fā)布時間:2021-09-29 11:36:31 來源:億速云 閱讀:115 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)MONGODB復(fù)制集建立及節(jié)點的添加是怎樣的,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

MONGODB 復(fù)制集合添加從節(jié)點其實并不難,但有些事情越是覺得容易,越容易出問題。最近某些事情的原因,公司的MONGODB 需要添加一個從節(jié)點,hidden 不進行投票選舉,供給第三方使用。

首先強調(diào)一點,任何操作必須先經(jīng)過檢驗,下面就從一個測試復(fù)制集群的搭建到一個節(jié)點的添加來做一個完整的試驗。

試驗包含三臺機器,244 245 246

為了操作添加節(jié)點的事宜,先將244,245 兩個節(jié)點作為MONGODB 的初始集群。其實網(wǎng)絡(luò)上安裝的帖子很多,總結(jié)以下的一些問題

1  以root 賬號來操作數(shù)據(jù)庫,在任何數(shù)據(jù)庫中都不要使用ROOT 來作為操作數(shù)據(jù)庫的賬號

2  建議安裝時不要使用RPM包,其實這個事情在其他數(shù)據(jù)庫也是一樣,PG,MYSQL, 都不建議你用RPM包來進行安裝。

3  安裝集群比安裝單機多一道的手續(xù),就是需要在確定的第一臺MONGODB 上添加賬號信息,需要添加 root權(quán)限的賬號 而這臺primary(有可能是也有可能不是),在添加賬號時,需要時單機的模式

4  生成keyfile file 文件的權(quán)限需要 600并且所有集群中的 keyfile文件的內(nèi)容需要時一致的

例如,下面的錯誤其實就是因為 keyfile 的內(nèi)容存在問題,而導(dǎo)致的MONGODB 的節(jié)點無法加入的錯誤信息。

在生成正確的 keyfile 后,初始化集群就OK 了

下面我們就需要去來做深層次的試驗

1  添加一個新的節(jié)點, 而添加一個新的節(jié)點也有幾種情況

1.1 添加的節(jié)點的集群,沒有什么數(shù)據(jù)(只比第二種方式減少鎖庫,解庫,拷貝時間緊的環(huán)節(jié))

1.2 添加節(jié)點的集群,已經(jīng)有了大量的數(shù)據(jù)

我們先討論 1.2 的情況,如果我現(xiàn)在的集群已經(jīng)有大量的數(shù)據(jù)的情況下,是否需要先將數(shù)據(jù)直接拷貝到需要添加的節(jié)點后,在添加節(jié)點,這樣的方式是被推薦的,而一般來說我們需要先鎖定被拷貝的數(shù)據(jù)庫,然后拷貝數(shù)據(jù),在拷貝完畢后,在將數(shù)據(jù)庫解鎖。

一般為了避免影響業(yè)務(wù)(一般來說已經(jīng)有了1主兩從的情況下),我們找到一臺從庫,將數(shù)據(jù)庫鎖定(也就是不在接受新的數(shù)據(jù))

操作步驟

1  登錄到從庫,rs.slaveOk() 運行此命令保證可以在從庫可以進行相關(guān)后續(xù)命令的操作

2 我們將數(shù)據(jù)目錄下的數(shù)據(jù)拷貝到需要添加的節(jié)點,此時要加入的節(jié)點不應(yīng)該啟動

而不巧的是,在測試時我拷貝的數(shù)據(jù),拷貝錯誤,拷貝到了primary 庫(當(dāng)然是成心的),而primary 庫不會阻攔你copy 數(shù)據(jù)并且覆蓋數(shù)據(jù),在拷貝的同時 mongo 的服務(wù)直接就停止了,并且在次啟動mongodb 報錯

并且系統(tǒng)提示4.03 版本可能會修復(fù)這個問題,但是目前這樣的錯誤,是無法補救的,所以拷貝數(shù)據(jù)的時候一定要看清楚位置。

OK 為了繼續(xù)做這個實驗,我們將mongodb 中已經(jīng)被毀掉的主庫的數(shù)據(jù)清空,在此重新啟動被損壞的服務(wù)器,啟動后,再次查看rs.status()

可以看到 主庫已經(jīng)變?yōu)?原來的從庫

這也是提醒大家,MONGODB 的重要庫一定要跑在復(fù)制集中,并且就算主庫被毀,將數(shù)據(jù)清空后,從新啟動mongo 服務(wù)后,毀掉的節(jié)點會自動添加回原來的復(fù)制集,并作為從節(jié)點工作。

這次繼續(xù)剛才的試驗

我們再次停止從庫的寫入,開始復(fù)制數(shù)據(jù)到新的從庫,然后復(fù)制完畢,解開從庫的寫入限制,然后啟動第二個從庫。

啟動成功

然后我們開始添加新的節(jié)點

rs.add({host:"10.50.132.246:27027"})

添加成功

但我們現(xiàn)在的要求是,新添加的節(jié)點要hidden 并且不能進行選舉和被選舉。

1  cfg_rs = rs.conf();

我們將系統(tǒng)中已經(jīng)存在的信息復(fù)制到變量當(dāng)中

2  cfg_rs; 

查看變量是否正確

cfg_rs.members[2].votes = 0;

cfg_rs.members[2].priority = 0;

我們將需要改變的節(jié)點進行設(shè)置

rs.reconfig(cfg_rs);

整體的任務(wù)結(jié)束,我們來查看我們當(dāng)前的設(shè)置是否生效

OK 設(shè)置已經(jīng)完成,節(jié)點2 已經(jīng)配置成功 成功hidden, no-votes , priority = 0 的節(jié)點。

以上就是MONGODB復(fù)制集建立及節(jié)點的添加是怎樣的,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI