成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【私貨】MongoDB 副本集的運維部署

存儲 存儲軟件 MongoDB
今天趁給團隊分享了MongoDB實戰,繼續給大家聊聊MongoDB的副本集配置部署。

今天趁給團隊分享了MongoDB實戰,繼續給大家聊聊MongoDB的副本集配置部署。

副本集介紹

什么是副本集?副本集是MongoDB的復制系統,用于將數據同步到各個服務器的過程。

單節點在測試環境還行,但是在線上生產環境就不合適了,因為如果單節點出問題了,會導致應用宕機。

所以這個時候我們可以MongoDB的復制功能,使用多節點進行部署,其中一臺服務器節點宕機了,還有其他節點運行,進行故障轉移,讓應用不會受到影響,從而更為高可用。

[[252309]]

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

由于副本集新增節點或者刪除節點都非常方便,建議即使你一開始是單節點也以副本集的方式啟動,方便后續進行節點添加。

成員介紹

副本集成員這里主要介紹仲裁者arbiter, 延遲備份節點這兩種成員。

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

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

這里注意:

最多只能使用一個仲裁者

奇數節點不需要仲裁者

盡可能使用奇數個數據節點,不使用仲裁者

說完仲裁者,我們說一下「延遲備份節點」,在給團隊內部做分享的時候,我們公司的運維大神專門強調要講這個,這個是有歷史血淚的。

延遲備份節點主要作用避免有人不小心刪除了主數據庫,或者應用程序有一個嚴重Bug導致把所有數據玩壞了。為了避免這一類問題,設置一個延遲備份節點。強烈建議線上配置,這是有血淚史的。

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

其實這也算是一個備份方式之一,保底計劃。

副本集初始化

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

成員初始化操作主要有4個步奏:

  1. 成員在local.me自己創建標志符,刪除本地已存在的數據,進行數據同步
  2. 將同步源的所有記錄數據克隆到本地,這一步是最耗時的
  3. 將***個oplog同步中操作記錄下來。
  4. 創建索引,同步創建索引期間的所有操作

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

副本集備份

備份的方式簡單小結有以下四種方式:

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

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

保證數據不變,可以通過

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

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

四、延遲備份節點: 原則上不算備份策略,但是比較重要通過它來延遲防止數據誤操作。

副本集部署

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

  1. storage: 
  2.   dbPath: /test/mongodb/rs1  # 配置路徑 
  3.   journal: 
  4.     enabled: true # 開啟日記系統 
  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的啟動腳本,大家可以去github上面進行搜索一下,有很多啟動腳本通過 sudo service mongodb.rs1 start 進行啟動處理,通過多個節點進行啟動加入到副本集。

由于mongo默認是沒有密碼的,對于數據庫的配置,除了配置帳號密碼以外,如果我們是在騰訊云或者阿里云服務器上,需要配置安全組,只允許內網固定幾臺機器IP,固定端口訪問。

配置優化

除了MongoDB配置啟動好了,我們還需要對服務器做一些配置調整,主要有以下幾點:

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

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

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

至此我們服務部署上線結束,由于個人經驗所限,難免有些疏忽遺漏甚至錯誤,歡迎留言指出,非常感謝。

責任編輯:武曉燕 來源: 濤哥聊Python
相關推薦

2013-01-29 10:45:19

MongoDB

2023-10-23 19:35:33

數據節點MongoDB

2023-03-14 23:24:27

Mongodb副本集架構

2023-11-28 16:35:40

MongoDB遷移Oplog

2014-09-12 14:50:07

運維Docker

2019-03-15 10:13:10

運維云計算運營

2014-08-26 11:08:50

OpenStack運維

2013-03-29 09:15:08

IT運維運維人員運維工程師

2019-10-11 10:52:42

Web架構MongoDB

2020-06-01 16:05:17

MongoDB復制集數據庫

2017-12-15 09:20:20

IT運維順豐

2016-12-13 13:15:49

運維

2019-03-19 08:41:38

Linux運維變更

2024-05-20 09:51:53

MongoDB數據庫管理數據庫服務器

2011-11-24 21:59:55

運維企業外包

2010-01-21 22:19:25

網絡優化運維管理摩卡軟件

2015-08-21 09:32:15

Openstack京東網絡運維

2015-06-10 14:37:09

網易私有云OpenStack

2015-11-03 16:03:09

AppDeploy運維工具

2013-04-11 17:31:28

運維自動化Cobbler
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久不卡 | 黄网站免费在线看 | 国产高清在线观看 | 久久久一区二区三区 | 午夜激情视频 | 伊人手机在线视频 | 美日韩免费视频 | 日本久久久久久 | 天天精品综合 | 欧洲一区二区在线 | 国产成人精品综合 | 日一区二区 | 我我色综合 | av一级久久| a毛片| 成人一区二区视频 | 一区二区三区视频播放 | 日韩黄a| 一区二区三区国产精品 | 亚洲性人人天天夜夜摸 | 麻豆精品国产91久久久久久 | 日韩精品一区二区三区在线观看 | 欧美久久久久久久久中文字幕 | 午夜成人免费视频 | 国产精品久久久久久吹潮 | 天天曰天天曰 | 欧美一级免费黄色片 | 精品乱人伦一区二区三区 | 日日干夜夜干 | 91高清免费观看 | 亚洲一区毛片 | 美女天堂在线 | 亚洲成人一级 | 国产不卡在线观看 | 国产资源视频 | 日本黄色片免费在线观看 | 亚洲社区在线 | 欧美不卡一区二区三区 | 亚洲品质自拍视频网站 | 欧美激情久久久 | 综合精品在线 |