安裝linux
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.6.tgzmongodb
tar zxvf mongodb-linux-x86_64-2.2.6.tgzshell
mv mongodb-linux-x86_64-2.2.6 mongodb數據庫
cd mongodbapp
mkdir log # 添加日誌文件目錄ide
mkdir data # 添加數據目錄字體
mkdir conf # 添加配置文件目錄ui
mkdir arbiter # 添加仲裁服務目錄spa
配置文件rest
進入mongodb下的conf目錄
新建mongod.conf
編輯mongod.conf,在其中添加以下內容:
# mongod.conf
logpath = /data/mongodb/log/mongod.log # 日誌輸出目錄
logappend = true # 若是爲false日誌會覆蓋
fork = true # true爲後臺運行
quiet = true # 安靜輸出
port = 27017 # 端口
maxConns = 1024 # 最大鏈接數
directoryperdb = true # 是否按數據庫分目錄存放數據
dbpath = /data/mongodb/data # 數據目錄
autoresync = true # 若是從庫與主庫同步數據差得多,自動從新同步
oplogSize = 1024 # 日誌大小(單位M)
replSet = replSet1 # 複製集名稱
rest = true # 開啓簡單的rest API
journal = true # 啓用日誌選項,MongoDB的數據操做將會寫入到journal文件夾的文件裏
fastsync=true # 從一個dbpath裏啓用從庫複製服務,該dbpath的數據庫是主庫的快照,可用於快速啓用同步
權限和分組
chown -R root.root mongodb
chmod -R 755 mongodb
啓動服務
cd mongodb/bin/
./mongod -f /data/mongodb/conf/mongod.conf
啓動仲裁服務
若是一個複製集裏節點數小於3個則須要經過添加仲裁節點的方式使節點總數保持在3個或3個以上,不然當有節點掉電時沒法競選新的PRIMARY
cd mongodb/bin/
./mongod -replSet replSet1 -port 27018 -dbpath /data/mongodb/arbiter/ -logpath /data/mongodb/arbiter/arbiter.log -logappend -quiet -fork
中止服務
關閉MongoDB服務請進入mongo shell執行以下命令:
配置複製集
例如,已經按上述方法部署了3個MongoDB服務:220.181.154.204,220.181.154.205,220.181.154.206
則打開任意一個MongoDB的客戶端,按下述紅色字體部分進行配置,其中'replSet1'爲複製集名稱,host對應複製集中各節點的地址和端口
cd mongodb/bin/
./mongo
cfg={_id:'replSet1',members:[
{_id:1,host:'220.181.154.204:27017'},
{_id:2,host:'220.181.154.205:27017'},
{_id:3,host:'220.181.154.206:27017'}]
};
rs.initiate(cfg);
出現下面信息則配置成功:
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
添加節點:
rs.add("220.181.154.204:27017");
添加仲裁節點:
rs.addArb("220.181.154.204:27018");
查看複製集狀態:
rs.status();
設置從庫可查詢
經過shell查詢從庫可在從庫shell中執行以下命令:
rs.slaveOk()
注:複製集中默認從庫不可讀寫,想要查詢從庫必須對每一個會話進行如上設置後才能查詢
經過代碼查詢從庫需在mongodb鏈接配置中進行以下配置:
<mongo:mongo
replica-set="220.181.154.204:27017,220.181.154.205:27017, 220.181.154.204:27018">
<mongo:options slave-ok="true"/>
</mongo:mongo>
注:以上全部紅色字體部分請根據實際狀況進行修改