一、节点类型
standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为活跃节点。
passive:存储了完整的数据副本,参与投票,不能成为活跃节点。
arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为活跃节点。
二、参数说明
--dbpath 数据文件路径
--logpath 日志文件路径
--port 端口号,默认是27017.我这里使用的也是这个端口号.
--replSet 复制集的名字,一个replica sets中的每个节点的这个参数都要用一个复制集名字,这里是test.
--replSet 这个后面跟的是其他standard节点的ip和端口
--maxConns 最大连接数
--fork 后台运行
--logappend 日志文件循环使用,如果日志文件已满,那么新日志覆盖最久日志。
三、创建副本集
环境说明:
ip:10.0.0.3
ip:10.0.0.4
ip:10.0.0.5
启动第一个standard节点(ip:10.0.0.3)
hww@ubuntu:~$ mkdir -p ~/mongo/db ~/mongo/log
hww@ubuntu:~$ mongod -dbpath ~/mongo/db -logpath ~/mongo/log/mongod.log -port 27037 -replSet test -maxConns=2000 -fork -logappend
启动第一个standard节点(ip:10.0.0.4)
hww@ubuntu:~$ mkdir -p ~/mongo/db ~/mongo/log
hww@ubuntu:~$ mongod -dbpath ~/mongo/db -logpath ~/mongo/log/mongod.log -port 27037 -replSet test -maxConns=2000 -fork -logappend
启动arbiter节点,也就是仲裁节点 (ip:10.0.0.5)
hww@ubuntu:~$ mkdir -p ~/mongo/db ~/mongo/log
hww@ubuntu:~$ mongod -dbpath ~/mongo/db -logpath ~/mongo/log/mongod.log -port 27037 -replSet test -maxConns=2000 -fork -logappend
启动了以上服务器后,日志告诉你副本集没有初始化。因为还差最后一步:在shell中初始化副本集。
连接其中一台standard节点服务器。初始化命令只能执行一次
:
hww@ubuntu:~$ mongo 10.0.0.3:27037/admin
MongoDB shell version: 2.0.1
connecting to: 10.0.0.3:27037/admin
> db.runCommand({"replSetInitiate" : {
... "_id" : "test",
... "members" : [
... {
... "_id" : 0,
... "host" : "10.0.0.3:27037"
... },
... {
... "_id" : 1,
... "host" : "10.0.0.4:27037"
... }
... ]}})
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
>
执行以下shell命令后,如果看见红色字体标记的内容,则表示初始化成功
shell命令:
db.runCommand({"replSetInitiate" : {
"_id" : "test",
"members" : [
{
"_id" : 0,
"host" : "10.0.0.3:27037"
},
{
"_id" : 1,
"host" : "10.0.0.4:27037"
}
]}})
你也可以通过命令查看效果:
> rs.status()
{
"set" : "test",
"date" : ISODate("2011-12-06T07:44:29Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "10.0.0.3:27037",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1323157008000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:36:48Z"),
"self" : true
},
{
"_id" : 1,
"name" : "10.0.0.4:27037",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 455,
"optime" : {
"t" : 1323157008000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:36:48Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:44:28Z"),
"pingMs" : 2
}
],
"ok" : 1
}
加入仲裁节点
执行以下命令:
PRIMARY> rs.addArb("10.0.0.5:27037");
{ "ok" : 1 }
我们可以再次查看当前状态:
PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2011-12-06T07:46:21Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "10.0.0.3:27037",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1323157549000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:45:49Z"),
"self" : true
},
{
"_id" : 1,
"name" : "10.0.0.4:27037",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 567,
"optime" : {PRIMARY> db.isMaster();
{
"setName" : "test",
"ismaster" : true,
"secondary" : false,
"hosts" : [
"10.0.0.3:27037",
"10.0.0.4:27037"
],
"arbiters" : [
"10.0.0.5:27037"
],
"primary" : "10.0.0.3:27037",
"me" : "10.0.0.3:27037",
"maxBsonObjectSize" : 16777216,
"ok" : 1
}
"t" : 1323157549000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:45:49Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:46:20Z"),
"pingMs" : 0
},
{
"_id" : 2,
"name" : "10.0.0.5:27037",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 22,
"optime" : {
"t" : 0,
"i" : 0
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:46:19Z"),
"pingMs" : 0
}
],
"ok" : 1
}
rs.status()通过这个命令,可以查看各个节点的ip、角色已经是否正常
我们看到已经成功配置。
查看活跃节点:
PRIMARY> db.isMaster();
{
"setName" : "test",
"ismaster" : true,
"secondary" : false,
"hosts" : [
"10.0.0.3:27037",
"10.0.0.4:27037"
],
"arbiters" : [
"10.0.0.5:27037"
],
"primary" : "10.0.0.3:27037",
"me" : "10.0.0.3:27037",
"maxBsonObjectSize" : 16777216,
"ok" : 1
}
可以看到现在10.0.0.3:27037为活跃节点。
检测是否配置成功
可以强制primary和standard节点角色互换,从而验证是否能够实现副本集功能
rs.stepDown()
执行完成后:
SECONDARY> db.isMaster();
{
"setName" : "test",
"ismaster" : false,
"secondary" : true,
"hosts" : [
"10.0.0.3:27037",
"10.0.0.4:27037"
],
"arbiters" : [
"10.0.0.5:27037"
],
"primary" : "10.0.0.4:27037",
"me" : "10.0.0.3:27037",
"maxBsonObjectSize" : 16777216,
"ok" : 1
}
可以看到现在主节点已经修改为10.0.0.4:27037了。
我们也可以动态扩展增加节点(ip:10.0.0.5:27047)
hww@ubuntu:~$ mkdir -p ~/mongo1/db ~/mongo1/log
hww@ubuntu:~$ mongod -dbpath ~/mongo1/db -logpath ~/mongo1/log/mongod.log -port 27037 -replSet test -maxConns=2000 -fork -logappend
进入活跃节点的服务器
hww@ubuntu4:~$ mongo 10.0.0.4:27037/admin
MongoDB shell version: 2.0.1
connecting to: 10.0.0.4:27037/admin
PRIMARY> rs.add("10.0.0.5:27047");
{ "ok" : 1 }
PRIMARY>
PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2011-12-06T07:59:36Z"),
"myState" : 1,
"syncingTo" : "10.0.0.3:27037",
"members" : [
{
"_id" : 0,
"name" : "10.0.0.3:27037",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1263,
"optime" : {
"t" : 1323158245000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:57:25Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:59:35Z"),
"pingMs" : 0
},
{
"_id" : 1,
"name" : "10.0.0.4:27037",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1323158245000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:57:25Z"),
"self" : true
},
{
"_id" : 2,
"name" : "10.0.0.5:27037",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 717,
"optime" : {
"t" : 0,
"i" : 0
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:59:35Z"),
"pingMs" : 0
},
{
"_id" : 3,
"name" : "10.0.0.5:27047",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 125,
"optime" : {
"t" : 1323158245000,
"i" : 1
},
"optimeDate" : ISODate("2011-12-06T07:57:25Z"),
"lastHeartbeat" : ISODate("2011-12-06T07:59:35Z"),
"pingMs" : 0
}
],
"ok" : 1
}
分享到:
相关推荐
ruoyi-vue-pro-vben 芋道管理后台,基于 vben 最新版本,最新的 vue3 vite4 ant-design-vue 4.0 typescript 语法进行重构开发,支持 springboot3 springcloud 版本
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
该项目是一个基于Java语言开发的水果管理系统设计源码,包含53个文件,其中包括30个Java源文件、13个XML配置文件、6个JAR包文件、1个Git忽略文件、1个属性文件以及1个SQL脚本文件。此系统旨在用于期末答辩展示,展示了开发者对Java编程和系统设计的深入理解。
java回顾、知识整理、拾遗、面试_java-review
mysql主从复制用struts2,spring,hibernate框架,搭建在线考试系统。网站支持(1)老师创建题库,创建题目,查看题目对题目进行增删改,发布考试(选择考试难中易比例),批改学生试卷,查看学生成绩。(.zip
一个基于Go语言实现的搜索引擎项目资源
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于grpc开发的跨语言的交互系统,集成BCS,Brower
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于go语言,使用gocv和socket实现摄像头视频传输项
apache-seatunnel-web-1.0.2
内容概要:本篇文章主要介绍了如何在VMware虚拟化平台上搭建并配置QNX Neutrino实时操作系统的步骤方法。文章首先给出了获取必要的安装文件来源,然后逐步指导用户如何完成QNX在虚拟机中的安装过程以及相关网络参数配置,包括选择适当的网络模式来实现宿主机器与QNX虚拟机之间的通信,具体为设置NAT模式或者桥接模式下的网络参数,如指定静态或动态获取IP地址的方法。 适用人群:对嵌入式开发感兴趣的技术人士,尤其是需要在Linux环境下开展工作的程序员和系统工程师。 使用场景及目标:通过详细的操作指南帮助初学者快速掌握在Windows或Linux主机上利用虚拟机搭建QNX Real-Time Operating System开发环境的基础技能,能够实现在该环境中运行简单的C/C++应用程序。 其他说明:本文不仅适用于QNX初学者作为入门引导资料,也为经验丰富的开发者提供了有关于特定环境配置的重要参考。由于涉及到的具体细节比较多,读者最好边操作边对照文章内容进行练习。同时要注意保持最新版本的虚拟化平台客户端和服务端程序以确保兼容性和稳定性。
stm32中dma结合ad的使用
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
低全球变暖潜能值 (GWP) 制冷剂.docx
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
ubuntu