偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

【私貨】MongoDB 副本集的運(yùn)維部署

存儲(chǔ) 存儲(chǔ)軟件 MongoDB
今天趁給團(tuán)隊(duì)分享了MongoDB實(shí)戰(zhàn),繼續(xù)給大家聊聊MongoDB的副本集配置部署。

今天趁給團(tuán)隊(duì)分享了MongoDB實(shí)戰(zhàn),繼續(xù)給大家聊聊MongoDB的副本集配置部署。

副本集介紹

什么是副本集?副本集是MongoDB的復(fù)制系統(tǒng),用于將數(shù)據(jù)同步到各個(gè)服務(wù)器的過程。

單節(jié)點(diǎn)在測(cè)試環(huán)境還行,但是在線上生產(chǎn)環(huán)境就不合適了,因?yàn)槿绻麊喂?jié)點(diǎn)出問題了,會(huì)導(dǎo)致應(yīng)用宕機(jī)。

所以這個(gè)時(shí)候我們可以MongoDB的復(fù)制功能,使用多節(jié)點(diǎn)進(jìn)行部署,其中一臺(tái)服務(wù)器節(jié)點(diǎn)宕機(jī)了,還有其他節(jié)點(diǎn)運(yùn)行,進(jìn)行故障轉(zhuǎn)移,讓應(yīng)用不會(huì)受到影響,從而更為高可用。

[[252309]]

說到故障轉(zhuǎn)移,MongoDB最初支持一種叫「主從模式」(master-slave)這種模式下MongoDB不會(huì)做自動(dòng)故障轉(zhuǎn)移的。這種模式現(xiàn)在已經(jīng)不推薦使用了,這里就不過多介紹了。

由于副本集新增節(jié)點(diǎn)或者刪除節(jié)點(diǎn)都非常方便,建議即使你一開始是單節(jié)點(diǎn)也以副本集的方式啟動(dòng),方便后續(xù)進(jìn)行節(jié)點(diǎn)添加。

成員介紹

副本集成員這里主要介紹仲裁者arbiter, 延遲備份節(jié)點(diǎn)這兩種成員。

說到仲裁者,這里需要說一個(gè)副本集成員之間選舉主節(jié)點(diǎn)過程有一個(gè)滿足「大多數(shù)」原則 即 n/2 + 1 。仲裁者作用就是「參與選舉」,不保存數(shù)據(jù)。解決在一開始我們應(yīng)用程序量很小的時(shí)候,沒有資源,不想保存三分及以上數(shù)據(jù)副本。

  1. rs.add({"_id": 3, "host""server-3:27017""arbiterOnly"true}) 

這里注意:

最多只能使用一個(gè)仲裁者

奇數(shù)節(jié)點(diǎn)不需要仲裁者

盡可能使用奇數(shù)個(gè)數(shù)據(jù)節(jié)點(diǎn),不使用仲裁者

說完仲裁者,我們說一下「延遲備份節(jié)點(diǎn)」,在給團(tuán)隊(duì)內(nèi)部做分享的時(shí)候,我們公司的運(yùn)維大神專門強(qiáng)調(diào)要講這個(gè),這個(gè)是有歷史血淚的。

延遲備份節(jié)點(diǎn)主要作用避免有人不小心刪除了主數(shù)據(jù)庫(kù),或者應(yīng)用程序有一個(gè)嚴(yán)重Bug導(dǎo)致把所有數(shù)據(jù)玩壞了。為了避免這一類問題,設(shè)置一個(gè)延遲備份節(jié)點(diǎn)。強(qiáng)烈建議線上配置,這是有血淚史的。

  1. rs.add( { _id:4, host: "server-4:27020", priority: 0, hidden:true, slaveDelay:7200, votes:0, buildIndexes:true, arbiterOnly:false } ) 

其實(shí)這也算是一個(gè)備份方式之一,保底計(jì)劃。

副本集初始化

副本集成員啟動(dòng)之后,配置這里我放在***一節(jié)來說,這里我們直接說副本集啟動(dòng)后的初始化操作。

成員初始化操作主要有4個(gè)步奏:

  1. 成員在local.me自己創(chuàng)建標(biāo)志符,刪除本地已存在的數(shù)據(jù),進(jìn)行數(shù)據(jù)同步
  2. 將同步源的所有記錄數(shù)據(jù)克隆到本地,這一步是最耗時(shí)的
  3. 將***個(gè)oplog同步中操作記錄下來。
  4. 創(chuàng)建索引,同步創(chuàng)建索引期間的所有操作

通過上面的4個(gè)步奏,就完成了副本集初始化。

副本集備份

備份的方式簡(jiǎn)單小結(jié)有以下四種方式:

一、 文件系統(tǒng)快照:其中文件系統(tǒng)快照需要文件系統(tǒng)本身支持,mongod開啟日記系統(tǒng),后面我配置會(huì)說。

二、 復(fù)制數(shù)據(jù)目錄:就是復(fù)制數(shù)據(jù)目錄所有文件,在備份我們需要防止數(shù)據(jù)文件不能發(fā)生改變,否則將不可用。

保證數(shù)據(jù)不變,可以通過

  1. db.fsyncLock() 進(jìn)行鎖定所有數(shù)據(jù)庫(kù),運(yùn)行之后后續(xù)操作會(huì)加入隊(duì)列等待。 
  2. cp -R /data/db/* /backup/ 
  3. db.fsyncUnlock() # 解鎖數(shù)據(jù)庫(kù)能再次進(jìn)行寫操作 

三、mongodump:備份恢復(fù)速度較慢,不推薦

四、延遲備份節(jié)點(diǎn): 原則上不算備份策略,但是比較重要通過它來延遲防止數(shù)據(jù)誤操作。

副本集部署

***我們終于說到了副本集配置,這里我們配置好mongod.conf配置,replaSetName設(shè)置為test_rs名,配置如下:

  1. storage: 
  2.   dbPath: /test/mongodb/rs1  # 配置路徑 
  3.   journal: 
  4.     enabled: true # 開啟日記系統(tǒng) 
  5. systemLog: 
  6.   destination: file 
  7.   logAppend: true 
  8.   path: /test/log/mongodb/rs1.log  # 日志 
  9.  
  10. processManagement: 
  11.   pidFilePath: /var/run/mongodb/rs1.pid 
  12.  
  13. net: 
  14.   port: 27018 
  15.   bindIp: 1.2.3.4 # 綁定固定IP 
  16.  
  17. replication: 
  18.    replSetName: "test_rs" # 選定配置名 
  19.  
  20. security: 
  21.   authorization: enabled 
  22.   keyFile: /test/mongodb/key/test_rs.key 

除了上面的配置外,我們可以通過配置init.d的啟動(dòng)腳本,大家可以去github上面進(jìn)行搜索一下,有很多啟動(dòng)腳本通過 sudo service mongodb.rs1 start 進(jìn)行啟動(dòng)處理,通過多個(gè)節(jié)點(diǎn)進(jìn)行啟動(dòng)加入到副本集。

由于mongo默認(rèn)是沒有密碼的,對(duì)于數(shù)據(jù)庫(kù)的配置,除了配置帳號(hào)密碼以外,如果我們是在騰訊云或者阿里云服務(wù)器上,需要配置安全組,只允許內(nèi)網(wǎng)固定幾臺(tái)機(jī)器IP,固定端口訪問。

配置優(yōu)化

除了MongoDB配置啟動(dòng)好了,我們還需要對(duì)服務(wù)器做一些配置調(diào)整,主要有以下幾點(diǎn):

  • 禁止內(nèi)存過度分配:overcommit_memory=2
  • 禁用大內(nèi)存頁(yè)面HugePage:
  • 修改文件描述符 > 20000 或者***制
  • 關(guān)閉定期任務(wù),比如軟件包自動(dòng)更新,消耗CPU及內(nèi)存資源,造成服務(wù)抖動(dòng)異常(類似Redis異步任務(wù)hgetall)

其中vercommit_memory設(shè)置1,滿足所有內(nèi)存分配請(qǐng)求(redis部署),設(shè)置2分配虛擬空間不超過swap與一小部分過度分配的和,設(shè)置0,讓內(nèi)核猜測(cè)過度分配大小。

禁止大內(nèi)存:如果不能全部存進(jìn)內(nèi)存,不考慮超過內(nèi)存容量情況,就可以用大內(nèi)存,但是不能全部存進(jìn)去的話,那么大塊數(shù)據(jù)會(huì)導(dǎo)致更多IO,而且「臟數(shù)據(jù)」落地到硬盤可能從KB到MB。

至此我們服務(wù)部署上線結(jié)束,由于個(gè)人經(jīng)驗(yàn)所限,難免有些疏忽遺漏甚至錯(cuò)誤,歡迎留言指出,非常感謝。

責(zé)任編輯:武曉燕 來源: 濤哥聊Python
相關(guān)推薦

2013-01-29 10:45:19

MongoDB

2023-10-23 19:35:33

數(shù)據(jù)節(jié)點(diǎn)MongoDB

2023-03-14 23:24:27

Mongodb副本集架構(gòu)

2023-11-28 16:35:40

MongoDB遷移Oplog

2014-09-12 14:50:07

運(yùn)維Docker

2019-03-15 10:13:10

運(yùn)維云計(jì)算運(yùn)營(yíng)

2014-08-26 11:08:50

OpenStack運(yùn)維

2019-10-11 10:52:42

Web架構(gòu)MongoDB

2013-03-29 09:15:08

IT運(yùn)維運(yùn)維人員運(yùn)維工程師

2020-06-01 16:05:17

MongoDB復(fù)制集數(shù)據(jù)庫(kù)

2025-09-26 02:50:00

2016-12-13 13:15:49

運(yùn)維

2017-12-15 09:20:20

IT運(yùn)維順豐

2019-03-19 08:41:38

Linux運(yùn)維變更

2015-08-21 09:32:15

Openstack京東網(wǎng)絡(luò)運(yùn)維

2024-05-20 09:51:53

MongoDB數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)服務(wù)器

2015-06-10 14:37:09

網(wǎng)易私有云OpenStack

2013-04-11 17:31:28

運(yùn)維自動(dòng)化Cobbler

2015-11-03 16:03:09

AppDeploy運(yùn)維工具

2010-01-21 22:19:25

網(wǎng)絡(luò)優(yōu)化運(yùn)維管理摩卡軟件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)