最近在参加MongoDB的培训,就用以前的环境搭一下多副本集,感觉挺简单的,不知道是不是我搞错了,先记录下来后面有问题再改吧。
安装好Mongo,可参考之前的文章Linux平台安装MongoDB
进入安装目录
cd usr/local/mongodb
在当前目录下创建三个rs
ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs0/data/dbljing@ubuntu:/usr/local/mongodb$ mkdir -p rs1/data/dbljing@ubuntu:/usr/local/mongodb$ mkdir -p rs2/data/db
再分别创建三个log目录
ljing@ubuntu:/usr/local/mongodb$ mkdir -p rs0/logljing@ubuntu:/usr/local/mongodb$ mkdir -p rs1/logljing@ubuntu:/usr/local/mongodb$ mkdir -p rs2/log
创建三个配置文件 mongodb.cfg 放置在 usr/local/mongodb/rs0 和 rs1 rs2 下
注意修改路径和端口,我配置的 27017 27018 和 27019
dbpath=/usr/local/mongodb/rs0/data/dblogpath=/usr/local/mongodb/rs0/log/mongo.loglogappend=trueport=27017fork=trueauth=falsebind_ip=192.168.128.130journal=truequiet=truereplSet=upmsSet
开启三个mongo
ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs0/mongodb.cfgabout to fork child process, waiting until server is ready for connections.forked process: 2859child process started successfully, parent exitingljing@ubuntu:/usr/local/mongodb/bin$ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs1/mongodb.cfgabout to fork child process, waiting until server is ready for connections.forked process: 2953child process started successfully, parent exitingljing@ubuntu:/usr/local/mongodb/bin$ljing@ubuntu:/usr/local/mongodb/bin$ ./mongod -f ../rs2/mongodb.cfgabout to fork child process, waiting until server is ready for connections.forked process: 2973child process started successfully, parent exiting
登陆其中一个
ljing@ubuntu:/usr/local/mongodb/bin$ ./mongo 192.168.128.130MongoDB shell version: 3.0.6connecting to: 192.168.128.130/test
查看下数据库
> show databases;2020-04-15T06:03:43.142-0700 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }at Error (<anonymous>)at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)at shellHelper.show (src/mongo/shell/utils.js:630:33)at shellHelper (src/mongo/shell/utils.js:524:36)at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
show databases 报错,因为还没初始化
> use adminswitched to db admin
定义副本集配置变量,这里的 _id:”upmsSet” 和上面配置文件的参数“ replSet=upmsSet” 要保持一样
> config= {_id:"upmsSet",members:[... ... {_id:0,host:"192.168.128.130:27017"},... ... {_id:1,host:"192.168.128.130:27018"},... ... {_id:2,host:"192.168.128.130:27019"}]... ... }{"_id" : "upmsSet","members" : [{"_id" : 0,"host" : "192.168.128.130:27017"},{"_id" : 1,"host" : "192.168.128.130:27018"},{"_id" : 2,"host" : "192.168.128.130:27019"}]}
初始化
> rs.initiate(config);{ "ok" : 1 }upmsSet:OTHER>upmsSet:SECONDARY>upmsSet:SECONDARY>upmsSet:PRIMARY>
查看状态
upmsSet:PRIMARY> rs.status(){"set" : "upmsSet","date" : ISODate("2020-04-15T13:20:26.543Z"),"myState" : 1,"members" : [{"_id" : 0,"name" : "192.168.128.130:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 15957,"optime" : Timestamp(1586956816, 1),"optimeDate" : ISODate("2020-04-15T13:20:16Z"),"electionTime" : Timestamp(1586956819, 1),"electionDate" : ISODate("2020-04-15T13:20:19Z"),"configVersion" : 1,"self" : true},{"_id" : 1,"name" : "192.168.128.130:27018","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 10,"optime" : Timestamp(1586956816, 1),"optimeDate" : ISODate("2020-04-15T13:20:16Z"),"lastHeartbeat" : ISODate("2020-04-15T13:20:26.377Z"),"lastHeartbeatRecv" : ISODate("2020-04-15T13:20:26.404Z"),"pingMs" : 0,"configVersion" : 1},{"_id" : 2,"name" : "192.168.128.130:27019","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 10,"optime" : Timestamp(1586956816, 1),"optimeDate" : ISODate("2020-04-15T13:20:16Z"),"lastHeartbeat" : ISODate("2020-04-15T13:20:26.377Z"),"lastHeartbeatRecv" : ISODate("2020-04-15T13:20:26.360Z"),"pingMs" : 0,"lastHeartbeatMessage" : "could not find member to sync from","configVersion" : 1}],"ok" : 1}
完成
参考文章:https://www.jianshu.com/p/beebe1f50fc3
文章转载自爱学习de小馋猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




