在Linux环境下部署MongoDB的副本集集群

举报
tea_year 发表于 2025/04/14 16:19:25 2025/04/14
【摘要】 环境配置:服务器准备、网络设置、依赖安装 目录规划:标准化目录结构设计 服务管理:systemd服务配置与自启动 安全配置:专用用户创建、权限控制 副本集搭建:多节点部署与初始化 高可用验证:主从切换、数据同步测试

在Linux环境下部署MongoDB的副本集

一、目标

副本集搭建

二、操作步骤

构建服务器的结构

1.1 上传2个tgz文件到server1的目录下

1.2 克隆server1,server2 server3

1.3 使用FinalShell链接三台服务器(云端 ECS主机、NOSQL)


2.操作

2.1 创建多级目录

mkdir -p /usr/local/mongodb

在三台主机上解压

tar -xvzf mongodb-linux-x86_64-rhel70-7.0.14.tgz -C /usr/local/mongodb

查看之

ll /usr/local/mongodb

进入到/usr/local/mongodb,修改长的mongodb-linux-x86_64-rhel70-7.0.14变短

mv mongodb-linux-x86_64-rhel70-7.0.14 mongodb7

2.2新建目录: 三台机器建立config目录,包括子目录

mkdir -p /usr/local/mongodb/config/{conf,data,log,run}

目录结构概述

/usr/local/mongodb/config:

用途:存放配置服务器的相关文件。

子目录:

conf:存放配置服务器的配置文件(如 mongod.conf)。

data:存放配置服务器的数据文件。

log:存放配置服务器的日志文件。

run: 存储进程PID文件


2.3 配置环境变量

vim /etc/profile

# 内容

export MONGODB_HOME=/usr/local/mongodb/mongodb7
export PATH=$PATH:$MONGODB_HOME/bin

# 使立即生效

source /etc/profile

测试在任意位置,输入mongod,出来下面的界面

image-20250326155953323.png

三、用户和服务管理

3.1 安装依赖包,缺少就安装

yum install libcurl openssl xz-libs

3.2创建用户,指定组标识符

删除用户:userdel -r 用户

删除组 : groupdel -r 组名

groupadd mongo -g 777
​
useradd mongo -g 777 -M -s /sbin/nologin
​
id mongo

四、设置服务

4.1 开机自启动

cat  >  /etc/systemd/system/mongodb.service  << EOF[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/local/mongodb/mongodb7/bin/mongod --config /usr/local/mongodb/config/conf/mongod.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/mongodb7/bin/mongod --config /usr/local/mongodb/config/conf/mongod.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

查看一下:

[root@localhost ~]# cat /etc/systemd/system/mongodb.service

4.2 三台机器的config 的配置

cat > /usr/local/mongodb/config/conf/mongod.conf  <<  EOF
​
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /usr/local/mongodb/config/log/mongod.log # 日志文件路径
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen
​
# 网络设置
net:
  port: 27017                     # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制
​
# 数据目录
storage:
  dbPath: /usr/local/mongodb/config/data  # 数据文件存放路径
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1               # 根据情况配置内存
​
# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /usr/local/mongodb/config/run/mongod.pid # PID 文件路径
​
#复制集名称
replication:
  replSetName: "myconfigset"
EOF

查看之:

[root@localhost ~]# cat /usr/local/mongodb/config/conf/mongod.conf

五、启动三台config server (3台)

mongod --config /usr/local/mongodb/config/conf/mongod.conf
[root@localhost ~]# netstat -lntup |grep 27017

image-20250326161336190.png

六、安装mongosh

安装好mongosh工具,方便初始化副本集使用,

在三台机器上执行解压

tar zxvf mongosh-2.4.2-linux-x64.tgz -C /usr/local/mongodb

所有主机,大内存页 关闭 hugepage

echo "never" > /sys/kernel/mm/transparent_hugepage/enabled

echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

要启动客户端,必须进入到下面目录

cd /usr/local/mongodb/mongosh-2.4.2-linux-x64/bin

启动命令:

./mongosh mongodb://server1:27017无法启动

在三台主机上编辑配置文件/etc/hosts

192.168.85.128 server1
192.168.85.133 server2
192.168.85.134 server3

复制指令,一个主机复制到其他主机。

[root@localhost bin]# scp /etc/hosts root@192.168.85.134:/etc/

image-20250326163606849.png



七.初始化配置副本集(3台机器执行相同操作)

启动config server后,开始初始化副本集,登录任意一台开始初始化配置副本集

#7.0.14版本登录时在test>数据库下,切换到admin数据库
​
test> use admin
switched to db admin
admin>
​
#执行以下config变量,注意myconfigset,要和mongod.conf里配置一致。
​
config={_id:"myconfigset",members:[
{_id:0,host:"server1:27017"},
{_id:1,host:"server2:27017"},
{_id:2,host:"server3:27017",},
]}

#再执行初始化

rs.initiate(config)

#查看状态

rs.status()

image-20250326164344417.png

#在sever2上解压客户端,且登录

image-20250326164325065.png

image-20250326164520092.png

primary:主机,写操作

secondary:从机:读操作

image-20250326164628358.png

从机先查看:

image-20250326164654915.png

重新加库和集合测试

image-20250326164819878.png

总结

  1. 环境配置:Linux服务器准备、网络设置、依赖安装

  2. 目录规划:标准化目录结构设计

  3. 服务管理:systemd服务配置与自启动

  4. 安全配置:专用用户创建、权限控制

  5. 副本集搭建:多节点部署与初始化

  6. 高可用验证:主从切换、数据同步测试

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。