Mongodb集羣有三種模式: Replica Set 、 Sharding、Master-Slaver
這裏舉例說明Replica Set的搭建方式
Mongodb版本:mongodb-linux-x86_64-2.2.6.tgz
Mongodb的安裝配置很簡單,下載源碼包解壓後配置參數啓動即可
服務器分佈情況:
主機 | 用途 |
192.168.1.100 | 主節點(master) |
192.168.1.101 | 備節點+仲裁點(slave+arbiter) |
一、在每臺機器上解壓源包並建立數據目錄:
tar zxf mongodb-linux-x86_64-2.2.6.tgz
mv mongodb-linux-x86_64-2.2.6 /usr/local/mongodb
mkdir -p /data/mongodb/{master,slave,arbiter}
二、建立配置文件:
主節點:
vi /etc/mongodb_master.conf
#master.conf dbpath=/data/mongodb/master logpath=/data/mongodb/master.log pidfilepath=/data/mongodb/master.pid #keyFile=/data/mongodb/mongodb.key directoryperdb=true logappend=true replSet=91db bind_ip=192.168.1.100 port=27017 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000
備節點:
vi /etc/mongodb_slave.conf
#slave.conf dbpath=/data/mongodb/slave logpath=/data/mongodb/slave.log pidfilepath=/data/mongodb/slave.pid #keyFile=/data/mongodb/mongodb.key directoryperdb=true logappend=true replSet=91db bind_ip=192.168.1.101 port=27017 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000
仲裁點:
vi /etc/mongodb_arbiter.conf
#arbiter.conf dbpath=/data/mongodb/arbiter logpath=/data/mongodb/arbiter.log pidfilepath=/data/mongodb/arbiter.pid #keyFile=/data/mongodb/mongodb.key directoryperdb=true logappend=true replSet=91db bind_ip=192.168.1.101 port=27019 #auth=true oplogSize=100 fork=true noprealloc=true #maxConns=4000
備註:
keyFile和auth選項要在集羣配置好後,並且添加了驗證用戶後在啓用
參數說明:
dbpath:存放數據目錄
logpath:日誌數據目錄
pidfilepath:pid文件
keyFile:節點之間用於驗證文件,內容必須保持一致,權限600,僅Replica Set 模式有效
directoryperdb:數據庫是否分目錄存放
logappend:日誌追加方式存放
replSet:Replica Set的名字
bind_ip:mongodb綁定的ip地址
port:端口
auth:是否開啓驗證
oplogSize:設置oplog的大小(MB)
fork:守護進程運行,創建進程
moprealloc:是否禁用數據文件預分配(往往影響性能)
maxConns:最大連接數,默認2000
三、啓動mongodb(可以相對路徑也可以絕對路徑)
/usr/local/mongodb/bin/mongod -f /etc/mongodb_master.conf
/usr/local/mongodb/bin/mongod -f /etc/mongodb_slave.conf
/usr/local/mongodb/bin/mongod -f /etc/mongodb_arbiter.conf
四、在主節點上配置
/usr/local/mongodb/bin/mongo 192.168.1.100 #因爲備節點和仲裁點在同一個機器以端口區分,所以登陸時要加上端口
>use admin
>cfg={ _id:"91db", members:[ {_id:0,host:'192.168.1.100:27017',priority:2},{_id:1,host:'192.168.1.101:27017',priority:1},{_id:2,host:'192.168.1.101:27019',arbiterOnly:true}] };
> rs.initiate(cfg) #使cfg配置生效
說明:
cfg名字可選,只要跟mongodb參數不衝突,_id爲Replica Set名字,members裏面的優先級priority值高的爲主節點,對於仲裁點一定要加上arbiterOnly:true,否則主備模式不生效
查看是否生效:rs.status()
結果顯示每天機器的信息,stateStr字段爲主備仲裁節點的標誌,下面會顯示字樣:"ok" : 1