MongoDB副本集的部署与操作
一、实验综述1、实验目的及要求(1)了解MongoDB副本集(2)熟悉MongoDB副本集成员(3)掌握MongoDB副本集部署(4)掌握MongoDB副本集操作(5)理解副本集机制实验过程:(1)通过三台虚拟机部署官方推荐方案的副本集,该副本集包含一个主节点和两个副本节点,三台虚拟机的创建可参考本书资源中提供的环境配置文档,副本集各服务器的基本信息及角色分配如下表。虚拟机名称IP地址成员角色主机
一、实验综述
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
三、结论
分析讨论
更多推荐
所有评论(0)