mongodb复制集的实现
admin
2023-01-26 10:01:07
0次

    复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的情况下自动切换到其他备份服务器上做主库,一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行,实现读写分离,提高负载。

资源有限测试一个VM开3个实例:

环境:centos7.0

192.168.1.21:20011 P

192.168.1.21:20012 S

192.168.1.21:20013  A

mongodb verson:3.2

搭建过程:

1、下载包、并解压

2、添加相关的目录文件

[root@localhost mongodb27017]# ll

总用量 8

drwxr-xr-x. 2 root root 4096 12月 17 00:59 bin

drwxr-xr-x. 2 root root   30 12月 17 10:47 conf

drwxr-xr-x  4 root root 4096 12月 17 11:19 data

drwxr-xr-x. 2 root root   20 12月 17 01:13 key

drwxr-xr-x. 2 root root   23 12月 17 10:20 logs

#3个实例配置一样

3、解压包下bin目录下的所有文件到cp到当前的创建的bin目录下

4、3个实例的配置文件一致


[root@localhost conf]# cat mongodb27017.conf 

port=20011#每个实例端口,根据实际来配置

dbpath=/export/mongodb27017/data #数据目录

logpath=/export/mongodb27017/logs/mongod.log #日志目录

fork=true

logappend=true

#keyFile=/export/mongodb27017/key/mongodb#后面介绍

nohttpinterface=true

replSet=mongodb ##复制集的名字,

5、启动3个实例:


 /export/mongodb27018/bin/mongod -f /export/mongodb27018/conf/mongodb27018.conf

/export/mongodb27019/bin/mongod -f /export/mongodb27019/conf/mongodb27019.conf

/export/mongodb27017/bin/mongod -f /export/mongodb27017/conf/mongodb27017.conf

#需要把解压包bin目录下文件分别拷贝到这3个启动目录下,或者一个作为basedir也可以,其他分开

6、配置复制集

/export/mongodb27017/bin/mongo --port 20011#根据自己实际的定义,进入数据库

1、配置成员的关系:

     config = {_id:"mongodb", members:[{_id:0,host:"192.168.1.21:20011", priority : 3}]}        (给了优先级为3,mongodb为复制集的名)

2、初始化:

 >rs.initiate(config);  

3、添加备节点、仲裁节点


rs.add("192.168.1.21:20012")       添加备节点

rs.addArb("192.168.1.21:20013")    添加仲裁节点

rs.status()#查看状态

rs.conf()#查看副本集成员及其优先级(看好成员的顺序,优先级从1-100,越大的优先级越高)


config=rs.conf()           进行优先级设置

config.members[0].priority = 3                 设置主节点优先级为3

 config.members[1].priority = 2                 设置备节点优先级为2

 config.members[2].priority =  1                设置仲裁节点优先级为1

 rs.remove("ip:port")                            移除已经存在的成员

 rs.reconfig(config)          保存配置,生效

7、设置备节点为slave

mongodb:SECONDARY> show dbs

2016-12-17T12:26:22.621+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :

登陆到20012实例上执行:rs.slaveOk()

8、测试主节点宕机是否能够切换

总结:    

    mongoDB的主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面第一个问题“主节点挂掉了,整个集群内会自动切换”,如果节点挂了,它会重新选举新的主节点。对于普通的业务能够满足,但高并发的话,复制集是无法满足,就需要shard的,实现集群高可用,可以借助LVS或者其他。





相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...