设为首页 收藏本站
查看: 1389|回复: 0

[经验分享] mongodb复制集的实现

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-19 12:43:04 | 显示全部楼层 |阅读模式
   复制集(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、添加相关的目录文件
[iyunv@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个实例的配置文件一致

[iyunv@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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316456-1-1.html 上篇帖子: mongodbdb启用wiredTiger引擎及zlib压缩 下篇帖子: mongoDB基本操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表