環境:Linux
mongo版本:3.6.x
主服務器:192.168.7.1
從服務器:192.168.7.2
mongodb安裝路徑: /opt/mongodb
步驟:
主服務器(192.168.7.1):
1.創建數據庫
首先在主服務器上正常創建數據庫,并為數據庫創建密碼(安全考慮,因為主從備份的時候,mongo數據庫是需要支持外網訪問的,如果未設置密碼,你的數據庫就是在網絡上裸奔了)。創建的大概過程就是,先不用鑒權啟動數據庫,登錄進去,為admin數據庫創建管理賬號:
db.createUser({user: "admin",pwd: "adminPwd",roles: [{ role: "userAdminAnyDatabase", db: "admin" }]})
然后創建自己的數據庫(假設為testdb)
use testdb;
db.createUser({user: "test",pwd: "testdbpwd",roles: [{ role: "readWrite", db: "testdb" }]})
好了,主服務器上數據庫已建好。要實現主從備份,我們需要生成一個key.該key就相當于一個憑證。主服務器上啟動的時候設置需要該憑證,從服務器上需要攜帶該憑證才能從主服務器上備份數據。
2.生成key
cd /opt/mongdb
openssl rand -base64 512 mongodb.key (key的范圍是0-1024),如果key值過大,則無法啟動
同時需要限制key的權限,chmod 400 mongodb.key.
3.編輯配置文件
vi mongod.conf
port = 2217? #mongo 數據庫的端口
logpath = /opt/mongodb/logs/mongodb.log? #日志路徑。
#pidfilepath=/var/run/mongodb/mongodb.pid
dbpath=/data/db??
master = true? ? ? ? ? #確定我是主服務器
source = 192.168.7.1 #主服務器的ip地址,從服務器需要連接該source
bind_ip = 127.0.0.1,192.168.7.1? #mongo數據庫綁定的ip。此處即表示支持本地及外網ip訪問
#fork = true
logappend = true
auth = true? #表示開啟鑒權
keyFile = /opt/mongodb/mongodb.key? #指定key文件路徑
4.啟動mongo:
nohup mongod --config /opt/mongodb/mongodb.conf &
可在?/opt/mongodb/logs/mongodb.log 查看啟動日志。
ps:
1.日志目錄需要提前創建好:mkdir?/opt/mongodb/logs(可自行定義)
2.數據存放目錄需要創建好 mkdir /data/db (可自行定義)
至此,主服務器配置啟動完成。
從服務器(192.168.7.2):
將主服務器上的mongodb.key 下載過來。
創建數據存放目錄:
mkdir /data/db?
編輯配置文件:
vi /opt/mongdb/mongdb.conf
port = 2217? ? #端口號
logpath = /opt/mongodb/logs/mongodb.log? #日志位置
#pidfilepath=/var/run/mongodb/mongodb.pid? ? ? ? #PID 位置
dbpath=/data/db? ? ? ? ? ? ? ? ? ? ? ? ? ? #數據存放位置
slave = true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #模式 確定我是從服務器
source = 192.168.7.1:2217? ? ? ? ? ? ? ? ? ? ? ? #規定從屬于哪個ip? 注意:ip是主服務器的
#fork = true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設置后臺運行
logappend = true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #日志輸出格式
#auth = true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #開啟認證
keyFile = /opt/mongodb/mongodb.key? #指定key.該key與主服務器的key一致。
syncdelay = 60
啟動從服務器上的mongo
nohup mongod --config /opt/mongodb/mongdb.conf
從服務器上mongo啟動,就會主動從主服務器上備份數據了。