北大青鸟小游网:值得大家信赖的游戏下载站!
发布时间:2021-06-30 10:56:37来源:北大青鸟手游网作者:北大青鸟手游网
mongodb副本集即客户端连接到整个副本集,不关心具体哪一台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份,一旦主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。副本集中的副本节点在主节点挂掉后通过心跳机制检测到后,就会在集群内发起主节点的选举机制,自动选举一位新的主服务器。选举还有个前提条件,参与选举的节点数量必须大于副本集总节点数量的一半,如果已经小于一半了所有节点保持只读状态。因此,官方推荐我们的副本集机器数量至少为3个:一个主节点,两个副本节点。当然,mongodb副本集中可以有很多类型的节点,其中有一个仲裁节点,即当参与选举的节点无法选出主节点时仲裁节点充当仲裁的作用。仲裁节点不存储数据,只是仲裁。所以,我们的副本集可以设置为:1主+1从+1仲裁。
那么我们准备3台服务器:192.168.198.224(主),192.168.198.225(从),192.168.198.226(仲裁)。
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.6.tgz tar -zxvf mongodb-linux-x86_64-amazon-3.4.6.tgz mv mongodb-linux-x86_64-amazon-3.4.6/ /usr/local/mongodb
cd /usr/local/mongodb mkdir -p data/db mkdir log touch log/mongod.log mkdir etc touch etc/mongod.conf
vim etc/mongod.conf
为了启动方便,我们可以将mongodb的启动配置项直接在配置文件中:
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名称必需相同
cd /usr/local/mongodb ./bin/mongod -f ./etc/mongod.conf #指定以mongod.conf配置启动mongod
登录任意一台机器的mongodb后台管理shell:
cd /usr/local/mongodb ./bin/mongo use admin config = { “_id”:”rs0″, “members”:[ {“_id”:0,”host”:”192.168.198.223:27017″}, {“_id”:1,”host”:”192.168.198.225:27017″}, {“_id”:2,”host”:”192.168.198.226:27017″,arbiterOnly:true} ] } rs.initiate(config); #初始化配置
注意:如果执行rs.initiate(config)报错,那么我们需要检查三台服务器的防火墙27017端口是否开放。 如果没有问题,我们可以查看集群节点:
rs.status();
至此,整个副本集已经搭建成功了。
那么,我们可以测试一下副本集的基本功能:
此时在我的机器上192.168.198.224是主节点,我们用mongo来登录shell。
cd /usr/local/mongodb ./bin/mongo use test #创建test数据库 db.testdb.insert({“name”:”yaya”}); #插入数据
我们用副本节点登录shell,我这里是192.168.198.225:
cd /usr/local/mongodb ./bin/mongo use test 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(“59676d711881041abab44477”), “name” : “yaya” }
所以,数据复制的功能是可用的。
将主节点192.168.198.224的mongod进程杀死:
myrs:PRIMARY> use admin myrs:PRIMARY> db.shutdownServer()
此时可以看到,192.168.198.225原本是副节点,此时自动转换为主节点。可以通过rs.status()来查看
和平精英通讯塔是什么 和平精英通讯塔玩法详细解析
跑跑卡丁车手游制霸赛场挑战任务全攻略
神雕侠侣2手游氪金玩家消费指南
王牌战士幽灵实战技巧讲解
王者荣耀王者模拟战即将上线 王者模拟战玩法介绍
王牌战士团战如何切入详细讲解
第五人格先知天赋怎么加点
崩坏3精英工坊新加入了什么武器圣痕 精英工坊新武器圣痕一览
古今江湖童姥牌组搭配使用技巧攻略
坠落星界
其它游戏
炽姬无双
角色扮演
王者荣耀
角色扮演
和平精英
枪战射击
邪恶疯人院
休闲益智
神雕侠侣2
角色扮演
一刀传世
角色扮演
九州天空城3D
角色扮演
斗罗大陆手游
角色扮演