单节点副本集
HAP 全新部署,且所有环境(含测试环境)均采用集群部署、MongoDB 均独立部署时,可使用 MongoDB 8.3。
若客户已有环境使用 MongoDB 4.4、任一环境采用 HAP 单机部署,或需要与现有 HAP 单机环境、MongoDB 4.4 环境进行数据迁移,则继续使用 MongoDB 4.4,保持各套环境的数据库版本一致。
| 服务器 IP | 主机角色 |
|---|---|
| 192.168.10.4 | MongoDB 单节点副本集 |
开始部署
-
下载 MongoDB 二进制安装包并解压到安装目录
- RHEL 8 x64
- RHEL 9.3 x64
- RHEL 10 x64
- Debian 12 x64
- Ubuntu 24.04 x64
- 其他
-
下载 安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel8-8.3.13.tgz -
创建安装目录
mkdir -p /usr/local/mongodb -
解压到安装目录
tar -zxf mongodb-linux-x86_64-rhel8-8.3.13.tgz --strip-components=1 -C /usr/local/mongodb
-
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel93-8.3.13.tgz -
创建安装目录
mkdir -p /usr/local/mongodb -
解压到安装目录
tar -zxf mongodb-linux-x86_64-rhel93-8.3.13.tgz --strip-components=1 -C /usr/local/mongodb
-
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel10-8.3.13.tgz -
创建安装目录
mkdir -p /usr/local/mongodb -
解压到安装目录
tar -zxf mongodb-linux-x86_64-rhel10-8.3.13.tgz --strip-components=1 -C /usr/local/mongodb
-
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian12-8.3.13.tgz -
创建安装目录
mkdir -p /usr/local/mongodb -
解压到安装目录
tar -zxf mongodb-linux-x86_64-debian12-8.3.13.tgz --strip-components=1 -C /usr/local/mongodb
-
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2404-8.3.13.tgz -
创建安装目录
mkdir -p /usr/local/mongodb -
解压到安装目录
tar -zxf mongodb-linux-x86_64-ubuntu2404-8.3.13.tgz --strip-components=1 -C /usr/local/mongodb
-
Debian 13 可尝试使用 Debian 12 的安装包进行部署测试。
-
Ubuntu 26.04 可尝试使用 Ubuntu 24.04 的安装包进行部署测试。
-
国产系统兼容性:麒麟、统信 UOS、欧拉等系统,若当前版本兼容 RHEL 8,可优先尝试以下对应架构的二进制安装包,并在目标环境进行部署测试。
-
如需获取其他操作系统或架构的二进制安装包,请访问 MongoDB 社区版官方下载中心。
-
下载 mongosh 二进制安装包
- AMD64
- ARM64
-
下载安装包
wget https://downloads.mongodb.com/compass/mongosh-2.14.1-linux-x64.tgz -
解压安装包
tar -zxf mongosh-2.14.1-linux-x64.tgz -
安装到
/usr/local/bincp mongosh-2.14.1-linux-x64/bin/mongosh /usr/local/bin/mongoshchmod 755 /usr/local/bin/mongosh
-
下载安装包
wget https://downloads.mongodb.com/compass/mongosh-2.14.1-linux-arm64.tgz -
解压安装包
tar -zxf mongosh-2.14.1-linux-arm64.tgz -
安装到
/usr/local/bincp mongosh-2.14.1-linux-arm64/bin/mongosh /usr/local/bin/mongoshchmod 755 /usr/local/bin/mongosh
-
检查 MongoDB 和 mongosh 版本
/usr/local/mongodb/bin/mongod --versionmongosh --version确认两个命令均能正常输出版本号后,再继续后续步骤。若提示缺少共享库,先补齐目标系统的运行依赖。
-
创建系统用户 mongodb
useradd -U -M -s /sbin/nologin mongodb -
创建数据、日志目录并授予权限
mkdir -p /data/mongodb/ /data/logs/mongodbecho '1/3GWm7LjfCX/K2NOhv0evgBWan+KNX' > /data/mongodb/keyfilechmod 400 /data/mongodb/keyfilechown -R mongodb:mongodb /usr/local/mongodb/ /data/mongodb/ /data/logs/mongodb -
启用透明大页(THP)
MongoDB 8.3 建议启用 THP,在启动 MongoDB 前通过 systemd 服务完成配置。
cat > /etc/systemd/system/enable-thp.service <<'EOF'[Unit]Description=Enable Transparent Huge Pages (THP) for MongoDB 8.3DefaultDependencies=noAfter=sysinit.target local-fs.targetBefore=mongodb.service[Service]Type=oneshotRemainAfterExit=yesExecStart=/bin/sh -c 'echo always > /sys/kernel/mm/transparent_hugepage/enabled'ExecStart=/bin/sh -c 'echo defer+madvise > /sys/kernel/mm/transparent_hugepage/defrag'ExecStart=/bin/sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none'ExecStart=/bin/sh -c 'echo 1 > /proc/sys/vm/overcommit_memory'[Install]WantedBy=basic.targetEOFsystemctl daemon-reloadsystemctl enable --now enable-thp -
创建 MongoDB 配置文件
cat > /etc/mongod.conf <<'EOF'systemLog:destination: filepath: /data/logs/mongodb/mongodb.loglogAppend: truelogRotate: reopenstorage:dbPath: /data/mongodbnet:port: 27017bindIp: 0.0.0.0security:authorization: enabledkeyFile: /data/mongodb/keyfilereplication:replSetName: local-mongodb-onesetParameter:disableSplitHorizonIPCheck: trueEOF -
配置 systemd 管理文件
cat > /etc/systemd/system/mongodb.service <<'EOF'[Unit]Description=MongoDBAfter=network-online.target enable-thp.serviceWants=network-online.targetRequires=enable-thp.service[Service]User=mongodbGroup=mongodbEnvironment="GLIBC_TUNABLES=glibc.pthread.rseq=0"LimitNOFILE=1000000LimitNPROC=1000000LimitMEMLOCK=infinityExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongod.confExecStop=/usr/bin/kill $MAINPIDRestart=on-failureRestartSec=5TimeoutStopSec=300[Install]WantedBy=multi-user.targetEOF -
加入开机自启动
# 完成后续创建用户步骤后再启动服务systemctl daemon-reloadsystemctl enable mongodb
创建数据库用户
-
临时启动一个未开启连接认证的 MongoDB 服务
su -c '/usr/local/mongodb/bin/mongod --fork --logpath /data/logs/mongodb/mongodb.log --logappend --dbpath /data/mongodb --noauth --port 27017 --bind_ip 127.0.0.1' -s /bin/bash mongodb -
登录 MongoDB
在系统终端执行:
mongosh --host 127.0.0.1 --port 27017后续创建用户的语句在 mongosh 中执行。
-
创建管理员用户
db.getSiblingDB('admin').createUser({user: 'root',pwd: '12345678',roles: [{role: 'root', db: 'admin'}],});- 命令中指定的 MongoDB admin 库权限 root 用户密码为
12345678,实际部署必须修改为强口令。
- 命令中指定的 MongoDB admin 库权限 root 用户密码为
-
创建业务用户
var businessUser = "hap";var businessPassword = "123456";var databases = ["MDLicense","ClientLicense","commonbase","MDAlert","mdapproles","mdapprove","mdapps","mdattachment","mdcalendar","mdcategory","MDChatTop","mdcheck","mddossier","mdemail","mdform","MDGroup","mdgroups","MDHistory","mdIdentification","mdinbox","mdkc","mdmap","mdmobileaddress","MDNotification","mdpost","mdreportdata","mdroles","mdsearch","mdservicedata","mdsms","MDSso","mdtag","mdtransfer","MDUser","mdworkflow","mdworksheet","mdworkweixin","mdwsrows","pushlog","taskcenter","mdintegration","mdactionlog","mdworksheetlog","mdworksheetsearch","mddatapipeline","mdwfplugin","mdpayment","mdwfai","mdopenauth","mdaisearch","MDAgentInfra"];for (var i = 0; i < databases.length; i++) {var database = databases[i];db.getSiblingDB(database).createUser({user: businessUser,pwd: businessPassword,roles: [{role: "readWrite", db: database}]});}- 命令中指定的 MongoDB 业务库权限 hap 用户密码为
123456,所有业务库使用相同的账号和密码,实际部署必须修改为强口令。 - 若密码中包含特殊字符,仅允许
-或_,禁止使用@ ! # &等字符,以避免 兼容性问题。
- 命令中指定的 MongoDB 业务库权限 hap 用户密码为
-
退出 mongosh
exit(); -
关闭临时启动的 MongoDB
回到系统终端执行:
su -c '/usr/local/mongodb/bin/mongod --shutdown --dbpath /data/mongodb' -s /bin/bash mongodb
启动 MongoDB
systemctl start mongodb
配置副本集
-
登录 MongoDB
将账号和密码替换为创建管理员用户时设置的实际值。
mongosh --host 127.0.0.1 --port 27017 -u root -p 12345678 --authenticationDatabase admin -
初始化单节点副本集
在 mongosh 中执行,将 IP 地址替换为本机实际内网地址。
rs.initiate({_id: 'local-mongodb-one',members: [{_id: 1, host: '192.168.10.4:27017'}],}); -
确认副本集状态
rs.status();确认
members中只有本机一个成员,等待其stateStr变为PRIMARY。 -
退出 mongosh
exit();
验证服务状态
-
检查 MongoDB 状态
systemctl status mongodb -
测试业务库连接
将连接地址替换为本机实际 IP,账号和密码使用创建业务用户时设置的实际值。
mongosh 'mongodb://192.168.10.4:27017/?replicaSet=local-mongodb-one' -u hap -p 123456 --authenticationDatabase mdwsrows -
退出 mongosh
exit();