温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mongodb副本集

发布时间:2020-07-06 00:50:39 来源:网络 阅读:632 作者:zhu_my 栏目:MongoDB数据库

       其实mongodb也可以做主从机制,mongodb一主一从类似mysql,但是slave在架构中为只读,并且主机宕机后从不能自动切换为主。现在官方已经不推荐使用了,改用副本集。

  • 这种模式下有一个主(primary),和多个从(secondary),只读。支持给它们设置权重,当主宕掉后,权重最高的从切换为主

  • 在此架构中还可以建立一个仲裁(arbiter)的角色,它只负责裁决,而不存储数据l再此架构中读写数据都是在主上,要想实现负载均衡的目的需要手动指定读库的目标server


1.MongoDB副本集搭建

三台机器:192.168.1.100(primary)  192.168.1.101(secondary)   192.168.1.102(secondary) 

编辑三台机器的配置文件/etc/mongod.conf,增加:

###########

replication:

##oplog大小

  oplogSizeMB: 20

##复制集名称

  replSetName: monreplset     //名字可以随意

##############

分别重启三台机器

在主上连接mongo

>use admin

>config={_id:"monreplset",members:[{_id:0,host:"192.168.1.100:27017"},{_id:1,host:"192.168.1.101:27017"},{_id:2,host:"192.168.1.102:27017"}]}

>rs.initiate(config)

>rs.add("192.168.1.101")

>rs.add("192.168.1.102")

rs.status()       //查看状态

如果两个从上的状态为"stateStr": "STARTUP", 则需要进行如下操作

>var  config={_id:"monreplset",members:[{_id:0,host:"192.168.1.100:27017"},{_id:1,host:"192.168.1.101:27017"},{_id:2,host:"192.168.1.102:27017"}]}

>rs.reconfig(config)

此时再次查看rs.status()会发现从的状态变为SECONDARY


2.MongoDB副本集测试

主上建库,建集合

>use mydb

>db.test.insert({ID:1,UserName:"123",password:"123456"})

>show dbs

从上查看

>show dbs   

若出现错误Error:listDatabasesfailed:{ "note" : "from execCommand","ok" : 0, "errmsg": "not master" },

执行>rs.slaveok()即可


3.MongoDB副本集更改权重

默认三台机器权重都为1,如果任何一个权重设置为比其他的高,则该台机器马上切换为primary角色,所以我们预设三台机器的权重分别为:100:3, 101:2, 102:1

在主上执行

cfg= rs.config()

cfg.members[0].priority= 3

cfg.members[1].priority= 2

cfg.members[2].priority= 1

rs.reconfig(cfg)

这样的话,第二个节点将会成为候选主节点。

主上执行iptables-I INPUT -p tcp--dport 27017 -j DROP禁掉27017端口的访问

这时101将变成primary成为主。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI