中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Mongodb replica set模式篇

發布時間:2020-07-24 18:41:29 來源:網絡 閱讀:3381 作者:linuxblind 欄目:MongoDB數據庫

復制集架構圖:

Mongodb replica set模式篇

三節點replicaset配置安裝(無仲裁節點)

Replica set 10.10.20.161-10.10.20.163

10.10.20.161-10.10.20.163這三臺按下面的安裝:

mkdir -p/u01/mongodb/data/replset/

mkdir -p/u01/mongodb/log/

/usr/local/mongodb/bin/mongod--replSet myrepl --fork --port 40001 --dbpath /u01/mongodb/data/replset/--logpath /u01/mongodb/log/replset.log --logappend --oplogSize=4096

 

然后在建立集群,想讓哪臺當主就登陸哪臺的服務器mongo,然后添加如下配置

/usr/local/mongodb/bin/mongo-port 40001

config ={_id: 'myrepl', members: [{_id: 0, host: '10.10.20.161:40001'}, {_id: 1, host:'10.10.20.162:40001'},{_id: 3, host: '10.10.20.163:40001'}]}

rs.initiate(config)

配置完畢后退出再登陸會顯示primary字樣

/usr/local/mongodb/bin/mongo-port 40001

MongoDBshell version: 2.2.2

connectingto: 127.0.0.1:40001/test

myrepl:PRIMARY>

而另外兩個則顯示myrepl:SECONDARY

 

三節點replicaset配置安裝(有仲裁節點)

三節點無仲裁的好處就是一個master寫,兩個slave讀。缺點是,我現在只有兩臺機器,也想做replica set,這樣就出現了問題,如果只有兩臺的話,如果master宕機的話,那么只有slave一臺,投票算法無法進行,所以slave無法提升為master只能只讀,但是如果有一個仲裁節點的話,就可以完成切換,仲裁節點只負責投票不需要同步數據。

添加仲裁節點也很簡單

配置好11從節點后添加rs.add('10.10.20.163:40001',true)或者用rs.addArb('10.10.20.163:40001');

也可在第一次配置時添加

config ={_id: 'myrepl', members: [{_id: 0, host: '10.10.20.161:40001'}, {_id: 1, host:'10.10.20.162:40001'},{_id: 3, host: '10.10.20.163:40001', arbiterOnly: true}]}

rs.initiate(config)

 

讀寫分離:

默認做好Replica set的時候,slave是不開讀的只能做故障切換用,這樣比較浪費,為了分擔主上的壓力,應該讓slave可讀,方法是在slave服務器上執行rs.slaveOk()

 

手動切換master

如果當前master出現問題,我們想把它降級成slave,那么非常簡單,我們只用登陸master上執行rs.stepDown(10),這個命令的意思是10秒不會參與選舉master,當執行完后復制集會從其他slave中選一個提升為master。其實手動切換master除了這個命令還有個方法就是比較復雜,就是修改config,設置優先級,然后重新加載。還有個命令某些時候會用到rs.freeze(10)是在slave上使用的,意思是10秒內不參與master的選舉,如果我們在手動切換master的時候,我們不想讓某些slavemaster可以使用這個命令。

 

replica set相關命令:

rs.status():查看復制集狀態信息

rs.conf():查看復制集配置信息

 

replica set節點的刪除與添加:

假設我們現在需要對其中一個節點10.10.20.163進行維護,那我們需要,需要執行的命令如下

登陸master

執行rs.remove("10.10.20.163:40001")

等維護完之后再執行rs.add("10.10.20.163:40001")添加節點即可,但是如果下線時間太久,導致oplog已經被覆蓋,那么用rs.add添加節點后10.10.20.163的同步將會停止。而且會有報錯Thu Feb 28 09:58:00[rsBackgroundSync] replSet not trying to sync from 10.10.20.162:40001, it isvetoed for 133 more seconds

 

replica set節點同步失敗處理方法:

接著上面的話題,如果同步出現問題,有兩個方法解決

  1. 將一臺同步完好的節點remove然后將數據目錄scp過來再啟動

  2. 將那個不同步的節點的數據目錄刪除,然后啟動,mongodb會自動為你做好同步

 

replicaset何時會切換失效:

這是一個很重要的知識點,就是replica set的成員節點,一旦宕機數量超過一半的時候,PRIMARY會自動降級成為SECONDARY,這時集群里只能只讀,這時為了防止由于網絡原因集群被分割成多塊選出多個主。所以為了保證剩余的機器仍可切換為主,可添加多個仲裁節點。

例如:1+2+1仲裁

一共4個節點,一半就是2,那么如果2個從庫宕機之后,那個主就會自動降級為從,這時這個replica set是不可寫入的,所以不可用。

那么要解決這個問題就可以采用:1+2+2仲裁,這樣的話宕2個從庫達不到節點總數的一半,所以也不會對集群有影響。

 

修改slave的同步源(mongo 2.2新特性):

集群搭好之后,一般來說slave都是從master那里同步,如果如果slave很多的話master壓力很大,我們可以讓某些slave從其他的slave來同步數據,使用rs.syncFrom("10.10.20.163:40001")語句來執行這臺slave從哪臺同步,要注意如果這臺slave重啟后這個設置會失效。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永登县| 德庆县| 澄城县| 昭平县| 临城县| 英吉沙县| 银川市| 民勤县| 栾川县| 奉贤区| 平陆县| 襄樊市| 灵武市| 宁安市| 施秉县| 镇雄县| 牙克石市| 鹿邑县| 北海市| 华宁县| 玉龙| 滕州市| 虞城县| 即墨市| 望江县| 赣榆县| 浮梁县| 余江县| 黄浦区| 禄劝| 永城市| 社旗县| 江源县| 应用必备| 宁蒗| 仁寿县| 宣化县| 潼南县| 抚宁县| 山丹县| 彰化县|