单机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 ...
随机推荐
- 循环for in 和for of
for in 和for of都是前端循环工具 我平时用for in比较多一点 但是今天来看一下两者的区别 先声明一个对象和一个数组 分别使用for in和for of分别查看得到的结果 var arr ...
- Vmware 虚拟机Ubuntu系统,解决忘记用户名和密码解决办法
1.在开机界面按住shift,会加载grub的启动界面,找到Advaced options for Ubuntu选项.按"e" 进入编辑模式. 2.光标移动至ro,改为rw,(Li ...
- python_名片系统
"""1 - 新建名片 2-显示全部 3-查询名片 0-退出系统""" import card_tools while True: card ...
- 20211306丁文博 python技能树、CSDN MarkDown编辑器
测评内容: python技能树.CSDN MarkDown编辑器 指导老师:王志强 班级:2113 学号:20211306 姓名:丁文博 https://blog.csdn.net/weixin_62 ...
- TypeScript系列 -> 遇到报错 Cannot find name ‘console‘. Do you need to change your target library?ging the ‘lib‘ compiler option
学习ts遇到的报错 Cannot find name 'console'. Do you need to change your target library?ging the 'lib' compi ...
- WebStore 破解
前提 你需要首先安装该软件,并下载补丁,不过这些已经为你打包好了. WebStore 2020.1 , jetbrains-agent.jar , resources_zh_CN_WebStorm_2 ...
- SourceMap解析
前端发展至今已不再是刀耕火种的年代了,出现了typescript.babel.uglify.js等功能强大的工具.我们手动撰写的代码一般具有可读性,并且可以享受高级语法.类型检查带来的便利,但经过工具 ...
- docker build提示 error checking context:can't stat xxx
这个提示基本是权限不够外加目录结构不对,保险的做法直接删除 Dockerfile. 正确做法:(可能还有其他的解决方案吧,这个可以生效) 重新建个目录,给目录授权,然后再dockerfile文件夹中建 ...
- Redis 集群模式的安装与配置【源码安装redis-7.0.5】
Redis最新版下载地址:http://download.redis.io/releases/redis-7.0.5.tar.gz 步骤如下: 1)wget http://download.redis ...
- redies概述
1.redis下载路径 Windows:https://github.com/tporadowski/redis/releases Linux:http://redis.io/download 2.安 ...