mongodb集羣安裝

mongodb 的集羣方式主要分爲三種Replica Set / Sharding / Master-Slaver ,這裏只說明最簡單的集羣搭建方式(生產環境),若是有多個節點能夠此類推或者查看官方文檔。html

Replica Setlinux

中文翻譯叫作副本集。其實簡單來講就是集羣當中包含了多份數據,保證主節點掛掉了,備節點能繼續提供數據服務,提供的前提就是數據須要和主節點一致。以下圖

Primary表示主節點,Secondary表示備節點,Mongodb(A)表示仲裁節點。主備節點存儲數據(M,S),仲裁節點不存儲數據。客戶端同時鏈接主節點與備節點,不鏈接仲裁節點。mongodb

默認設置下,主節點提供全部增刪查改服務,備節點不提供任何服務。可是能夠經過設置使備節點提供查詢服務,這樣就能夠減小主節點的壓力,當客戶端進行數據查詢時,請求自動轉到備節點上。這個設置叫作Read Preference Modes,同時Java客戶端提供了簡單的配置方式,能夠沒必要直接對數據庫進行操做。數據庫

仲裁節點是一種特殊的節點,它自己並不存儲數據,主要的做用是決定哪個備節點在主節點掛掉以後提高爲主節點,因此客戶端不須要鏈接此節點。這裏雖然只有一個備節點,可是仍然須要一個仲裁節點來提高備節點級別。
主節點失效,切換過程以下
app

下載Mongo安裝包

官網下載地址
https://www.mongodb.com/download-center/community
選定系統版本
翻譯

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.0.tgz
tar -zxf  https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.0.tgz
mkdir -p /mongodb/data/{master,slaver,arbiter}
mkdir /mongodb/log   
#三個目錄分別對應主,備,仲裁節點

配置各節點的配置文件

#master.conf  
dbpath=/mongodb/data/master  
logpath=/mongodb/log/master.log  
pidfilepath=/mongodb/master.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=192.168.11.11
port=27017  
oplogSize=10000  
fork=true


#slaver.conf  
dbpath=/mongodb/data/slaver  
logpath=/mongodb/log/slaver.log  
pidfilepath=/mongodb/slaver.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=192.168.11.12
port=27017
oplogSize=10000  
fork=true 


#arbiter.conf  
dbpath=/mongodb/data/arbiter  
logpath=/mongodb/log/arbiter.log  
pidfilepath=/mongodb/arbiter.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=192.168.11.13
port=27017
oplogSize=10000  
fork=true

參數解釋

*配置文件中參數解釋:

  dbpath:數據存放目錄

  logpath:日誌存放路徑

  pidfilepath:進程文件,方便中止mongodb

  directoryperdb:爲每個數據庫按照數據庫名創建文件夾存放

  logappend:以追加的方式記錄日誌

  replSet:replica set的名字

  bind_ip:mongodb所綁定的ip地址

  port:mongodb進程所使用的端口號,默認爲27017

  oplogSize:mongodb操做日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5%

  fork:之後臺方式運行進程

配置集羣

#啓動各節點的mongo
./mongod -f master.conf 
./mongod -f slaver.conf 
./mongod -f arbiter.conf 
#配置主,備,仲裁節點
./mongo 192.168.11.11:27017   #ip和port是某個節點的地址 
>use admin  
>cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.11.11:27017',priority:2}, {_id:1,host:'192.168.11.12:27017',priority:1},   {_id:2,host:'192.168.11.13:27017',arbiterOnly:true}] };  
#cfg是能夠任意的名字,固然最好不要是mongodb的關鍵字,conf,config均可以。最外層的_id表示replica set的名字,
members裏包含的是全部節點的地址以及優先級。優先級最高的即成爲主節點,即這裏的192.168.11.11:27017。
特別注意的是,對於仲裁節點,須要有個特別的配置——arbiterOnly:true。這個千萬不能少了,否則主備模式就不能生效。 
arbiterOnly   O爲大寫
>rs.initiate(cfg)  
#查看狀態
> rs.status()
#正在進行配置會提示:"stateStr" : "RECOVERING" 
#末行輸出以下即爲成功

	"ok" : 1,
	"$clusterTime" : {
		"clusterTime" : Timestamp(1567144580, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	},
	"operationTime" : Timestamp(1567144580, 1)
}

參考 :https://www.cnblogs.com/callmecool/p/4662876.html3d

相關文章
相關標籤/搜索