导读:
MongoDB一直都不推荐使用主从复制方式进行数据同步,而是推荐复制集(replicate set),相对于主从同步,复制集有更多优秀的功能,如自动故障转移等,但是,既然MongoDB到4.2版本还保留着该功能,我们不妨探索一下。
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包方式
(二)MongoDB主从环境配置
对于主从配置,相对于其它数据库而言,MongoDB的配置非常简单,只需要配置参数文件即可。
主节点: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 |
特别注意:
(三)keyFile注意事项
当启用用户身份认证时,主从节点需要配置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的内容,需要重新同步到其它节点。
【完】
MongoDB主从复制(master-->slave)环境搭建
原文:https://www.cnblogs.com/lijiaman/p/13159093.html