mongodb一个服务器部署多个节点

前情提要

真实部署环境是机房环境,不能携带手机,所以需要进行提前演练,我使用的docker镜像的方式进行构建。docker的环境搭建详见:两台服务器搭建三个节点-CSDN博客

mongodb的安装

加载指定的依赖文件

删除容器

docker stop demo-container

docker rm demo-container

使用镜像重新启动容器

docker run -itd --name demo-container --privileged --volume /sys/fs/cgroup:/sys/fs/cgroup:ro kylin-with-systemd:v10-sp3 /usr/lib/systemd/systemd

copymongodb的安装包

docker cp mongodb-4.4.6-1.ky10.aarch64.rpm demo-container:/home

docker cp mongodb-svc-1.0-1.ky10.noarch.rpm demo-container:/home

docker cp init-mongo.js demo-container:/home

进入容器

docker exec -it demo-container bash

rpm包的安装

cd /home

rpm -ivh mongodb-4.4.6-1.ky10.aarch64.rpm

这个是自己定义的启动文件及配置文件,没有也没关系,不影响使用

rpm -ivh mongodb-svc-1.0-1.ky10.noarch.rpm

配置文件的配置

vim /opt/mongodb-4.4.6/mongodb3.conf

systemLog:

destination: file

指定第二个实例的日志路径

path: /var/log/mongodb3/mongod.log

logAppend: true

storage:

指定第二个实例的数据目录

dbPath: /var/lib/mongodb3

journal:

enabled: true

net:

指定第二个实例的端口

port: 27018

processManagement:

timeZoneInfo: /usr/share/zoneinfo

指定第二个实例的PID文件路径

pidFilePath: /var/run/mongodb3/mongod.pid

启动文件的配置

vim /usr/lib/systemd/system/mongodb3.service

Unit

Description=MongoDB3 Database Server

Documentation=https://docs.mongodb.org/manual

After=network.target

Service

Environment="OPTIONS=-f /opt/mongodb-4.4.6/mongodb3.conf --replSet rs0"

EnvironmentFile=-/opt/mongodb-4.4.6/bin/mongod

ExecStart=/opt/mongodb-4.4.6/bin/mongod $OPTIONS

ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb3

ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb3

ExecStartPre=/usr/bin/mkdir -p /var/lib/mongodb3

ExecStartPre=/usr/bin/chmod 0755 /var/lib/mongodb3

ExecStartPre=/usr/bin/mkdir -p /var/log/mongodb3

ExecStartPre=/usr/bin/chmod 0755 /var/log/mongodb3

PermissionsStartOnly=true

PIDFile=/var/run/mongodb3/mongod.pid

Type=simple

LimitFSIZE=infinity

LimitCPU=infinity

LimitAS=infinity

LimitNOFILE=64000

LimitNPROC=64000

LimitMEMLOCK=infinity

TasksMax=infinity

TasksAccounting=false

Install

WantedBy=multi-user.target

启动命令

启动服务

sudo systemctl start mongodb3.service

检测服务启动情况

sudo systemctl status mongodb3.service

更改配置重启节点

vim /usr/lib/systemd/system/mongodb3.service

systemctl daemon-reload

sudo systemctl restart mongodb3.service

停止节点

sudo systemctl stop mongodb3.service

设置开机自启动

sudo systemctl enable mongodb3.service

集群组建

组建集群至少三个节点,将上面的额mongodb3 更改为 mongodb1/mongodb2. 分别更改绑定的端口号。

cd /opt/mongo-4.4.6/bin

进入mongodb

./mongo 127.0.0.1:27018/admin

##切换数据库

use admin

##初始化复制集

> rs.initiate({_id:"rs0", members : [{_id:0,host:"127.0.0.1:27018"},{_id:1,host:"127.0.0.1:27019"},{_id:2,host:"127.0.0.1:27020"}]})

##查看复制集配置

> rs.conf()

##查看复制集状态

> rs.status();

如果因为没有设置replSet导致组建集群失败,启动脚本按照上述样例设置replSet即可。

相关推荐
郝学胜-神的一滴几秒前
系统设计 012:从用户系统出发,吃透缓存、数据库与高并发设计
java·数据库·python·缓存·php·软件构建
米高梅狮子几秒前
01.ELK企业日志分析系统
运维·服务器·网络·数据库·elk·oracle
逆境不可逃几秒前
Hello-Agents 第二部分-第九章总结:上下文工程
linux·运维·服务器
爱喝热水的呀哈喽2 分钟前
转发与取消转发快捷设置
服务器
团象科技2 分钟前
跨境业务链路频繁卡壳时,海外云服务器如何优化成本结构
运维·服务器
小杍随笔3 分钟前
【redb vs SQLite (rusqlite) 技术选型对比】
数据库·sqlite
暗夜猎手-大魔王4 分钟前
转载--AI Agent 架构设计:工具返回值设计(OpenClaw、Claude Code、Hermes Agent 对比)
数据库
windawdaysss5 分钟前
离线学习SQL和数据库的工具及其部署
数据库·sql·学习
Rubin智造社6 分钟前
Claude Code开发者大会系列8:从脚本到智能体——独立开发者的“AI原生”工作流转型
数据库·人工智能·独立开发者·agentic工作流·ai原生开发·实操指南
一条泥憨鱼6 分钟前
深入理解 MySQL 索引:原理、分类与优化实战
数据库·mysql