单机Linux下搭建MongoDB副本集-三节点
前言说明
Linux下安装MongoDB副本集我基本上是一次搭建,几百年不再碰,也记不住具体的命令,偶尔需要搭建都是直接网上找的教程。
有些教程很精简,有些又版本不一样,所以索性我整合下别人的教程,把linux下搭建副本集的步骤记录下并分享出来,希望能够帮到你们。
参考以下文章:https://developer.aliyun.com/article/983777
https://developer.aliyun.com/article/485807 -- 这个还有分片相关的东西,
安装环境
- 单台CENT OS 7.6(腾讯云服务器的)
- MongoDB 5.0.15
- MobaXterm 终端工具
预期实现效果
在单台服务器上,通过配置3个不同端口,启动3个MongoDB服务来实现副本集配置。
具体实现步骤
步骤一: 下载、安装MongoDB、配置环境变量
1.1 下载
到官网下载(下图标注1)或复制下载地址(下图标注2), https://www.mongodb.com/try/download/community

1,2标注说明:
1 是直接下载tgz包,这是用于直接文件传输到linux上,因为通过wget去下载有时候网速会很慢,所以这里下文会提到download的下载方式。
2 是复制下载链接,这是用于wget方式下载,如下文执行命令。
1.2 解压安装
通过MobaXterm连接到的你Linux主机,当然你用其他的终端工具都可以。然后进入到指定目录下,进行安装。
整体命令如下(是逐行执行,不是整体执行)# 进入指定位置下载安装包 你也可以选择其他指定路径,确保自己清楚即可。
# 进入指定位置下载安装包 你也可以选择其他指定路径,确保自己清楚即可。 还有,下面的执行命令是一行行执行,而不是一起执行。
cd /usr/local # 下载安装包 注意:这里可能遇到下载速度很慢的情况,如果遇到了,直接ctrl+c取消,再按照步骤1.1的截图的1标注,直接下载安装包到本地,再通过mobaXterm文件传输工具传进去(下面有截图参考)。 因为wget执行了,/usr/local路径下有个mongodb安装包文件,先删了再传。
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.2.tgz # 注意,执行下面命令前确保安装包是下载好了的到你指定路径。
# 解压安装包
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.2.tgz # 改名字
mv mongodb-linux-x86_64-rhel70-5.0.2 mongodb # 此时可以删除安装包 -- 建议先留着,等最后再删 可以不执行它
rm -rf mongodb-linux-x86_64-rhel70-5.0.2.tgz
MobaXterm上传安装包的截图

解压好安装包之后, cd 进入mongodb 再 ll 查看,看到 bin文件夹和其他几个文件说明解压成功。如下图。

1.3 配置环境变量
# 配置环境变量
vim /etc/profile // 进入到profile之后, 添加的内容如下 注意/usr/local/mongodb是刚才安装mongodb它所在的路径,如果你不是安装在这个路径下,这里就要换成你的安装路径。 具体这两个配置的插入位置见下图
export MONGO_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGO_HOME/bin
补充:vim /etc/profile 之后, 按 i 会出来 ------insert----- 此时进入编辑模式,才可以去修改。
修改好了,按住 esc键,然后 输入 :wq 保存退出。

退出后,执行以下命令让环境变量生效
source /etc/profile
步骤二:创建每个(共3个实例)MongoDB的数据、日志存储文件夹
2.1 创建数据、日志、配置存储文件夹
分别给每台服务器创建data 、 logs 、 conf文件夹,也就是一共9个,放在统一路径,方便查询管理。
# 这里直接放在根目录的data文件夹下了,你也可以选择存储到usr/local/mongodb里面。 {1,2,3}表示分别创建 mongo1 mongo2 mongo3
mkdir -p /data/mongo{1,2,3}/data
mkdir -p /data/mongo{1,2,3}/logs
mkdir -p /data/mongo{1,2,3}/conf
执行完毕之后,可以进入到路径中看看,分别有mongo1/2/3,每一个文件夹下都有conf / data / logs 文件夹,分别用来存放配置、数据、日志。

步骤三:配置MongoDB配置文件
对每个MongoDB服务,配置服务器配置,包括IP端口、开放IP,后台运行以及主要的副本集配置。
分别执行如下命令,创建三个配置文件,把下边的配置内容粘贴进去,再保存退出
# 每一个conf 对应一个服务器, 里面配置的内容主要是端口不一样
vim /data/mongo1/conf/mongodb.conf
# 第二个服务器配置
vim /data/mongo2/conf/mongodb.conf
# 第三个服务器配置
vim /data/mongo3/conf/mongodb.conf
配置内容
port=27017 #端口 注意,三台服务器端口不一样,分别设置为27017,27018,27019 同时确保Linux端口放开
bind_ip=0.0.0.0 # 默认是127.0.0.1,要想外网接入,这里就要设置为0.0.0.0
# 三台服务器的数据、日志存放地址不一样,要注意。
dbpath=/data/mongo1/data #数据库存放
logpath=/data/mongo1/logs/mongodb.log #日志文件
fork=true #设置后台运行
#auth=true #开启认证
## 下面的就是副本集相关的配置,三个服务器要使用一样的副本集名称
replSet = myrs # 定义副本集名称
oplogSize = 1024 # 定义opLog大小,单位是MB,也可以设置大一些比如2048,我这里演示用,设置小点。
分别改下port dbpath/logpath的路径,其他保持一致。 一共操作三次vim。 保存配置的时候,先检查下有没有漏字母,尤其是 port。
步骤四:分别启动三个服务
先进入到mongodb bin 路径下
# 如果你的安装路径是其他的,那就以你的为准,反正就是进入到bin路径下去执行启动服务器命令
cd /usr/local/mongodb/bin
然后依次执行启动命令
# 启动第一台
./mongod --config /data/mongo1/conf/mongodb.conf
#启动第二台
./mongod --config /data/mongo2/conf/mongodb.conf
#启动第三台
./mongod --config /data/mongo3/conf/mongodb.conf
每执行完一次,成功的话,提示如下

这时候三台服务器都启动好了,连入等下要设置为主节点的服务器,配置副本集并让其生效。这里我用27017端口的那台作为主节点。
# 进入到mongodb bin目录下,执行以下命令接入mongo
mongo --port 27017 说明,端口是你准备要设置为主节点的那台服务器的端口,如果你用的其他IP,比如外网的MONGO,那么要加上 --host xxx.xxx.xx.xx 具体IP
当你看到下面的内容,说明连接上了,距离你完成副本集搭建只有一步之遥了。

// 在mongo 上切换到admin数据库,执行
use admin
// 然后会提示你 switched to db admin
// 这个时候输入以下配置 > config={_id:"myrs",members:[{_id:0,host:"localhost:27017"},{_id:1,host:"localhost:27018"},{_id:2,host:"localhost:27019"}]} 补充说明,第一个_id的值是你在前面配置的副本集名称,要保持一致。 如果你的三台服务器都是本地的,可以用localhost,当然也可以用你服务器的IP地址。 执行完毕后,页面会出来如下图内容,我执行的时候忘了截图保存,所以拿别人的来替代下。

然后最后执行初始化生效
# 注意,这里的config 就是上一步命令,你定义的时候,用的变量名,要一致。
rs.initiate(config) 执行初始化成功后,页面会提示ok.
Ok,至此你已经完成副本集配置,可以做测试验证看看了。
可以执行查询看看副本集状态
rs.status()
看到这些信息就说明配置好了

补充:如果想要查看当前MongoDB是否正常在后台跑,可以输入 ps aux |grep mongodb 查找是否对应进程。
如果需要关掉某个进程重启,可以 kill 进程ID (通过ps aux |grep mongodb 可以找到)
再启动,还是在mongodb bin路径下 执行 mongod -f /具体存放路径/mongodb.conf -f 表示fork进程 后台运行
步骤五:连接测试
可以用mongo compass / studio 3t 或者直接在虚拟机上面操作连接。
分别连接主节点和2个子节点。
这个时候你去主节点插入数据,然后到子节点就可以看到一样的。
然后子节点里面是写入不了的,会提示只能在主节点写入。
注意:要确保服务器的端口开放,不然连不上去。
至此,副本集的基本搭建已完成。
希望这篇文章能帮到你~
单机Linux下搭建MongoDB副本集-三节点的更多相关文章
- Docker下搭建mongodb副本集
背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...
- linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)
搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...
- Linux下搭建Lotus Domino集群
Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...
- 在centos7上搭建mongodb副本集
1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- docker-compose搭建mongoDB副本集(1主+1副+1仲裁)
一.基本概念 1.副本集:一个副本集就是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成 2.主节点(master):主节点接收所有写入操作 ...
- 生产环境下搭建mongodb复制集高可用环境(python)
环境描述:有三台ubuntu服务器,,每台服务器上已经有mongodb实例.创建3个mongo2.4的新实例,分别作为三个复制集节点,同时保证了当前单节点环境的稳定 3台服务器都已经有单个mongo实 ...
- mongodb副本集仲裁节点搭建
服务器准备: 主节点192.168.100.106 从节点192.168.100.107 仲裁节点192.168.100.108 三台服务器: 关闭防火墙 service iptables stop ...
- MongoDB副本集--Secondary节点实例恢复
场景描述 MongoDB副本集中有一台Secondary节点出现RECOVERING的状态 状态如下: arps:RECOVERING> rs.status() { "set" ...
- Mongodb 副本集的节点详细操作
副本集操作 官方文档:https://docs.mongodb.com/v3.2/reference/method/js-replication/ 1 rs.add(){ _id: <int&g ...
随机推荐
- 几款Android 应用自动化测试工具
本文转自:https://blog.csdn.net/hebbely/article/details/78901466 简述: 本文介绍几款流行的 Android应用自动化测试工具. Monkey测试 ...
- Ubuntu tmux使用教程
sudo apt-get install tmux 安装tmux tmux new -s session_name 新开一个会话 tmux a -t session_name 查看指定会话 tmux ...
- SSH的密钥登录配置
1.ssh的登录方法. 两种方法: (1)linux系统connect to linux ssh -l root 192.168.2.191 #直接登录. 语法:$ssh -p 22 user@hos ...
- cell批量改名字
本帖最后由 wanchengchen 于 2021-7-19 10:41 编辑下面是在论坛上学习到的脚本,发上来大家一起学习,使用的是virtuoso6.1.7:layout改名字:procedure ...
- OutLook从excel导入联系人
1.将已有的excel打开-->另存为-->csv格式 2.用记事本打开 .CSV 文件,选择"文件"-"另存为",修改为 ANSI编码后,然后导 ...
- NSSM 软件参数使用教程
NSSM 一款可以自定义为软件安装守护进程的软件 NSSM: The non-sucking service manager Version 2.24-101-g897c7ad 64-bit, 201 ...
- 解决ESP8266反复启动问题
ESP8266刷不同固件后,有时会出现反复启动的问题,可能是FLASH里有未擦除干净的区域. 使用乐鑫 Flash 下载工具擦除 选好串口后点击erase擦除,即可正常使用
- 20200922--计算矩阵边缘元素之和(奥赛一本通P91 3二维数组)
输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是就一行和最后一行以及第一列和最后一列的元素. 输入; 第一行分别为矩阵的行数m和列数n(m<100,n<100),两者 ...
- Spring Cloud学习记录
Eureka和zookeeper都是注册中心为什么zookeeper不适合? 1.CAP原则.一致性,可用性,分区容错性,最多满足两种.zookeeper遵循CP原则,实际项目中不应该为了一致性失去可 ...
- 第10章 带有依赖注入的服务配置(ASP.NET Core in Action, 2nd Edition)
第2部分 构建完整的应用程序 我们在第一部分中讨论了很多内容.您看到了ASP.NET Core应用程序是如何由中间件组成的,我们主要关注RazorPages框架.您了解了如何使用Razor语法构建传统 ...