MongoDB3.2副本集配置

终于把副本集配置完成了,网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁

推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

引述大神一段总结:http://blog.csdn.net/huwei2003/article/details/40453223

{

从概念上说一下MongoDB副本集和主从复制的区别。其实副本集(Replica Set)是主从复制的高级形式。高级在哪里呢?主动复制实现了数据备份+读扩展,但是master一旦down掉,需要手动启动slave。副本集在此基础上实现了备份自动重启的功能,也就是某一台slave会挺身而出,担当起master的职责。所以有三个角色,master(Primary),slave(Secondary),还有仲裁服务器。

}

下面是我自己的测试过程

环境:win10,MongoDB3.2

副本集优势:副本集实现了备份自动重启的功能,也就是master一旦down掉,无需手动启动slave ,某一台会自动slave挺身而出,担当起master的职责,维持数据库的读写操作

目标:

一台master(primary):master 192.168.228.1:27017

三台slave(secondary):mslave1 192.168.228.1:27018 ;   mslave2 192.168.228.1:27019 ;  mslave3 192.168.228.134:27017

其中192.168.228.1是本地win10地址,192.168.228.134是我虚拟机win7的地址,都是64位

(我机器和虚拟机用的nat方式互联,所有我的地址192.168.228.1这么恶心的地址    T_T)


第一步:基本配置

略过mongodb的安装和基本操作,我以前的文章都写的很清楚,不赘述

http://blog.csdn.net/rainyspring4540/article/details/52584257


第二步:手动创建四个服务实例的文件目录,,并配置好各自bin目录的环境变量

192.168.228.1:27017  对应 本机D:/data/rs27017

192.168.228.1:27018  对应 本机D:/data/rs27018

192.168.228.1:27019  对应 本机D:/data/rs27019

192.168.228.134:27017  对应 虚拟机D:/data


第二步:首先启动本地192.168.228.1:27017的服务器副本集实例,作为master

cmd打开命令提示符,运行

mongod  --dbpath d:/data/rs27017 --replSet mySet  --port 27017


启动服务后,另打开一个命令提示符进行登陆

mongo --port 27017
接着定义变量,运行:

conf = {_id:"mySet",members:[{_id:0,host:"192.168.228.1:27017"}]}
回车

接着运行:

rs.initiate(conf)
回车显示如下:


接着你输入

db.isMaster()
会显示出你的当前数据库服务实例已经加到副本集中,并且是master,如图:



第三步:启动本地其他的服务,加入到副本集中

即192.168.228.1:27018和192.168.228.1:27019

打开2个命令提示符,分别输入并回车

mongod --dbpath d:/data/rs27018 --replSet mySet --port 27018

mongod --dbpath d:/data/rs27019 --replSet mySet --port 27019

另外在本地打开命令提示符,登陆master,

mongo --port 27017

接着添加刚刚那2个服务实例到副本集中,分别输入并回车

rs.add("192.168.228.1:27018")

rs.add("192.168.228.1:27019")

显示如下:


添加成功了,

此时你可以登陆任意机器输入rs.status()查看集合,我登陆的是slave  192.168.228.1:27019

如图:



第四步:添加虚拟机的数据库服务器到副本集中

即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里看 同样存在,复制成功,

2 关闭master的窗口(即停止master服务)后,原来的master无法访问,另外的一个slave变成了master,依然可以正常添加修改数据

3 我这里配置读写的都是采用默认的,即master是读写,slave只读

4 登录任意服务实例,运行rs.isMaster()可以查看当前服务是否是master,运行rs.status()查看副本群内部情况



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值