MongoDB 搭建集群
前提是不能有数据
在12的基础上
[root@mongodb ~]# mkdir /data/mongodb{3,4}
[root@mongodb ~]# touch /data/logs/mongodb/mongodb{3,4}.log
[root@mongodb ~]# chmod 777 /data/logs/mongodb/*.log
vim mongodb1.conf #下面3个地方要不一致,其余3个同理
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
replSet=amber #这个名字随便取,但是名字要一致
/etc/init.d/mongodb mongodb{1,2,3,4} restart
show dbs
rs.status()
#如果192.168.41.101不行换成127.0.0.1
cfg={"_id":"amber","members":[{"_id":0,"host":"127.0.0.1:27017"},
{"_id":1,"host":"127.0.0.1:27018"},
{"_id":2,"host":"127.0.0.1:27019"}]}
#成功后出现下面的信息
> rs.initiate(cfg)
{ "ok" : 1 }
amber:OTHER>
amber:PRIMARY>
rs.status()
"health" : 1, //1 为健康,0 为宕机
"state" : 1, //1 为主,2 为从
#添加一个节点
amber:PRIMARY> rs.add("127.0.0.1:27020")
#删除一个节点
rs.remove("127.0.0.1:27020")
tips:当我们kill掉主的时候,他会自动跳转到从的其中一个,就算恢复主也不会再回到从前,从就变成了主。
#手动切换主实例
amber:PRIMARY> rs.help()
amber:PRIMARY> rs.freeze(30) // 暂停 30 秒不参加选举
amber:PRIMARY> rs.stepDown(60,30)
#查看从状态
rs.printSlaveReplicationInfo()
#查看从信息
rs.printReplicationInfo()
#更改 oplog 大小
oplog 大小远远不能满足频繁的更新业务需求时,在配置复制集启动时,就应该 对 oplog 有大小预计,旧版本修改 oplog 大小必须重启主数据库
db.oplog.rs.stats()
db.runCommand({"convertToCapped":"oplog.rs","size":102400000})
db.oplog.rs.stats()
rs.printReplicationInfo()
部署认证集群
以密钥文件认证方式:
clusterAuthMode=keyFile
keyFile=/usr/local/mongodb/data/hxfkey
复制集群以密钥认证,其他登录需要密码认证
amber:PRIMARY> use admin
switched to db admin
amber:PRIMARY> db.createUser({"user":"root","pwd":"123","roles":["root"]})
[root@mongodb ~]# cd /usr/local/mongodb/conf/
[root@mongodb conf]# vim mongodb1.conf
[root@mongodb conf]# vim mongodb2.conf
[root@mongodb conf]# vim mongodb3.conf
[root@mongodb conf]# vim mongodb4.conf
[root@mongodb conf]# cat mongodb1.conf
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
slowms=1
profile=1
#bind_ip=192.168.1.52
#auth=true
#httpinterface=true
#rest=true
replSet=amber
clusterAuthMode=keyFile
keyFile=/usr/local/mongodb/conf/amberkey1
[root@mongodb conf]# echo "123 key" > amberkey1
[root@mongodb conf]# echo "123 key" > amberkey2
[root@mongodb conf]# echo "123 key" > amberkey3
[root@mongodb conf]# echo "123 key" > amberkey4
[root@mongodb conf]# chmod 600 amberkey*
[root@mongodb conf]# /etc/init.d/mongodb mongodb{1,2,3,4} restart
mongo
rs.status()
use admin
db.auth("root","123")
rs.status()