導讀:html
MongoDB一直都不推薦使用主從複製方式進行數據同步,而是推薦複製集(replicate set),相對於主從同步,複製集有更多優秀的功能,如自動故障轉移等,可是,既然MongoDB到4.2版本還保留着該功能,咱們不妨探索一下。mongodb
IP地址 | 操做系統版本 | 數據庫版本 | 做用 |
192.168.10.71 | centos7.4 | mongo 2.7.1 | 主節點(Master) |
192.168.10.72 | centos7.4 | mongo 2.7.1 | 從節點(Slave) |
(一)MongoDB安裝數據庫
MongoDB每一個版本的安裝方法都差很少,安裝見:Linux下安裝MongoDB 4.2數據庫--使用tar包方式centos
(二)MongoDB主從環境配置服務器
對於主從配置,相對於其它數據庫而言,MongoDB的配置很是簡單,只須要配置參數文件便可。app
主節點:192.168.10.71 | 從節點:192.168.10.72 |
logpath=/mongo/log/mongod.log logappend=true # fork and run in background fork=true port=27017 dbpath=/mongo/data # location of pidfile pidfilepath=/mongo/mongod.pid # Listen to local interface only. Comment out to listen on all interfaces. bind_ip=0.0.0.0 master=true keyFile=/mongo/mongodb-keyfile auth=true |
logpath=/mongo/log/mongod.log logappend=true # fork and run in background fork=true port=27017 dbpath=/mongo/data # location of pidfile pidfilepath=/mongo/mongod.pid # Listen to local interface only. Comment out to listen on all interfaces. bind_ip=0.0.0.0 autoresync=true slave=true source=192.168.10.71:27017 keyFile=/mongo/mongodb-keyfile auth=true |
特別注意:centos7
(三)keyFile注意事項spa
當啓用用戶身份認證時,主從節點須要配置keyfil文件以便於主從節點能夠正常通訊,keyfile的配置見上面的mongoDB配置文件,這裏講一下如何生產keyfile。操作系統
在一臺服務器上生成keyfile,而且將權限改成600日誌
openssl rand -base64 745 > /mongo/mongodb-keyfile chmod 600 /mongo/mongodb-keyfile
將這個文件拷貝到其它節點上便可,須要注意,各個節點的權限須要保持一致。
遇到的問題:
在建立完keyfile並在配置文件中加入參數後,啓動MongoDB,發現沒法啓動:
[root@mongo1 mongo]# mongod -f /mongo/mongodb.conf warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default about to fork child process, waiting until server is ready for connections. forked process: 2173 ERROR: child process failed, exited with error number 1
查看MongoDB錯誤日誌,報錯以下:
[root@mongo1 log]# tail -f mongod.log 2020-06-18T21:20:13.900+0800 invalid char in key file /mongo/mon-keyfile: =
打開keyfile,發如今文件末尾有2個「=」,刪除2個等號以後,MongoDB啓動正常。須要留意,該操做改變了feyfile的內容,須要從新同步到其它節點。
【完】