1 [root@mongodb01 ~]# vi /etc/hosts 2 172.24.8.71 mongodb01 3 172.24.8.72 mongodb02 4 172.24.8.73 mongodb03 5 172.24.8.74 mongodb04 6 172.24.8.75 arbite
1 [root@mongodb01 ~]# vi /etc/mongod.conf 2 …… 3 net: 4 port: 27017 5 bindIp: 172.24.8.71 #根据不同节点配置 6 …… 7 replication: 8 replSetName: my_rep #开启副本集,所有节点必须一致 9 …… 10 [root@mongodb01 ~]# systemctl start mongod.service 11 [root@mongodb01 ~]# systemctl enable mongod.service
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 2 > config = { _id: "my_rep", members: [ 3 {_id: 0, host: "172.24.8.71:27017"}, 4 {_id: 1, host: "172.24.8.72:27017"}, 5 {_id: 2, host: "172.24.8.73:27017"}] 6 }
1 > rs.initiate(config) 2 my_rep1:PRIMARY> rs.status() #查看集群状态
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 2 my_rep:PRIMARY> use admin #进入admin数据库 3 my_rep:PRIMARY> db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }) 4 my_rep:PRIMARY> db.auth("admin", "admin") #验证创建结果 5 1
1 my_rep:PRIMARY> db.getUsers() 2 > db.system.users.find().pretty() #查看全局所有账户
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u admin -p admin 2 my_rep1:PRIMARY> use admin 3 switched to db admin 4 my_rep1:PRIMARY> db.createUser({user:"clusteradmin",pwd:"clusteradmin",roles:[{role:"clusterAdmin",db:"admin"}]})
1 [root@mongodb01 ~]# mongo --host 172.24.8.72 -u clusteradmin -p clusteradmin 2 my_rep:SECONDARY> rs.status() 3 my_rep:SECONDARY> db.serverStatus().repl.primary #查看主节点 4 172.24.8.73:27017
1 [root@mongodb01 ~]# mkdir -p /usr/local/keyfile 2 [root@mongodb01 ~]# openssl rand -base64 100 > /usr/local/keyfile/mongodb_keyfile 3 [root@mongodb01 ~]# chmod 600 /usr/local/keyfile/mongodb_keyfile 4 [root@mongodb01 ~]# chown -R mongod:mongod /usr/local/keyfile/ 5 [root@mongodb01 ~]# scp -rp /usr/local/keyfile/ root@mongodb02:/usr/local/ 6 [root@mongodb01 ~]# scp -rp /usr/local/keyfile/ root@mongodb03:/usr/local/ 7 [root@mongodb01 ~]# scp -rp /usr/local/keyfile/ root@mongodb04:/usr/local/ 8 [root@mongodb01 ~]# scp -rp /usr/local/keyfile/ root@arbiter:/usr/local/ 9 10 [root@mongodb02 ~]# chown -R mongod:mongod /usr/local/keyfile/ 11 [root@mongodb03 ~]# chown -R mongod:mongod /usr/local/keyfile/ 12 [root@mongodb04 ~]# chown -R mongod:mongod /usr/local/keyfile/ 13 [root@arbiter~]# chown -R mongod:mongod /usr/local/keyfile/
1 [root@mongodb01 ~]# vi /etc/mongod.conf 2 …… 3 security: #取消注释 4 authorization: enabled #开启验证 5 keyFile: /usr/local/keyfile/mongodb_keyfile #key文件 6 …… 7 [root@mongodb01 ~]# systemctl restart mongod.service
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin 2 my_rep:PRIMARY> rs.status() 3 my_rep:PRIMARY> db.serverStatus().repl.primary #查看主节点 4 172.24.8.71:27017
1 [root@mongodb01 ~]# scp -rp /etc/mongod.conf root@mongodb04:/etc/mongod.conf 2 [root@mongodb04 ~]# vi /etc/mongod.conf #修改IP即可 3 net: 4 port: 27017 5 bindIp: 172.24.8.74 6 [root@mongodb04 ~]# systemctl restart mongod.service 7 [root@mongodb04 ~]# systemctl enable mongod.service 8 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin 9 my_rep:PRIMARY> rs.add("172.24.8.74:27017")
1 my_rep:PRIMARY> rs.remove("172.24.8.74:27017")
1 my_rep:SECONDARY> db.serverStatus().repl.primary #查看主节点 2 172.24.8.72:27017 3 [root@mongodb02 ~]# mongo --host 172.24.8.72 -u clusteradmin -p clusteradmin 4 my_rep:PRIMARY> rs.status() #查看当前副本集状态
1 my_rep:PRIMARY> rs.conf()
1 my_rep:PRIMARY> newcfg=rs.conf() #当前conf写入变量 2 my_rep:PRIMARY> newcfg.members[0].priority=2 #修改conf中members序号0,即172.24.8.71优先级为2 3 2 4 my_rep:PRIMARY> rs.reconfig(newcfg #重新载入conf 5 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin 6 my_rep:PRIMARY> db.serverStatus().repl.primary #再次登录查看primary节点 7 172.24.8.71:27017
1 [root@mongodb01 ~]# scp -rp /etc/mongod.conf root@arbiter:/etc/mongod.conf 2 [root@mongodb04 ~]# vi /etc/mongod.conf #修改IP即可 3 net: 4 port: 27017 5 bindIp: 172.24.8.75 6 [root@mongodb04 ~]# systemctl restart mongod.service 7 [root@mongodb04 ~]# systemctl enable mongod.service 8 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin 9 my_rep:PRIMARY> rs.addArb("172.24.8.75:27017") 10 my_rep:PRIMARY> rs.status()
1 my_rep:PRIMARY> rs.conf()
1 my_rep:PRIMARY> rs.stepDown()
1 my_rep:PRIMARY> newconf=rs.config() 2 my_rep:PRIMARY> newconf.members[1].priority=0 3 my_rep:PRIMARY> newconf.members[1].votes=0 4 my_rep:PRIMARY> rs.reconfig(newconf)
1 my_rep:SECONDARY> rs.freeze(3600) #保持1个小时处于备份节点状态。 2 my_rep:SECONDARY> rs.freeze(0) #再次在备份节点执行且将时间指定为0就是“释放”备份节点。
1 my_rep:PRIMARY> db.printSlaveReplicationInfo() 2 source: 172.24.8.72:27017 3 syncedTo: Tue May 28 2019 19:43:40 GMT+0800 (CST) 4 0 secs (0 hrs) behind the primary 5 source: 172.24.8.73:27017 6 syncedTo: Tue May 28 2019 19:43:40 GMT+0800 (CST) 7 0 secs (0 hrs) behind the primary
1 [root@mongodb03 ~]# mongo --host 172.24.8.73 -u clusteradmin -p clusteradmin 2 my_rep:SECONDARY> db.adminCommand({"replSetGetStatus":1})[‘syncingTo‘]; #查看备份节点的复制源 3 172.24.8.71:27017 4 my_rep:SECONDARY> db.adminCommand({"replSetSyncFrom":"172.24.8.72:27017"}) #配置复制源
1 my_rep:PRIMARY> rs.status()
1 my_rep:PRIMARY> rs.conf() #查看节点配置
1 my_rep:PRIMARY> rs.printReplicationInfo() 2 configured oplog size: 1194.595947265625MB 3 log length start to end: 14027secs (3.9hrs) 4 oplog first event time: Tue May 28 2019 17:21:54 GMT+0800 (CST) 5 oplog last event time: Tue May 28 2019 21:15:41 GMT+0800 (CST) 6 now: Tue May 28 2019 21:15:48 GMT+0800 (CST)
1 my_rep:PRIMARY> rs.printSlaveReplicationInfo() 2 source: 172.24.8.72:27017 3 syncedTo: Tue May 28 2019 21:17:40 GMT+0800 (CST) 4 0 secs (0 hrs) behind the primary 5 source: 172.24.8.73:27017 6 syncedTo: Tue May 28 2019 21:17:40 GMT+0800 (CST) 7 0 secs (0 hrs) behind the primary 8 source: 172.24.8.74:27017 9 syncedTo: Tue May 28 2019 21:17:40 GMT+0800 (CST) 10 0 secs (0 hrs) behind the primary
1 replSetHO:PRIMARY> rs.help() 2 rs.status() #查看副本集整体健康状态 3 rs.initiate() #使用默认配置初始化副本集 4 rs.initiate(cfg) #使用指定配置,初始化副本集;这是我们使用的命令 5 rs.conf() #从local.system.replset获取副本集当前配置信息 6 rs.reconfig(cfg) #指定配置信息重置副本集;指定第二个参数{force:true},来强制更新 7 rs.add(hostportstr) #使用默认配置,给副本集添加新成员 8 rs.add(membercfgobj) #使用指定配置,给副本集添加新成员 9 rs.addArb(hostportstr) #给副本集添加一个仲裁节点,只投票,不会成为数据节点 10 rs.stepDown([stepdownSecs, catchUpSecs]) #给PRIMARY降权,使之在指定时间内成为SECONDARY,会恢复 11 rs.syncFrom(hostportstr) #使SECONDARY从指定的服务器同步数据 12 rs.freeze(secs) #让自己在指定秒数内不会成为PRIMARY 13 rs.remove(hostportstr) #从副本集删除指定节点 14 rs.slaveOk() #SECONDARY节点默认是不能查询的,需要执行该命令,使之可以查询 15 rs.printReplicationInfo() #查看操作日志以及日志时间 16 rs.printSlaveReplicationInfo() #查看所有SECONDARY延迟情况 17 db.isMaster() #查询当前PRIMARY信息
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u admin -p admin 2 my_rep:PRIMARY> use admin 3 my_rep:PRIMARY> db.grantRolesToUser( "admin",[{ role: "dbOwner",db:"mydb" }])
1 my_rep:PRIMARY> use mydb 2 my_rep:PRIMARY> db.age01.insert({name: ‘zhangsan‘, 3 age: ‘18‘, 4 tel: ‘123456781‘, 5 love: [‘apple‘,‘banana‘] 6 }
1 [root@mongodb02 ~]# mongo --host 172.24.8.72 -u admin -p admin 2 my_rep:SECONDARY> rs.slaveOk() 3 my_rep:SECONDARY> use mydb 4 my_rep:SECONDARY> db.age01.count() 5 1
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin 2 my_rep:PRIMARY> rs.status() 3 my_rep:PRIMARY> use admin 4 switched to db admin 5 my_rep:PRIMARY> db.shutdownServer() 6 [root@mongodb02 ~]# mongo --host 172.24.8.72 -u clusteradmin -p clusteradmin #登录任意非关闭节点 7 my_rep:PRIMARY> rs.status() 8 my_rep:PRIMARY> db.serverStatus().repl.primary #查看主节点 9 172.24.8.72:27017
1 [root@mongodb02 ~]# mongo --host 172.24.8.72 -u admin -p admin 2 my_rep:PRIMARY> use mydb 3 db.age01.insertOne({name: ‘wanger‘, age: ‘15‘, tel: ‘123456783‘, love: [‘pear‘,‘orange‘]})
1 [root@mongodb01 ~]# systemctl restart mongod.service 2 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u admin -p admin 3 my_rep:SECONDARY> use mydb 4 switched to db mydb 5 my_rep:SECONDARY> rs.slaveOk() 6 my_rep:SECONDARY> db.age01.find().pretty()
原文:https://www.cnblogs.com/itzgr/p/10983794.html