您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關MONGODB復制集建立及節點的添加是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
MONGODB 復制集合添加從節點其實并不難,但有些事情越是覺得容易,越容易出問題。最近某些事情的原因,公司的MONGODB 需要添加一個從節點,hidden 不進行投票選舉,供給第三方使用。
首先強調一點,任何操作必須先經過檢驗,下面就從一個測試復制集群的搭建到一個節點的添加來做一個完整的試驗。
試驗包含三臺機器,244 245 246
為了操作添加節點的事宜,先將244,245 兩個節點作為MONGODB 的初始集群。其實網絡上安裝的帖子很多,總結以下的一些問題
1 以root 賬號來操作數據庫,在任何數據庫中都不要使用ROOT 來作為操作數據庫的賬號
2 建議安裝時不要使用RPM包,其實這個事情在其他數據庫也是一樣,PG,MYSQL, 都不建議你用RPM包來進行安裝。
3 安裝集群比安裝單機多一道的手續,就是需要在確定的第一臺MONGODB 上添加賬號信息,需要添加 root權限的賬號 而這臺primary(有可能是也有可能不是),在添加賬號時,需要時單機的模式
4 生成keyfile file 文件的權限需要 600并且所有集群中的 keyfile文件的內容需要時一致的
例如,下面的錯誤其實就是因為 keyfile 的內容存在問題,而導致的MONGODB 的節點無法加入的錯誤信息。
在生成正確的 keyfile 后,初始化集群就OK 了
下面我們就需要去來做深層次的試驗
1 添加一個新的節點, 而添加一個新的節點也有幾種情況
1.1 添加的節點的集群,沒有什么數據(只比第二種方式減少鎖庫,解庫,拷貝時間緊的環節)
1.2 添加節點的集群,已經有了大量的數據
我們先討論 1.2 的情況,如果我現在的集群已經有大量的數據的情況下,是否需要先將數據直接拷貝到需要添加的節點后,在添加節點,這樣的方式是被推薦的,而一般來說我們需要先鎖定被拷貝的數據庫,然后拷貝數據,在拷貝完畢后,在將數據庫解鎖。
一般為了避免影響業務(一般來說已經有了1主兩從的情況下),我們找到一臺從庫,將數據庫鎖定(也就是不在接受新的數據)
操作步驟
1 登錄到從庫,rs.slaveOk() 運行此命令保證可以在從庫可以進行相關后續命令的操作
2 我們將數據目錄下的數據拷貝到需要添加的節點,此時要加入的節點不應該啟動
而不巧的是,在測試時我拷貝的數據,拷貝錯誤,拷貝到了primary 庫(當然是成心的),而primary 庫不會阻攔你copy 數據并且覆蓋數據,在拷貝的同時 mongo 的服務直接就停止了,并且在次啟動mongodb 報錯
并且系統提示4.03 版本可能會修復這個問題,但是目前這樣的錯誤,是無法補救的,所以拷貝數據的時候一定要看清楚位置。
OK 為了繼續做這個實驗,我們將mongodb 中已經被毀掉的主庫的數據清空,在此重新啟動被損壞的服務器,啟動后,再次查看rs.status()
可以看到 主庫已經變為 原來的從庫
這也是提醒大家,MONGODB 的重要庫一定要跑在復制集中,并且就算主庫被毀,將數據清空后,從新啟動mongo 服務后,毀掉的節點會自動添加回原來的復制集,并作為從節點工作。
這次繼續剛才的試驗
我們再次停止從庫的寫入,開始復制數據到新的從庫,然后復制完畢,解開從庫的寫入限制,然后啟動第二個從庫。
啟動成功
然后我們開始添加新的節點
rs.add({host:"10.50.132.246:27027"})
添加成功
但我們現在的要求是,新添加的節點要hidden 并且不能進行選舉和被選舉。
1 cfg_rs = rs.conf();
我們將系統中已經存在的信息復制到變量當中
2 cfg_rs;
查看變量是否正確
3
cfg_rs.members[2].votes = 0;
cfg_rs.members[2].priority = 0;
我們將需要改變的節點進行設置
rs.reconfig(cfg_rs);
整體的任務結束,我們來查看我們當前的設置是否生效
OK 設置已經完成,節點2 已經配置成功 成功hidden, no-votes , priority = 0 的節點。
以上就是MONGODB復制集建立及節點的添加是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。