时间:2021-07-01 10:21:17 帮助过:16人阅读
192.168.3.212 主
192.168.3.213 从
192.168.3.214 仲裁
1.分别在每台机器上安装MongoDB安装包并配置
[root@tiger ~]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.6.tgz
[root@tiger ~]# tar -zxvf mongodb-linux-x86_64-amazon-3.4.6.tgz
[root@tiger ~]# mv mongodb-linux-x86_64-amazon-3.4.6/ /usr/local/mongodb
[root@tiger ~]# cd /usr/local/mongodb
[root@tiger ~]# mkdir -p data/db
[root@tiger ~]# mkdir log
[root@tiger ~]# touch log/mongod.log
[root@tiger ~]# mkdir etc
[root@tiger ~]# touch etc/mongod.conf
[root@tiger ~]# vim etc/mongod.conf
dbpath = /usr/local/mongodb/data/db # 指定数据库路径
logpath = /usr/local/mongodb/log/mongod.log # 指定mongodb日志文件
logappend = true # 使用追加的方式写日志
port = 27017 #设置端口号为27017
fork = true #设置以守护进程的方式启动mongod
replSet = myrs #设置副本集的名字为myrs,同一副本集群的replset名称必须相同
2.分别在每台机器上启动副本集
[root@tiger ~]# cd /usr/local/mongodb
[root@tiger ~]# ./bin/mongod -f ./etc/mongod.conf #指定以mongod.conf配置启动mongod
3.初始化副本集
登录任意一台机器的mongodb后台管理shell:
[root@tiger ~]# cd /usr/local/mongodb
[root@tiger ~]# ./bin/mongo
use admin
config = {
"_id":"myrs",
"members":[
{"_id":0,"host":"192.168.3.212:27017"},
{"_id":1,"host":"192.168.3.213:27017"},
{"_id":2,"host":"192.168.3.214:27017",arbiterOnly:true}
]
}
rs.initiate(config); #初始化配置
----------------------------------------------------------------------
如果执行rs.initiate(config)报错,那么我们需要检查三台服务器的防火墙27017端口是否开放。如果没有问题,我们可以查看集群节点
rs.status();
到这里副本集就搭建成功了,下面是测试
1、测试副本集的数据复制功能
此时在我的机器上192.168.3.212是主节点,我们用mongo来登录shell。
[root@tiger ~]# cd /usr/local/mongodb
[root@tiger ~]# ./bin/mongo
[root@tiger ~]# use test #创建test数据库
[root@tiger ~]# db.testdb.insert({"name":"yaya"}); #插入数据
我们用副本节点登录shell,我这里是192.168.3.213
[root@tiger ~]# cd /usr/local/mongodb
[root@tiger ~]# ./bin/mongo
[root@tiger ~]# use test
[root@tiger ~]# show tables
-------------------------------------------------------------------------------------------
此时会报错:
[thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}
因为mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。
myrs:SECONDARY> db.getMongo().setSlaveOk();
此时就可以读取数据了:
repset:SECONDARY> db.testdb.find();
控制台输出:{ "_id" : ObjectId("65845sd71343582051seab23497"), "name" : "yaya" }
所以,数据复制的功能是可用的。
2、测试副本集的故障转移功能
将主节点192.168.3.212的mongod进程杀死
[root@tiger ~]# myrs:PRIMARY> use admin
[root@tiger ~]# myrs:PRIMARY> db.shutdownServer()
此时可以看到,192.168.3.213原本是副节点,此时自动转换为主节点。可以通过rs.status()来查看。
MongoDB副本集
标签:因此 roo 火墙 守护 cti set stat 安装包 fas