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

时间:2021-12-26 08:06:54

副本集特征:

  • 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)  

回车显示如下:

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

接着你输入(设置主数据库)

db.isMaster()  

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

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

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

即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")  

显示如下:

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

添加成功了,

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

如图:

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

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

即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)副本集配置的更多相关文章

  1. 分布式文档存储数据库 MongoDB

    MongoDB 详细介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以 ...

  2. 分布式文档存储数据库之MongoDB副本集

    前文我们聊到了mongodb的索引的相关作用和介绍以及索引的管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13950287.html:今天我们来聊下mon ...

  3. 分布式文档存储数据库之MongoDB分片集群

    前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...

  4. 分布式文档存储数据库之MongoDB基础入门

    一.MongoDB简介 MongoDB是用c++语言开发的一款易扩展,易伸缩,高性能,开源的,schema free 的基于文档的nosql数据库:所谓nosql是指不仅仅是sql的意思,它拥有部分s ...

  5. 分布式文档存储数据库之MongoDB索引管理

    前文我们聊到了MongoDB的简介.安装和对collection的CRUD操作,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13941797.html:今天我 ...

  6. 分布式文档存储数据库之MongoDB备份与恢复

    前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html:今天我们来了解下mong ...

  7. 分布式文档存储数据库之MongoDB访问控制

    上一篇博客主要聊了下mongodb的分片机制以及分片集群的搭建,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13958295.html:今天我们来了解下mon ...

  8. NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署

    NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...

  9. ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理

    分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...

随机推荐

  1. Session为null 问题

    问题描述: var svode=HttpContext.Current.Session["VCode"].ToString(); //调试时候发现 svode ==null // ...

  2. ocp 1Z0-051 71-105题解析

    71. Which arithmeticoperations can be performed on a column by using a SQL function that is builtint ...

  3. input在苹果浏览器下变成圆角的解决方案

    复制代码代码如下: .form-actions input{ ... -webkit-appearance: none; } 更新到iPhone一看,真爽,问题解决了.

  4. 入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由angel_郁发表于云+社区专栏 介绍 Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布过程. 在 ...

  5. IO多路复用之select,poll,epoll个人理解

    在看这三个东西之前,先从宏观的角度去看一下,他们的上一个范畴(阻塞IO和非阻塞IO和IO多路复用) 阻塞IO:套接口阻塞(connect的过程是阻塞的).套接口都是阻塞的. 应用程序进程-----re ...

  6. ARM指令学习

    跳转指令 直接向程序计数器PC写入i跳转地址值,可以实现在4GB的地址空间中的任意跳转. ARM跳转指令可以完成向前或向后的32MB的地址空间的跳转. -B 跳转指令 -BL 带返回的跳转指令 -BL ...

  7. 知识点:图说 Mysql 权限管理

    图: #授权表 user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段 db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段 tables_priv ...

  8. NATS—消息通信模型

    消息通信模型 NATS的消息通信是这样的:应用程序的数据被编码为一条消息,并通过发布者发送出去:订阅者接收到消息,进行解码,再处理.订阅者处理NATS消息可以是同步的或异步的. * 异步处理  异步处 ...

  9. 初识ZooKeeper与集群搭建实例

    原文链接:http://www.linuxidc.com/Linux/2015-02/114230.htm zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Ch ...

  10. mxnet(gluon) 实现DQN简单小例子

    参考文献 莫凡系列课程视频 增强学习入门之Q-Learning 关于增强学习的基本知识可以参考第二个链接,讲的挺有意思的.DQN的东西可以看第一个链接相关视频.课程中实现了Tensorflow和pyt ...