1. 创建mongodb数据存储的根路径:/home/user/mongodb
在mongodb目录下创建data文件夹和log文件夹
2. 启动bu不带认证的mongodb数据库:
sudo ./mongod --dbpath /home/user/mongodb/data --logpath --dbpath /home/user/mongodb/log/log.txt
3. 用mongodb客户端连接mongodb数据库,修改authSchema版本为3,默认是5(mongodb3.0以上版本都要经过这步处理)
mongo 10.0.0.1
use admin
var schema=db.system.version.findOne({"_id":"authSchema"})
schema.currentVersion=3
db.system.version.save(schema)
备注:可能db.system.version没有数据,可以先创建root用户 :
db.createUser({ 'user' : 'adminName', 'pwd' : 'yourPassword', 'roles':[ {role:'root',db:'admin'} ,执行完步骤3后可以删掉
4. 生成keyFile文件
在主用机器上执行下面命令,生成keyFile文件到如下目录:
openssl rand -base64 100 > /home/user/mongodb/mongodb_keyfile
chmod 600 /home/user/mongodb/mongodb_keyfile
注意:生成的keyfile文件需要拷贝到mongodb集群的其它节点机器上
5. 启动带认证的mongodb数据库
sudo ./mongod --dbpath /home/user/mongodb/data --logpath --dbpath /home/user/mongodb/log/log.txt --keyFile /home/user/mongodb/mongodb_keyfile --replSet mmm
注意: 单个数据库认证用--auth,集群用--keyFile,否则无法同步
6. 初始化副本集
cfg={_id:"mmm", members:[{"_id":0, "host":"192.168.10.1:27017", "priority":2},{"_id":1, "host":"192.168.10.2:27017", "priority":1}, {"_id":2, "host":"192.168.10.3:27017", "priority":1}]};
rs.initiate(cfg);
7. 修改集群节点的ip:
方法1:
cfg = rs.conf()
cfg.members[1].host = "192.168.11.2:27017"
rs.reconfig(cfg)
方法2:
rs.remove("192.168.1.2:27017")
rs.add("192.168.11.2:27017")