网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁
 
从概念上说一下MongoDB副本集和主从复制的区别。其实副本集(Replica Set)是主从复制的高级形式。高级在哪里呢?主动复制实现了数据备份+读扩展,但是master一旦down掉,需要手动启动slave。副本集在此基础上实现了备份自动重启的功能,也就是某一台slave会挺身而出,担当起master的职责。所以有三个角色,master(Primary),slave(Secondary),还有仲裁服务器。
 
环境:win7,MongoDB3.2 
副本集优势:副本集实现了备份自动重启的功能,也就是master一旦down掉,无需手动启动slave ,某一台会自动slave挺身而出,担当起master的职责,维持数据库的读写操作
目标:
一台master(primary):master 127.0.0.1:5555
三台slave(secondary):mslave1 127.0.0.1:6666 ;   mslave2 127.0.0.1:7777 ;  mslave3 192.168.228.134:27017
其中192.168.228.134是我虚拟机win7的地址,都是64位
 
第一步:基本配置
略过mongodb的安装和基本操作,见我另一篇博文:http://www.cnblogs.com/leskang/p/6000852.html
 
第二步:设置master服务器
1、手动创建四个服务实例的文件目录,,并配置好各自bin目录的环境变量,我本地的话只要配置一次
127.0.0.1:5555  对应 本机D:\mongodata\5555
127.0.0.1:6666 对应 本机D:\mongodata\6666
127.0.0.1:7777  对应 本机E:\mongodata\7777
192.168.228.134:27017  对应 虚拟机D:/data
 
2、启动本地127.0.0.1:5555的服务器副本集实例,作为master
cmd打开命令提示符,运行
mongod --dbpath D:\mongodata\5555 --replSet mySet --port 5555 
启动服务后,另打开一个命令提示符进行登陆
mongo --port 5555
接着定义变量,运行:
conf = {_id:"mySet",members:[{_id:0,host:"127.0.0.1:5555"}]}  
回车
接着运行:
rs.initiate(conf) 
回车显示如下:
 
接着你输入:
db.isMaster() 
会显示出你的当前数据库服务实例已经加到副本集中,并且是master,如图:
 
 
第三步:启动本地其他的服务,加入到副本集中,即127.0.0.1:5555和127.0.0.1:6666
打开2个命令提示符,分别输入并回车
mongod --dbpath D:\mongodata\6666 --replSet mySet --port 6666
mongod --dbpath E:\mongodata\7777 --replSet mySet --port 7777  
另外在本地打开命令提示符,登陆master:
mongo --port 27017  
接着添加刚刚那2个服务实例到副本集中,分别输入并回车:
rs.add("127.0.0.1:6666")
rs.add("127.0.0.1:7777")
显示如下:
添加成功了,此时你可以登陆任意机器输入rs.status()查看集合,我登陆的是slave  127.0.0.1:7777
如图:
 
 
第四步:添加虚拟机的数据库服务器到副本集中
即192.168.228.134:27017
方法基本同上:到虚拟机中先启动服务,同样运行
mongod --dbpath d:/data --replSet mySet --port 27017  
接着回到本机,打开命令提示符,登陆master
mongo --port 27017  
同上接着添加虚拟机的服务到副本集中
rs.add("192.168.228.134:27017")  
一切ok了
测试:
1 登陆master 插入一些数据,再去slave里看 同样存在,复制成功。
  注意:新建的slave是不能读和写的,当在从服务器上读时会出现errmsg:not master and slaveOk=flase code:13435 错误,需要执行:rs.slaveOk()来开启读功能
2 关闭master的窗口(即停止master服务)后,原来的master无法访问,另外的一个slave变成了master,依然可以正常添加修改数据
3 登录任意服务实例,运行rs.isMaster()可以查看当前服务是否是master,运行rs.status()查看副本群内部情况
 
 

mongodb3.2副本集配置的更多相关文章

  1. [Database] MongoDB 副本集配置

    MongoDB 副本集配置 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬 ...

  2. 分布式文档存储数据库(MongoDB)副本集配置

    副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...

  3. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  4. MongoDB副本集配置系列三:副本集的认证方式

    1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...

  5. Mongodb3.0.5副本集搭建及spring和java连接副本集配置

    这是去年写的一篇文档,最近突然发现并没有发不出来,因此现在补上,希望能对某些朋友有所帮助.因为当时记录时没有截图,因此这里看起来可能就比较单调. 一.基本环境: mongdb3.0.5数据库 spri ...

  6. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...

  7. mongodb副本集配置

    需要用到mongodb的时候单个实例肯定是不行的,挂了怎么办,那然后呢,跟mysql一样搞主从备份吗,是可以的mongodb这么弄,不过官网已经不推荐了这么干了,推荐使用副本集的模式,然后数据再大一点 ...

  8. mongodb3.0副本集搭建补充~~非admin数据库的用户权限

    之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/detail ...

  9. mongodb3.6 副本集(三)mongodb 如何做数据备灾

    前言 个人理解,副本集一个主要作用就是当Master库出现故障,其中的一个salve从库会被选举出来成为新的Master.框架图如下: 其中,选举者是不参与数据存储的,它的作用只是为了选举出新的Mas ...

随机推荐

  1. 四、curator recipes之共享重入互斥锁

    简介 curator的recipes实现了可重入互斥锁,允许你在分布式场景下多个进程之间实现锁的互斥以协调多进程执行. 相关类:InterProcessMutex 官方文档:http://curato ...

  2. [LeetCode]Delete and Earn题解(动态规划)

    Delete and Earn Given an array nums of integers, you can perform operations on the array. In each op ...

  3. Map 模板

    #include<stdio.h> #include<iostream> #include<map> using namespace std; typedef pa ...

  4. error: unpack failed: error Missing tree

    最近新建一个仓库,push时遇到如下问题,试了好多方法,最后在stackoverflow上找到解决办法了,可是在开始时就试过这方法,但不成.至于为嘛出现的这种错误,还是不明白原因. git.exe p ...

  5. 【echats】echats悬浮事件频繁触发、过于灵敏、快速抖动等异常现象,适用与tooltip有关

    方案:transitionDuration设为0: 如图,发现关闭tooltip后现象消失,猜测与tooltip有关. 经过仔细观察,鼠标在快速移动时tooltip会延迟移动,就是这个时间差,让鼠标悬 ...

  6. LOJ572: Misaka Network 与求和

    传送门 假设 \(f^k(i)\) 就是 \(f(i)\) 莫比乌斯反演得到 \[ans=\sum_{i=1}^{N}\lfloor\frac{N}{i}\rfloor^2\sum_{d|i}f(d) ...

  7. Android热修复之AndFix使用教程

    AndFix的github地址 AndFix 全称Android hot-fix,是alibaba的Android热修复框架,支持Android 2.3到6.0的版本,支持arm与X86系统架构,支持 ...

  8. Grunt入门学习之(1) -- 环境安装

    Grunt入门学习(1) - 环境安装 这周根据项目需要,在项目的基础上分模块开发了一个小的项目板块,但是在规范组织每个模块的代码和其依赖性时比较麻烦,需要一个项目板块的构建工具.各个模块都包括其对应 ...

  9. 弧形菜单2(动画渐入)Kotlin开发(附带java源码)

    弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gra ...

  10. 利用dotnet restore 导入本地 .nupkg 包

    dotnet restore 主要是用于部署.net core 项目中所需的依赖库,集成了nuget包管理软件.因此,dotnet restore 实际上就是根据project.json(今后可能为p ...