Mongodb的安装与使用
一、配置mongodb.conf
数据库文件位置
dbpath=/usr/local/mongodb-3.4.24/27017/data
日志文件的路径
logpath=/usr/local/mongodb-3.4.24/27017/log/mongodb.log
是否追加方式写入日志,默认True
logappend=true
设置绑定ip
bind_ip = 0.0.0.0
设置端口
port = 27017
是否以守护进程方式运行,默认false
fork = true
启用日志文件,默认启用
journal=true
设置启用授权
auth = true
设置副本集
keyFile = /usr/local/mongodb-3.4.24/mongodb-keyfile
replSet=balidropMogdo
二、写入 mongodb-keyfile
openssl rand -base64 745 > mongodb-keyfile
chmod 600 mongodb-keyfile
三、启动3台MongoDB实例
mongod –config /usr/local/mongodb-3.4.24/27017/mongodb.conf
mongod –config /usr/local/mongodb-3.4.24/27018/mongodb.conf
mongod –config /usr/local/mongodb-3.4.24/27019/mongodb.conf
四、通过shell远程链接
mongo 121.4.43.75:27017/admin -uroot -p
mongo 121.4.43.75:27018/admin -uroot -p
mongo 121.4.43.75:27019/admin -uroot -p
五、配置副本集
let rsconf={_id:’balidropMogdo’,members:[{_id:0,host:’192.168.8.167:27017′},{_id:1,host:’192.168.8.167:27018′},{_id:2,host:’192.168.8.167:27019′}]};
rs.initiate(rsconf);
//如果是副本集,远程连接,那么必须设置members中的成员为外网的IP
let reconf = rs.conf();
reconf.members[0].host = "121.4.43.75:27017";
reconf.members[1].host = "121.4.43.75:27018";
reconf.members[2].host = "121.4.43.75:27019";
rs.reconfig(reconf );
六、测试
进入备份节点:
show dbs
balidropMogdo:SECONDARY> show dbs
2021-02-02T14:10:29.700+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}
报错了
rs.slaveOk()
balidropMogdo:SECONDARY> show dbs
admin 0.000GB
local 0.000GB
summer 0.000GB
执行insert操作
balidropMogdo:SECONDARY> db.tmp.find();
Error: error: {
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}
进入主节点
balidropMogdo:PRIMARY> show dbs
admin 0.000GB
local 0.000GB
summer 0.000GB
balidropMogdo:PRIMARY> use summer
switched to db summer
balidropMogdo:PRIMARY> db.tmp.insert({‘name’:’kee’});
WriteResult({ "nInserted" : 1 })
测试节点自动切换
自动变成了主节点
停掉3个节点中的2个从节点之后,主节点自动变成了从节点了,副本集提供只读功能,没有写的功能。
启动另外两个节点之后,集群已经工作了。
注意事项:
如果启用了 auth = true ,那么 keyFile 必须。
在其它的接点上不需要设置root用户,仅在执行节点上进行设置即可。