在根目录下新建data文件夹,进入data文件夹下载MongoDB,解压MongoDB,修改文件名
wget http://bbcbackup.oss-cn-shenzhen.aliyuncs.com/run/mongodb-linux-x86_64-rhel70-3.4.2.tgz
tar zxvf mongodb-linux-x86_64-rhel70-3.4.2.tgz
mv mongodb-linux-x86_64-rhel70-3.4.2 mongodb
进入mongodb目录创建三个文件夹conf,logs,db。在conf目录下新建文件mongodb.conf,编辑内容
dbpath是数据库文件目录,logpath是日志目录,port是mongodb所占用的端口,fork是true的时候表示在后台启动
dbpath=/data/mongodb/db
logpath=/data/mongodb/logs/mongodb.log
port=27017
fork=true
配置三台机器,启动mongod,replSet表示副本集群参数 ,mongoTest是副本集名称,这里的名字可以任意取,另外两台机也要和这个一样
/data/mongodb/bin/mongod --config /data/mongodb/conf/mongodb.conf --replSet mongoTest
如果启动成功会看到类似下面的提示
about to fork child process, waiting until server is ready for connections.
forked process: 15398
child process started successfully, parent exiting
进入其中一台机器进行mongodb shell操作
/data/mongodb/bin/mong -port 27017
>use admin
>config={_id:'mongoTest',members:[{_id:0,host:'192.168.8.163:27017'},{_id:1,host:'192.168.8.164:27017'},{_id:2,host:'192.168.8.165:27017'}]}
######我的三台机器ip是192.168.8.163 192.168.8.164192.168.8.165,自己的机器自己配置##########其中id:0对应的ip是主数据库IP地址
> rs.initiate(config)
{"OK":1}####这样显示就对了
查看详细内容
mongoTest:OTHER> rs.status()
{
"set" : "mongoTest",
"date" : ISODate("2018-01-05T02:21:38.716Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "192.168.8.163:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1146,
"optime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-01-05T02:21:31Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1515118850, 1),
"electionDate" : ISODate("2018-01-05T02:20:50Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "192.168.8.164:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 59,
"optime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-01-05T02:21:31Z"),
"optimeDurableDate" : ISODate("2018-01-05T02:21:31Z"),
"lastHeartbeat" : ISODate("2018-01-05T02:21:36.828Z"),
"lastHeartbeatRecv" : ISODate("2018-01-05T02:21:36.859Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "192.168.8.163:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.168.8.165:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 59,
"optime" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1515118891, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-01-05T02:21:31Z"),
"optimeDurableDate" : ISODate("2018-01-05T02:21:31Z"),
"lastHeartbeat" : ISODate("2018-01-05T02:21:36.828Z"),
"lastHeartbeatRecv" : ISODate("2018-01-05T02:21:36.842Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "192.168.8.163:27017",
"configVersion" : 1
}
],
"ok" : 1
}
mongoTest:PRIMARY>
开启keyfile认证就默认开启了auth认证了,为了保证后面可以登录,我提前创建了用户:
先创建管理员账户
db.createUser({user:"admin",pwd:"xxxxxx",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
db.createUser({user:"root",pwd:"xxxxxxx",roles:[{role:"root",db:"admin"}]});
#认证用户
db.auth("admin","xxxxxxx")
db.auth("root","xxxxxxx")
这样就可以OK咯可以自己添加数据试试看
mongoTest:PRIMARY>use database_name###添加库,例如use asd
mongoTest:PRIMARY>show dbs###查询库
mongoTest:PRIMARY>db.admin.insert({"name":"cson"})#在admin库添加一条数据