分布式文档存储数据库(MongoDB)副本集配置
副本集特征:
- N 个节点的集群
- 任何节点可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复
相关文章:
http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html
菜鸟教程MongoDB配置: http://www.runoob.com/mongodb/mongodb-tutorial.html
推荐官网的副本集配置: https://docs.MongoDB.com/manual/tutorial/deploy-replica-set/
引述大神一段总结: http://blog.csdn.NET/huwei2003/article/details/40453223
{
MongoDB的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
从概念上说一下MongoDB副本集和主从复制的区别。
其实副本集(Replica Set)是主从复制的高级形式。高级在哪里呢?主动复制实现了数据备份+读扩展,但是master一旦宕机,所有服务将停止,需要手动启动slave。而副本集在此基础上实现了备份自动重启的功能,也就是某一台slave会挺身而出,担当起master的职责。所以有三个角色,master(Primary),slave(Secondary),还有仲裁服务器。
}
下面是我自己的测试过程
环境:win7,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是本地win7地址,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里看 同样存在,复制成功,
注意:新建的slave是不能读和写的,当在从服务器上读时会出现errmsg:not master and slaveOk=flase code:13435 错误,需要执行:rs.slaveOk()来开启读功能
2 关闭master的窗口(即停止master服务)后,原来的master无法访问,另外的一个slave变成了master,依然可以正常添加修改数据
3 我这里配置读写的都是采用默认的,即master是读写,slave只读
4 登录任意服务实例,运行rs.isMaster()可以查看当前服务是否是master,运行rs.status()查看副本群内部情况
分布式文档存储数据库(MongoDB)副本集配置的更多相关文章
- 分布式文档存储数据库 MongoDB
MongoDB 详细介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以 ...
- 分布式文档存储数据库之MongoDB副本集
前文我们聊到了mongodb的索引的相关作用和介绍以及索引的管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13950287.html:今天我们来聊下mon ...
- 分布式文档存储数据库之MongoDB分片集群
前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...
- 分布式文档存储数据库之MongoDB基础入门
一.MongoDB简介 MongoDB是用c++语言开发的一款易扩展,易伸缩,高性能,开源的,schema free 的基于文档的nosql数据库:所谓nosql是指不仅仅是sql的意思,它拥有部分s ...
- 分布式文档存储数据库之MongoDB索引管理
前文我们聊到了MongoDB的简介.安装和对collection的CRUD操作,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13941797.html:今天我 ...
- 分布式文档存储数据库之MongoDB备份与恢复
前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html:今天我们来了解下mong ...
- 分布式文档存储数据库之MongoDB访问控制
上一篇博客主要聊了下mongodb的分片机制以及分片集群的搭建,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13958295.html:今天我们来了解下mon ...
- NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署
NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...
- ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...
随机推荐
- CLR via 笔记 5.3 值类型的装箱和拆箱
1.装箱 为了将一个值类型转换成一个引用类型,要使用一个名为装箱(Boxing)的机制. 1.在托管堆中分配好内存.分配的内存量是值类型的各个字段需要的内存量加上托管堆的所有对象都有的两个额外成员(类 ...
- 刚开始学Python,坚持下去
嗯,刚开始学Python没几天,挺好的一门语言,十分简洁,也很好上手. 坚持下去,每天至少看一个小时的Python.
- Logstash之时区问题的建议和修改---filter---and duplicate resolution.
2. logstash es duplicate https://logstash.jira.com/browse/LOGSTASH-1875 https://logstash.jira.com/br ...
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...
- 4.GIT安装
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Window ...
- 技术架构标杆(Certicom Security Architecture)对比思考——By Me at 20140408
看到一家国外网络安全企业Certicom,官网链接:http://www.certicom.com/,可以作为很好的企业安全技术建构以及产品规划的标杆,下面我绘制了该公司的产品组合以及技术架构框图:
- POJ3176:Cow Bowling(数字三角形问题)
地址:http://poj.org/problem?id=3176 题目解析:没什么好说的,之前上课时老师讲过.从下往上找,每一个三角形的顶点可由两个角加上顶点的值 两种方式得到 ,用dp数组保存下最 ...
- HDU1087:Super Jumping! Jumping! Jumping!(简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1087 水题,可是我却因为dp数组的初始化造成了多遍wa,这题就是求上升序列的最大和. 转移方程: 首先要对 ...
- hdu2825Wireless Password
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2825 题目: Wireless Password Time Limit: 2000/1000 MS (Ja ...
- CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
目前CentOS6.5上自带的python版本为2.6,升级到python2.7会碰到很多问题.本文将介绍如何安装python2.7.pip以及python命令行补全. 一.如何安装python2.7 ...