10

单机Linux下搭建MongoDB副本集-三节点 - harlan_op

 1 year ago
source link: https://www.cnblogs.com/zaoyu/p/17210241.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

 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

3057271-20230308141138228-623861132.png

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上传安装包的截图

3057271-20230308142329790-1001095849.png

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

3057271-20230308142845242-817501622.png

 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 保存退出。
3057271-20230308144240724-1733826807.png

退出后,执行以下命令让环境变量生效

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 文件夹,分别用来存放配置、数据、日志。

3057271-20230308153123787-1671715869.png

步骤三:配置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

每执行完一次,成功的话,提示如下

3057271-20230308155616527-1333090390.png

这时候三台服务器都启动好了,连入等下要设置为主节点的服务器,配置副本集并让其生效。这里我用27017端口的那台作为主节点。

# 进入到mongodb bin目录下,执行以下命令接入mongo
mongo --port 27017  

说明,端口是你准备要设置为主节点的那台服务器的端口,如果你用的其他IP,比如外网的MONGO,那么要加上 --host xxx.xxx.xx.xx  具体IP 

当你看到下面的内容,说明连接上了,距离你完成副本集搭建只有一步之遥了。

3057271-20230308160339195-1179430384.png
// 在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地址。  

执行完毕后,页面会出来如下图内容,我执行的时候忘了截图保存,所以拿别人的来替代下。 
3057271-20230308160958667-1983777198.png

然后最后执行初始化生效

# 注意,这里的config 就是上一步命令,你定义的时候,用的变量名,要一致。 
rs.initiate(config)
执行初始化成功后,页面会提示ok.

Ok,至此你已经完成副本集配置,可以做测试验证看看了。 

可以执行查询看看副本集状态

rs.status()

看到这些信息就说明配置好了

3057271-20230308161333061-470033372.png

补充:如果想要查看当前MongoDB是否正常在后台跑,可以输入 ps aux |grep mongodb  查找是否对应进程。

如果需要关掉某个进程重启,可以 kill  进程ID  (通过ps aux |grep mongodb 可以找到)

再启动,还是在mongodb bin路径下 执行 mongod -f /具体存放路径/mongodb.conf  -f 表示fork进程 后台运行

步骤五:连接测试

可以用mongo compass / studio 3t 或者直接在虚拟机上面操作连接。 

分别连接主节点和2个子节点。

这个时候你去主节点插入数据,然后到子节点就可以看到一样的。

然后子节点里面是写入不了的,会提示只能在主节点写入。 

注意:要确保服务器的端口开放,不然连不上去。  

至此,副本集的基本搭建已完成。

希望这篇文章能帮到你~ 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK