MongoDB数据库-----节点的选举和角色验证-----标准节点、仲裁节点 、被动节点

一、 创建多实例配置文件,并开启服务

[root@localhost ~]# mkdir -p /data/mongodb/mongodb{2,3,4} //创建数据目录
[root@localhost ~]# mkdir -p /data/mongodb/logs
[root@localhost ~]# touch /data/mongodb/logs/mongodb{2,3,4}.log
[root@localhost ~]# chmod 777 /data/mongodb/logs/*.log
[root@localhost ~]# cd /data/mongodb/
[root@localhost mongodb]# ls
[root@localhost mongodb]# cd logs/
[root@localhost logs]# ls -l
[root@localhost logs]# vim /etc/mongod.conf

replication:
replSetName: kgcrs
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# vim /etc/mongod2.conf
path: /data/mongodb/mongodb2.log
dbPath: /data/mongodb/mongodb2
port: 27018

[root@localhost logs]# cp -p /etc/mongod2.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod2.conf /etc/mongod4.conf
[root@localhost logs]# vim /etc/mongod3.conf

path: /data/mongodb/mongodb3.log
dbPath: /data/mongodb/mongodb3
port: 27019

[root@localhost logs]# vim /etc/mongod4.conf
path: /data/mongodb/mongodb4.log
dbPath: /data/mongodb/mongodb4
port: 27020

[root@localhost logs]# mongod -f /etc/mongod.conf --shutdown
[root@localhost logs]# mongod -f /etc/mongod.conf
[root@localhost logs]# mongod -f /etc/mongod2.conf
[root@localhost logs]# mongod -f /etc/mongod3.conf
[root@localhost logs]# mongod -f /etc/mongod4.conf
[root@localhost logs]# netstat -anpt
[root@localhost logs]# mongo
[root@localhost logs]# mongo --port 27018
[root@localhost logs]# mongo --port 27019
[root@localhost logs]# mongo --port 27020

二、 常用操作

2.1 选举复制

标准节点:100 2.仲裁节点 :true 3.被动节点:0
> cfg={"_id":“kgcrs”,“members”:
[{"_id":0,“host”:“20.0.0.22:27017”,“priority”:100},
{"_id":1,“host”:“20.0.0.22:27018”,“priority”:100},
{"_id":2,“host”:“20.0.0.22:27019”,“priority”:0},
{"_id":3,“host”:“20.0.0.22:27020”,“arbiterOnly”:true}]}

> rs.initiate(cfg)	//初始化启动,cfg:配置
{
    "ok" : 1,
    "operationTime" : Timestamp(1604718797, 1),
    "$clusterTime" : {
	    "clusterTime" : Timestamp(1604718797, 1),
	    "signature" : {
		    "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
		    "keyId" : NumberLong(0)
	    }
    }
}

kgcrs:SECONDARY> //按回车,发现身份变为PRIMARY
kgcrs:PRIMARY> rs.isMaster()

{
“hosts” : [
“20.0.0.22:27017”,
“20.0.0.22:27018”
],
“passives” : [
“20.0.0.22:27019”
],
“arbiters” : [
“20.0.0.22:27020”
],
“setName” : “kgcrs”,
“setVersion” : 1,
“ismaster” : true,
“secondary” : false,
“primary” : “20.0.0.22:27017”,
“me” : “20.0.0.22:27017”,
“electionId” : ObjectId(“7fffffff0000000000000001”),
“lastWrite” : {
“opTime” : {
“ts” : Timestamp(1604718839, 1),
“t” : NumberLong(1)
},
“lastWriteDate” : ISODate(“2020-11-07T03:13:59Z”),
“majorityOpTime” : {
“ts” : Timestamp(1604718839, 1),
“t” : NumberLong(1)
},
“majorityWriteDate” : ISODate(“2020-11-07T03:13:59Z”)
},
“maxBsonObjectSize” : 16777216,
“maxMessageSizeBytes” : 48000000,
“maxWriteBatchSize” : 100000,
“localTime” : ISODate(“2020-11-07T03:14:06.604Z”),
“logicalSessionTimeoutMinutes” : 30,
“minWireVersion” : 0,
“maxWireVersion” : 6,
“readOnly” : false,
“ok” : 1,
“operationTime” : Timestamp(1604718839, 1),
“$clusterTime” : {
“clusterTime” : Timestamp(1604718839, 1),
“signature” : {
“hash” : BinData(0,“AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
“keyId” : NumberLong(0)
}
}
}

2.2 数据的增加、删除、修改、查看

kgcrs:PRIMARY> use kgc
kgcrs:PRIMARY> db.t1.insert({“id”:1,“name”:“tom”})
kgcrs:PRIMARY> db.t1.insert({“id”:2,“name”:“jerry”})

kgcrs:PRIMARY> db.t1.find()
{ “_id” : ObjectId(“5fa52f92709db0f389d3bc59”), “id” : 1, “name” : “tom” }
{ “_id” : ObjectId(“5fa52f99709db0f389d3bc5a”), “id” : 2, “name” : “jerry” }

kgcrs:PRIMARY> db.t1.update({“id”:2},{$set:{“name”:“jack”}})
kgcrs:PRIMARY> db.t1.find()
{ “_id” : ObjectId(“5fa52f92709db0f389d3bc59”), “id” : 1, “name” : “tom” }
{ “_id” : ObjectId(“5fa52f99709db0f389d3bc5a”), “id” : 2, “name” : “jack” }

kgcrs:PRIMARY> db.t1.remove({“id”:1})
kgcrs:PRIMARY> db.t1.find()
{ “_id” : ObjectId(“5fa52f99709db0f389d3bc5a”), “id” : 2, “name” : “jack” }

kgcrs:PRIMARY> use local
kgcrs:PRIMARY> show collections

me
oplog.rs
replset.election
replset.minvalid
startup_log
system.replset
system.rollback.id

kgcrs:PRIMARY> db.oplog.rs.find()
//查看操作日志,输入"it"查看更多内容

2.3 关闭节点,验证主从抢占

[root@localhost logs]# mongod -f /etc/mongod.conf --shutdown //关闭27017服务,不能登录
[root@localhost logs]# mongo --port 27018 //登录
kgcrs:PRIMARY> rs.status() //27017的health变为0,27018变为PRIMARY

[root@localhost logs]# mongod -f /etc/mongod2.conf --shutdown //关闭27018服务,不能登录
[root@localhost logs]# mongo --port 27019 //登录
kgcrs:SECONDARY> rs.status() //仍为ARBITER,仲裁节点不参与选举PRIMARY

2.4 允许从节点读取数据

默认情况下,主节点上写的数据,在从节点无法查看,就可以提供一下方法查看
[root@localhost logs]# mongod -f /etc/mongod.conf //开启27017节点
[root@localhost logs]# mongod -f /etc/mongod2.conf //开启27018节点
[root@localhost logs]# mongo --port 27018 //登录从节点
kgcrs:SECONDARY> show dbs //不允许查看
kgcrs:SECONDARY> rs.slaveOk() //允许默认从节点读取数据
kgcrs:SECONDARY> show dbs //这时就可以查看同步的 信息

admin 0.000GB
config 0.000GB
kgc 0.000GB
local 0.000GB

2.5 查看复制状态信息

kgcrs:SECONDARY> rs.printReplicationInfo()
configured oplog size: 3373.361083984375MB
log length start to end: 10895secs (3.03hrs)
oplog first event time: Fri Nov 06 2020 22:13:17 GMT-0500 (EST)
oplog last event time: Sat Nov 07 2020 01:14:52 GMT-0500 (EST)
now: Sat Nov 07 2020 01:14:59 GMT-0500 (EST)

kgcrs:SECONDARY> rs.printSlaveReplicationInfo()
source: 20.0.0.22:27018
syncedTo: Sat Nov 07 2020 01:16:02 GMT-0500 (EST)
0 secs (0 hrs) behind the primary
source: 20.0.0.22:27019
syncedTo: Sat Nov 07 2020 01:16:02 GMT-0500 (EST)
0 secs (0 hrs) behind the primary
//仲裁节点并不具备数据复制

2.6 更改oplog大小

kgcrs:SECONDARY> exit //退出从库
[root@localhost logs]# mongo //登录主库

kgcrs:PRIMARY> use local
kgcrs:PRIMARY> db.oplog.rs.stats()
kgcrs:PRIMARY> rs.printReplicationInfo()

configured oplog size: 3373.37109375MB //oplog大小
log length start to end: 11195secs (3.11hrs)
oplog first event time: Fri Nov 06 2020 22:13:17 GMT-0500 (EST)
oplog last event time: Sat Nov 07 2020 01:19:52 GMT-0500 (EST)
now: Sat Nov 07 2020 01:19:52 GMT-0500 (EST)

kgcrs:PRIMARY> exit
[root@localhost logs]# mongo --port 27018
kgcrs:SECONDARY> use admin
kgcrs:SECONDARY> db.shutdownServer() //关闭从节点的服务
kgcrs:SECONDARY> exit

[root@localhost logs]# vim /etc/mongod2.conf //注销Replica set相关启动参数,并修改port端口号
#replication:
# replSetName: kgcrs
port:27028

[root@localhost logs]# mongod -f /etc/mongod2.conf //单实例模式启动
[root@localhost logs]# mongodump --port 27028 --db local --collection ‘oplog.rs’ //完全备份当前节点的所有oplog记录
[root@localhost logs]# mongo --port 27028

> use local
> db.oplog.rs.drop() //删除oplog
> db.runCommand({create:“oplog.rs”,capped:true,size:(210241024*1024)})
> use admin
> db.shutdownServer() //关闭此节点服务
> exit

[root@localhost logs]# vim /etc/mongod2.conf //开启Replica set相关启动参数,并修改port端口号为27018
replication:
replSetName: kgcrs
oplogSizeMB: 2048
port:27018

[root@localhost logs]# mongod -f /etc/mongod2.conf
[root@localhost logs]# mongo --port 27018
kgcrs:SECONDARY> rs.printReplicationInfo()

configured oplog size: 2048MB //大小变为自定义大小
log length start to end: 80secs (0.02hrs)
oplog first event time: Sat Nov 07 2020 01:41:02 GMT-0500 (EST)
oplog last event time: Sat Nov 07 2020 01:42:22 GMT-0500 (EST)
now: Sat Nov 07 2020 01:42:28 GMT-0500 (EST)

kgcrs:SECONDARY> exit

2.7 主从选举验证

[root@localhost logs]# mongo //进入主节点
kgcrs:PRIMARY> rs.stepDown() //有效产生选举,让出主节点身份
kgcrs:SECONDARY> //自己变成了SECONDARY
kgcrs:SECONDARY> exit

[root@localhost logs]# mongo --port 27018
kgcrs:PRIMARY> //变成主节点服务器

2.8 部署认证复制

kgcrs:PRIMARY> use admin
kgcrs:PRIMARY> db.createUser({“user”:“root”,“pwd”:“123”,“roles”:[“root”]})
kgcrs:PRIMARY> exit

[root@localhost logs]# cd /usr/bin
[root@localhost bin]# vim /etc/mongod.conf

security:
keyFile: /usr/bin/kgcrskey1
clusterAuthMode: keyFile

[root@localhost bin]# vim /etc/mongod2.conf
security: //安全功能开启
keyFile: /usr/bin/kgcrskey2
clusterAuthMode: keyFile

[root@localhost bin]# vim /etc/mongod3.conf
security:
keyFile: /usr/bin/kgcrskey3
clusterAuthMode: keyFile

[root@localhost bin]# vim /etc/mongod4.conf
security:
keyFile: /usr/bin/kgcrskey4
clusterAuthMode: keyFile

[root@localhost bin]# echo “kgc key”>kgcrskey1
[root@localhost bin]# echo “kgc key”>kgcrskey2
[root@localhost bin]# echo “kgc key”>kgcrskey3
[root@localhost bin]# echo “kgc key”>kgcrskey4
[root@localhost bin]# chmod 600 kgcrskey{1…4}

[root@localhost bin]# mongod -f /etc/mongod.conf --shutdown
[root@localhost bin]# mongod -f /etc/mongod2.conf --shutdown
[root@localhost bin]# mongod -f /etc/mongod3.conf --shutdown
[root@localhost bin]# mongod -f /etc/mongod4.conf --shutdown
[root@localhost bin]# mongod -f /etc/mongod.conf
[root@localhost bin]# mongod -f /etc/mongod2.conf
[root@localhost bin]# mongod -f /etc/mongod3.conf
[root@localhost bin]# mongod -f /etc/mongod4.conf

2.8.1 进入主节点服务器验证

[root@localhost bin]# mongo --port 27018
kgcrs:PRIMARY> show dbs //无法查看数据库
kgcrs:PRIMARY> rs.status() //无法查看复制集
kgcrs:PRIMARY> use admin //身份登录验证
kgcrs:PRIMARY> db.auth(“root”,“123”)
kgcrs:PRIMARY> show dbs //可以查看数据库
kgcrs:PRIMARY> rs.status() //可以查看复制集

2.8.2 进入从节点服务器验证

[root@localhost bin]# mongo --port 27017
kgcrs:SECONDARY> rs.slaveOk()
kgcrs:SECONDARY> show dbs //无法查看数据库
kgcrs:SECONDARY> rs.status() //无法查看复制集
kgcrs:SECONDARY> use admin //身份登录验证
kgcrs:SECONDARY> db.auth(“root”,“123”)
kgcrs:SECONDARY> show dbs //可以查看数据库
kgcrs:SECONDARY> rs.status() //可以查看复制集
kgcrs:SECONDARY> exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值