1. 程式人生 > >Mongodb主從進行配置+auth

Mongodb主從進行配置+auth

mongodb 主從 auth

Mongodb主從進行配置+auth


環境介紹

master:172.17.165.245

salve :172.17.165.230

版本 3.4

註:這裏的安裝步驟進行省略了 家目錄在/usr/local/mongodb


配置key文件


cd /usr/local/mongodb/
openssl rand -base64 741 >>keyfile
chmod 700 keyfile


開啟了auth


這裏開啟了auth 需要在相對的數據庫裏面,創建用戶以及分配權限,否則失敗。(master 上面進行創建用戶操作,這裏給的是讀寫的權限方便操作)
> db.runCommand({usersInfo:"admin"})

{
"users" : [
{
"_id" : "kanfa.admin",
"user" : "admin",
"db" : "kanfa",
"roles" : [
{
"role" : "readWrite",
"db" : "kanfa"
},
{
"role" : "read",

"db" : "kanfa"
}
]
}
],
"ok" : 1
}


master配置文件


port = 27017 #端口
bind_ip = 172.17.165.245 ##允許的地址 為了安全
logpath = /usr/local/mongodb/logs/mongodb.log #日誌位置
pidfilepath=/var/run/mongodb/mongodb.pid #pid 位置
dbpath=/data/mongodb #數據存放位置
master = true #確認我是主服務器
fork = true #設置後臺運行

logappend = true #日誌輸入格式
auth = true #開啟認證
keyFile=/usr/local/mongodb/keyfile #添加keyfile


slave 配置文件


port = 27017 #日誌位置
bind_ip = 127.0.0.1, 172.17.165.245 #允許的地址為了安全,特別提示!!!逗號後面有空格!
logpath = /usr/local/mongodb/logs/mongodb.log #日誌位置
pidfilepath=/var/run/mongodb/mongodb.pid #pid 位置
dbpath=/data/mongodb #數據存放位置
slave = true #確認是從服務
source = 172.17.165.245:27017 #規定從屬於哪個ip 註意:ip是主服務器的
fork = true #設置後臺運行
logappend = true #日誌輸入格式
auth = true #開啟日誌
keyFile=/usr/local/mongodb/keyfile #添加keyfile


重啟master slave 服務在從的上面執行


rs.slaveOk()


查看主從並進行測試


在主的上面進行創建集合,然後在從的上面進行查看,創建以及刪除 從的上面有響應的操作則說明配置成功。


resync

  當slave端落後過多的時候需要進行resync。resync會在master上加一個全局的寫鎖,會阻塞其它的寫操作,直到resync結束。可以使用數據庫命令進行resync:


use admin
db.runCommand({"resync":1})


mongodb啟動腳本


腳本放在/etc/init.d/ 下面
chmod 755 mongodb
#!/bin/bash
#
#chkconfig: 2345 80 90
#description: mongodb
start() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
}
stop() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac


特別提示


正確關閉mongodb的方法


warning:千萬不能使用kill -9 <pid>,因為MongoDB使用mmap方式進行數據文件管理,也就是說寫操作基本是在內存中進行,寫操作會被每隔60秒(syncdelay設定)的flush到磁盤裏。如果在這60秒內flush處於停止事情我們進行kill -9那麽從上次flush之後的寫入數據將會全部丟失。
如果在flush操作進行時執行kill -9則會造成文件混亂,可能導致數據全丟了,啟動時加了repair也無法恢復。




Mongodb主從進行配置+auth