一、Mongodb复制集简介

什么是复制集?

复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。

MongoDB复制集原理:

mongodb的复制集至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

mongodb各个节点常见的搭配方式为:一主一从、一主多从。

主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

MongoDB复制结构图如下所示:

以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时, 主节点与从节点进行数据交互保障数据的一致性。

复制集的优势:

让数据更安全
搞数据可用性
灾难恢复
无停机维护(如备份,重建索引,故障转移)
读缩放(额外的副本读取)
副本集对应用程序是透明的

复制集的特点:

N个几点的群集
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复

主从切换:

1.手动切换:主动放弃primary,其余从服务器会选举出主服务器
2.自动切换:关闭MongoDB服务,其余从服务器会选举出主服务器

二、实验环境:

1.安装MongoDB链接:Centos 7 超简单yum源安装MongoDB

2.因为是实验,所以在一台Centos 7虚拟机的MongoDB服务器进行配置复制集,IP:192.168.233.6

3.添加配置开启4个实例,端口号分别为:

1)27017
2)27018
3)27019
4)27020

4.实验操作:4个实例   开启三个  1主2个从   额外添加复制集追加实例27020 节点      撤销实例27020节点

三、操作步骤

1.安装MongoDB完成后,默认端口号是27017

额外添加3个实例

首先需要创建三个数据存储目录,三个日志文件

mkdir -p /data/mongodb/mongodb{2,3,4}                   #创建3个数据文件目录
mkdir -p /data/mongodb/logs                                                 #创建日志文件目录
touch /data/mongodb/logs/mongodb{2,3,4}.log             #创建3个日志文件
chmod 777 /data/mongodb/logs/*.log                         #修改日志文件的权限,能写能读,最大权限

2.修改 27017端口默认MongoDB的配置文件,开启复制集

vim /etc/mongod.conf

3.因为修改过配置文件所以需要关闭并重新开启MongoDB

mongod -f /etc/mongod.conf  --shutdown                  #关闭MongoDB

mongod -f /etc/mongod.conf                                   #开启MongoDB

4.复制并生成3个节点配置文件,进行修改

[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod4.conf

5.需要修改每一个节点的配置文件

[root@localhost logs]# vim /etc/mongod2.conf

# vim /etc/mongod2.conf

.......

path: /data/mongodb/logs/mongodb2.log               //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb2                        //每个实例指定自己的数据目录

port: 27018                                                          //指定端口分别为27018、 27019 、 27020

.......

replication:                                           //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang

[root@localhost logs]# vim /etc/mongod3.conf

# vim /etc/mongod3.conf

.......

path: /data/mongodb/logs/mongodb3.log               //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb3                        //每个实例指定自己的数据目录

port: 27019                                       //指定端口分别为27018、 27019 、 27020

.......

replication:                          //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang

[root@localhost logs]# vim /etc/mongod4.conf

# vim /etc/mongod4.conf

.......

path: /data/mongodb/logs/mongodb4.log               //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb4                        //每个实例指定自己的数据目录

port: 27020                                          //指定端口分别为27018、 27019 、 27020

.......

replication:                           //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang

6.设置配置以上步骤修改完成mongo2  mongo3  mongo4后,开启服务

[root@localhost logs]# mongod -f /etc/mongod2.conf

[root@localhost logs]# mongod -f /etc/mongod3.conf

[root@localhost logs]# mongod -f /etc/mongod4.conf

#查看下四个端口的MongoDB开启

[root@localhost logs]# netstat -natp | grep mongo

7.配置三个节点的复制集

#首先进入默认MongoDB数据库中

mongo

#创建三个节点复制集

cfg={"_id":"yang","members":[{"_id":0,"host":"192.168.233.6:27017"},{"_id":1,"host":"192.168.233.6:27018"},{"_id":2,"host":"192.168.233.6:27019"}]}

#初始化配置时保证从节点没有数据

rs.initiate(cfg)

rs.status()      #查看复制集的状态

主节点:27017端口

从节点:27018端口

从节点:27019端口

#因为之前只是创建了三个节点的复制集,现在演示添加27020端口的节点

#首先需要进入主节点PRIMARY  27017

#添加节点 ,在主节点上才能进行操作 primary

rs.add("192.168.233.6:27020")

rs.status()      #查看复制集的状态

#既然能添加节点,就能删除节点:
#删除节点 ,在主节点上才能进行操作  primary

rs.remove("192.168.233.6:27020")

转载于:https://blog.51cto.com/13767783/2174482

MongoDB 主从复制集搭建相关推荐

  1. MongoDB副本集搭建及在springboot中使用

    MongoDB副本集搭建及在springboot中使用 一.mongoDB副本集的搭建 原则就是一台master(主),一台salve(从),一台arbiter(仲裁) 1.下载mongoDB htt ...

  2. MongoDB副本集搭建、连接php

    文章目录 PHP连接MongoDB MongoDB副本集介绍 MongoDB副本集搭建 MongoDB副本集测试 PHP连接MongoDB php连接MongoDB需要安装拓展包有两种,分别是mong ...

  3. Linux下MongoDB副本集搭建(主--从--仲裁模式)

    1.下载MongoDB安装文件:mongodb-linux-x86_64-3.2.1.tgz(版本随意): 2.解压安装MongoDB:tar  -zxvf  mongodb-linux-x86_64 ...

  4. MongoDB副本集搭建(超级详细)

    MongoDB 副本集原理 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据 ...

  5. MongoDB复制集搭建

    最近在学习mongodb,看文档时看到复制集这块觉得挺有意思,于是便动手搭建了一下mongodb复制集 mongodb的复制至少需要两个节点.其中一个是主节点,负责处理客户端请求,其余的都是从节点,负 ...

  6. mongodb副本集搭建

    cat >> /etc/sysctl.conf< cat >>/etc/security/limits.conf<<EOF soft nproc 65535 ...

  7. MongoDB复制集原理、搭建及复制集简单维护

    ##一.MongoDB复制集原理 ###(一)复制集简介   Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Drive ...

  8. mongodb----副本集搭建及故障自动切换

    mongodb副本集搭建 mongodb单台服务器 数据会有丢失的风险 单台服务器无法做高可用 mongodb副本集能够预防数据丢失,多台mongodb数据一致. mongodb副本集能够在有问题的时 ...

  9. educoder MongoDB 复制集 分片

    第2关:MongoDB 复制集搭建 mkdir -p /data/test/db1 /data/test/db2 /data/test/db3 mkdir -p /logs/test touch { ...

最新文章

  1. java 数据类型 存储_Java数据类型以及存储
  2. Java实战项目开发学习书籍
  3. Android典型界面设计(3)——访网易新闻实现双导航tab切换
  4. MongoClient类参考文档
  5. 智慧城市同城V4小程序独立版v1.6.5+前端
  6. BootStrap--dropdown
  7. 如何处理苹果Mac冻结和无响应的应用程序?
  8. 20190226杂七杂八
  9. 【学习笔记】尚硅谷大数据项目之Flink实时数仓---数据采集
  10. 不必写一行代码,利用ivx低代码产品开发web平台
  11. 批量爬取微信公众号下的音频
  12. Python 去除单色背景
  13. 正则表达式(Regex)规范及运用
  14. 联想笔记本声音太小怎么办_联想笔记本电脑没声音了怎么办(大学生如何选择笔记本电脑)...
  15. [USACO10OCT]汽水机Soda Machine
  16. Gikee区块链浏览器全新发布,新增BTC、ETH两大公链
  17. 以太网以及车载以太网概述
  18. 如何在CAD图纸中快速布置冷媒干管?
  19. 数据结构大作业之停车场管理系统
  20. 在线视频:模拟电子技术,电力电子技术

热门文章

  1. 用树莓派获取天气状况
  2. USART中的SART_IT_RXNE,USART_IT_TC,USART_IT_TXE
  3. React Native组件开发指南
  4. 20172304 《程序设计与数据结构》第六周学习总结
  5. 【Spring】12、Spring Security 四种使用方式
  6. PHP Fatal error: Class #39;DOMDocument#39; not found
  7. Mysql的实用语法
  8. [Web开发] 微软的 PHP+IIS+WinServer 开发培训资料/示例代码
  9. ROS系统 常用可视化工具的使用
  10. Pycharm 在Ubuntu图形界面中创建桌面图标