欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb副本集

程序员文章站 2022-05-08 14:53:25
...

一.mongodb副本集是什么?

它可以说是类似mysql主从的高可用的一个mongodb集群,当主宕机后,从可以自动切换。一般有一主多从(也可以一个从)组成。可以实现异地备份、读写分离和自动故障转移。在此架构中,读写都是在主上,从只有读的权限,要实现负载均衡的功能可以手动指定读库的server。
mongodb副本集

二.副本集的搭建

环境说明:
所有机器都必须安装好mongodb数据库
192.168.247.160 primary
192.168.247.170 secondary
192.168.247.180 secondary
安装文档:
mongodb介绍、安装、用户管理

安装好之后,配置mongodb配置文件,三台机器除了ip不同之外都一样。其中的配置有必要说明的点如下:

bindIp: 127.0.0.1,192.168.247.180  //还需要监听网卡ip,其他机器改成自己的ip160,170

replication:   //把前面的#号去掉
  oplogSizeMB: 20   //前面注意要有两个空格,参数意义和mysql的binlog类似
  replSetName: ligenlinux   //副本集的名字

重启各个机器:

mongo
#配置副本集命令:
config={_id:"ligenlinux",members:[{_id:0,host:"192.168.247.160:27017"},{_id:1,host:"192.168.247.170:27017"},{_id:2,host:"192.168.247.180:27017"}]}

#初始化
rs.initiate(config)
#结果中有"ok" : 1表示成功了

#查看副本集状态,其中包含哪一个是primary,默认在哪台机器上配置副本集哪台就是primary。
rs.status()

三.副本集的测试

登入primary的mongodb数据库,会有标志:

ligenlinux:PRIMARY>
#在主上创建一个库和集合,看从上有没有
#主上操作
use mydb
db.acc.insert({id:1,name:"lisi",pwd:"ab"})
db.acc.find()

#在从上查看
#从上有标志ligenlinux:SECONDARY>
#需要先执行一下
rs.slaveok()
#查看库,看有没有mydb
show dbs
use mydb
show tables
#副本集更改权重模拟主宕机
#默认三台机器的权重值都为1,权重值更高为主,测试更改它们的权重值为3,2,1
#在主上操作更改权重

#查看权重
rs.config()

#更改
cfg=rs.conf()
cfg.members[0].priority=3
cfg.members[1].priority=2
cfg.members[2].priority=1

#生效
rs.reconfig(cfg)
#会发现权重为3的变成了主
相关标签: 运维linux