一、实验综述
1、实验目的及要求
(1)了解MongoDB副本集
(2)熟悉MongoDB副本集成员
(3)掌握MongoDB副本集部署
(4)掌握MongoDB副本集操作
(5)理解副本集机制
实验过程:
(1)通过三台虚拟机部署官方推荐方案的副本集,该副本集包含一个主节点和两个副本节点,三台虚拟机的创建可参考本书资源中提供的环境配置文档,副本集各服务器的基本信息及角色分配如下表。
虚拟机名称 IP地址 成员角色 主机名
NoSQL_01 192.168.121.134 主节点 nosql01
NoSQL_02 192.168.121.135 副本节点 nosql02
NoSQL_03 192.168.121.136 副本节点 nosql03
(2)副本集环境准备、安装与启动(参考教材安装过程)
(3)副本集初始化
(4)查看副本集成员状态
(5)同步副本集
①在副本集主节点写入数据:进入服务器nosql01(副本集主节点)中MongoDB的bin目录;登陆MongoDB客户端;切换到test数据库;创建集合user并插入一条文档;查看文档是否写入成功;
②在副本节点验证数据是否同步成功:进入服务器nosql02(副本集副本节点)中MongoDB的bin目录;登陆MongoDB客户端;切换到test数据库;查看文档是否写入成功;开启副本节点读取权限;
(6)故障转移
查看MongoDB服务运行的进程;关闭MongoDB服务进程;登陆服务器nosql02和nosql03的客户端,验证这两个副本节点中是否有其中的一个节点转为主节点;
(7)配置副本集成员
①获取副本集成员配置信息:进入服务器nosql02中MongoDB的bin目录;登录MongoDB客户端;将副本集成员信息赋值到变量cfg中;
②调整副本集成员的优先级:将“_id”为0的副本节点(即服务器nosql01)优先级值由1改为2;将调整副本集成员优先级的操作应用到副本集;
③配置隐藏节点:在服务器nosql01中MongoDB的bin目录下登录MongoDB客户端;将副本集配置信息赋值到变量cfg;设置服务器nosql02中副本节点的优先级为0;设置服务器nosql02中副本节点为隐藏节点;将调整副本集成员的操作应用到副本集;
④配置延迟节点:将副本集配置信息赋值到变量cfg;设置服务器nosql03中副本节点的优先级为0;设置服务器nosql03中副本节点为隐藏节点;设置延迟时间为3600秒;将调整副本集成员的操作应用到副本集;
⑤配置副本集成员投票权:在服务器nosql01中MongoDB的bin目录下登录MongoDB客户端;将副本集配置信息赋值到变量cfg;设置服务器nosql02中隐藏节点的投票权设置为0,即不可投票;将调整副本集成员的操作应用到副本集;
⑥将副本节点转为仲裁节点:在服务器nosql01中MongoDB的bin目录下登录MongoDB客户端;将副本集配置信息赋值到变量cfg;移除服务器nosql02中的隐藏节点;在服务器nosql02上退出MongoDB客户端并关闭MongoDB进程,备份MongoDB数据存放目录;在服务器nosql02上创建一个新的MongoDB数据存放目录,并以该目录为数据存放目录在MongoDB的bin目录下重新启动MongoDB;在副本集主节点(服务器nosql01)将该服务器nosql02中的MongoDB以仲裁节点的角色添加到副本集中。

认真完成实验题,能正确运行,提交实验报告并上传程序,实验报告要求写出操作步骤、结果、问题、解决方法、体会等。
2、实验仪器、设备或软件
计算机、Linux、VMvare15pro、Secure CRT、MongoDB4.2相关的操作系统等。
二、实验过程(实验步骤、代码、数据、过程截图)
1.在服务器nosql01上启动MongoDB服务。以副本集模式启动MongoDB。如图2-1所示
代码:

cd /opt/servers/mongodb_demo/replicaset/mongodb/bin
./mongod --replSet itcast \--dbpath=/opt/servers/mongodb_demo/replicaset/data/ \--logpath=/opt/servers/mongodb_demo/replicaset/logs/mongodb.log \--port 27017 --bind_ip nosql01 --logappend -fork

图2-1
2.进入MongoDB的bin目录。登录MongoDB客户端。如图2-2所示:
代码:

cd /opt/servers/mongodb_demo/replicaset/mongodb/bin
./mongo --host nosql01 --port 27017

图2-2

3.在服务器nosql01的MongoDB客户端中执行副本集初始化操作。如图2-3所示:
代码:rs.initiate()

图2-3

4.将服务器nosql04中的MongoDB以副本节点的角色添加到副本集中和服务器nosql05中的MongoDB以副本节点的角色添加到副本集中。如图2-4所示:
代码:

rs.add("nosql04:27017")
rs.add("nosql05:27017")

图2-4

5.查看副本集成员状态信息。如图2-5,2-6所示:
代码:rs.status()

图2-5

图2-6
6.切换到test数据库。创建集合user并插入一条文档。查看文档是否写入成功。如图2-7所示。
代码:

use test
db.user.insert({"name":"bozai"})
db.user.find()

图2-7
7.进入服务器nosql02(副本集副本节点)中MongoDB的bin目录。登陆MongoDB客户端。切换到test数据库。查看文档是否写入成功。开启副本节点读取权限。如图2-8所示。
代码:

cd /opt/servers/mongodb_demo/replicaset/mongodb/bin
./mongo --host nosql02 --port 27017
use test
db.user.find()  //由于副本节点默认没有读取副本集内容权限,因此会报错
rs.slaveOk()  //开启读取权限后再次执行查看文档命令

图2-8
8.在服务器nosql01中关闭MongoDB服务,在此之前需要在MongoDB客户端中执行exit命令退出MongoDB客户端。查看MongoDB服务运行的进程。如图2-9所示。
代码:

Exit
ps -ef | grep mongodb

图2-9
9.登陆服务器nosql04和nosql05的客户端,验证这两个副本节点中是否有其中的一个节点转为主节点( MongoDB的bin目录)。进入服务器nosql04中MongoDB的bin目录。如图2-10所示。
代码:

./mongo --host nosql04 --port 27017
./mongo --host nosql05 --port 27017
cd /opt/servers/mongodb_demo/replicaset/mongodb/bin
./mongo --host nosql04 --port 27017

图2-10
10.将副本集成员信息赋值到变量cfg中。如图2-11,2-12所示。
代码:cfg=rs.conf()

图2-11

图2-12
11.将“_id”为0的副本节点(即服务器nosql01)优先级值由1改为2。将调整副本集成员优先级的操作应用到副本集。如图2-13所示。
代码:

cfg.members[0].priority = 2
rs.reconfig(cfg)

图2-13
12.在服务器nosql01中MongoDB的bin目录下登录MongoDB客户端。将副本集配置信息赋值到变量cfg。设置服务器nosql02中副本节点的优先级为0。设置服务器nosql02中副本节点为隐藏节点。将调整副本集成员的操作应用到副本集。如图2-14所示。
代码:

./mongo –-host nosql01 –-port 27017
cfg = rs.conf()
cfg.members[1].priority = 0
cfg.members[1].hidden = true
rs.reconfig(cfg)

图2-14
13.将副本集配置信息赋值到变量cfg。设置服务器nosql04中副本节点的优先级为0。设置服务器nosql04中副本节点为隐藏节点。将调整副本集成员的操作应用到副本集。设置延迟时间为3600秒。如图2-15,2-16所示。
代码:

cfg = rs.conf()
cfg.members[2].priority = 0
cfg.members[2].hidden = true
cfg.members[2].slaveDelay = 3600
rs.reconfig(cfg)

图2-15

图2-16
14.将副本集配置信息赋值到变量cfg。设置服务器nosql02中隐藏节点的投票权设置为0,即不可投票。将调整副本集成员的操作应用到副本集。如图2-17所示。
代码:

cfg = rs.conf()
cfg.members[1].votes = 0
rs.reconfig(cfg)

图2-17
15.移除服务器nosql02中的隐藏节点。如图2-18所示。
代码:rs.remove("nosql02:27017")

图2-18
16.在服务器nosql02上创建一个新的MongoDB数据存放目录,并以该目录为数据存放目录在MongoDB的bin目录下重新启动MongoDB。在副本集主节点(服务器nosql01)将该服务器nosql02中的MongoDB以仲裁节点的角色添加到副本集中。如图2-19,2-20所示。

mkdir /opt/servers/mongodb_demo/replicaset/data-new./mongod --replSet itcast \--dbpath=/opt/servers/mongodb_demo/replicaset/data-new\ --logpath=/opt/servers/mongodb_demo/replicaset/logs/mongodb.log \--port 27017 --bind_ip nosql02 --logappend --fork
rs.addArb("nosql02:27017")

图2-19

图2-20


三、结论
分析讨论

MongoDB副本集的部署与操作相关推荐

  1. mongodb副本集+分片集群部署 step by step

    mongodb副本集+分片集群部署step by step 本文只讲述mongodb副本集+分片集群的部署,关于mongdb shading & replica set原理优点等不在本文讨论范 ...

  2. MongoDB副本集部署

    实验环境:准备三台服务器部署MongoDB副本集 1.MongoDB下载安装(三台服务器操作相同) cd /data/mongodbwget https://fastdl.mongodb.org/li ...

  3. mongodb主从复制及副本集的部署

    一.mongodb配置参数介绍: [root@host11 tmp]# cat  /etc/mongod.conf #以守护进程的方式运行 fork=true #设置db的路径 dbpath=/usr ...

  4. MongoDB副本集、分片集的伪分布式部署(保姆级教程)

    目录 1 集群架构(概念篇) 1.1 MongoDB核心组件 1.2 主从复制 1.3 副本集 1.4 分片集 2 集群搭建 2.1 部署副本集(伪分布式) 2.2 分片集部署(伪分布式) 2.3 副 ...

  5. DockerCompose MongoDB 副本集(集群) (客户端验证密码 - 集群内部使用mongodbKeyfile验证 ) 部署

    本部署MongoDB副本集是没有用其他的配置什么的(例如: mongodb-compass).是最简单的一个 我是为了mongodb的事务才配置的这个副本集,要使用mongodb的事务必须要副本集. ...

  6. 小丸子学MongoDB系列之——部署MongoDB副本集

    1.以副本集的方式启动mongodb实例 1.1 创建副本集目录 [mgousr01@vm1 ~]$ mkdir -p mongorep/{mg17/{bin,conf,data,logs,pid}, ...

  7. (2)MongoDB副本集自动故障转移原理(含客户端)

    前文我们搭建MongoDB三成员副本集,了解集群基本特性,今天我们围绕下图聊一聊背后的细节. 默认搭建的副本集均在主节点读写,辅助节点冗余部署,形成高可用和备份,具备自动故障转移能力. 集群心跳保活 ...

  8. MongoDB副本集(Replica Sets)搭建教程

    MongoDB副本集(Replica Sets)搭建教程 最近在生产环境下部署公司项目.由于项目中有使用到MongoDB,所以参考网上的博客,在服务器上进行搭建MongoDB副本集.今天打算将其记录成 ...

  9. MongoDB副本集详解与搭建

    1. 简介 MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务. 副本集可提供冗余和高可用性,是所有生产部署的基础.也可以说,副本集类似于有自动故障恢复功能的主从 ...

最新文章

  1. QT制作窗口切换的小程序
  2. Python使用matplotlib可视化排序的点图、点图表示数据的等级顺序、沿着水平轴对齐(Ordered Dot Plot)
  3. 5G商用将在“十三五”时期内启动
  4. c# 文件压缩、解压及下载
  5. 研发部门之间利益之争何时休?如何休?
  6. 【python函数】函数
  7. Eviews实现var模型
  8. stm32f4的数字摄像头接口(DCMI)使用
  9. 02-若依权限管理子系统简介(自己了解)
  10. 绿色数据中心“东数西算”全面启动
  11. 深度学习入门之Momentum
  12. 计算机101页报告翻译,冯诺伊曼 101页报告 First Draft of a Report on the EDVAC
  13. 如何用LaTeX写一个PPT
  14. 插秧诗 - 退步原来是向前
  15. 图片怎么压缩?这些方法值得收藏
  16. Tuscany插件的安装
  17. 通用进制转换工具,可实现进制之间的任意转换
  18. 容器技术Docker
  19. LLVM指令选择中的模式定义方法
  20. SpringBoot 接口层统一加密解密

热门文章

  1. 如何使用Python进行异常检测?我来教你呀~
  2. 自习室的泡利不相容定律(C语言实现)
  3. 几款浏览器兼容性测试工具
  4. 启示录java游戏_龙之幻想启示录(正版)
  5. 利用conda创建、激活和删除新环境。
  6. u盘图片损坏怎么恢复
  7. 迷途中的融担:在下沉与专注中寻找未来
  8. 如何分辨及举报钓鱼网站/诈骗网站
  9. Ken按特性开发核心思想
  10. 滴滴快车历史奖励政策:含工作日和周末的高峰奖励、翻倍奖励【历史政策】...