本文详细记录了 MongoDB 在 Linux 环境下的单机安装与副本集(Replica Set)集群部署全流程。

1. 下载与安装
请根据需求下载对应的 MongoDB 版本。
以下以 MongoDB 5.0 为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cd /usr/local/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.23.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.23.tgz mv mongodb-linux-x86_64-rhel70-5.0.23 mongodb rm mongodb-linux-x86_64-rhel70-5.0.23.tgz
cd /data/ mkdir mongodb cd mongodb/ mkdir logs data conf
|
2. 环境变量配置
编辑 /etc/profile 文件,添加 MongoDB 路径到 PATH。
添加如下内容:
1 2
| export MONGO_HOME=/usr/local/mongodb export PATH=$PATH:$MONGO_HOME/bin;
|
使配置生效:
3. 配置文件
新建并编辑配置文件 /data/mongodb/conf/mongodb.conf:
1 2 3 4 5 6
| port=27017 bind_ip=0.0.0.0 dbpath=/data/mongodb/data logpath=/data/mongodb/logs/mongodb.log fork=true auth=true
|
4. 解决依赖问题 (可选)
如果在启动时报错缺少 ssl.so.10 等文件,说明缺少 compat-openssl10 库。
下载 compat-openssl10 并安装:
1
| rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm
|
5. 服务管理
启动与停止
1 2 3 4 5
| mongod --config /data/mongodb/conf/mongodb.conf
killall mongod
|
配置开机自启 (init.d 方式)
创建启动脚本 /etc/init.d/mongodb.sh:
1
| vi /etc/init.d/mongodb.sh
|
写入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #!/bin/sh
start() { /usr/local/mongodb/bin/mongod --config /data/mongodb/conf/mongodb.conf }
stop() { /usr/local/mongodb/bin/mongod --config /data/mongodb/conf/mongodb.conf --shutdown }
case "$1" in start) start echo "mongodb start" ;; stop) stop echo "mongodb stop" ;; restart) stop start echo "mongodb restart" ;; esac
|
赋予权限并添加到服务:
1 2 3
| chmod +x /etc/init.d/mongodb.sh chkconfig --add mongodb.sh chkconfig mongodb.sh on
|
6. 创建管理员用户
启动 MongoDB 后,进入控制台创建管理员账号。
1 2 3 4 5 6 7 8 9 10
| # 进入 mongo shell mongo
use admin db.createUser({ user: 'admin', pwd: '123456', roles: [{ role: 'root', db: 'admin' }] }) exit
|
连接格式示例:
mongodb://root:****@xx.xx.xx.xx:27017
7. 备份与恢复
全库导出 (mongodump)
1
| mongodump -h localhost --port 27017 -u admin -p 123456 --out /data/mongo_backup/directory
|
全库导入 (mongorestore)
1
| mongorestore -h localhost --port 27017 -u admin -p 123456 --drop /data/mongo_backup/directory
|
8. 副本集(Cluster)搭建
副本集(Replica Set)提供了更高的数据可用性。三台机器配置类似,区别在于配置文件及后续的初始化。
8.1 修改配置文件
在每台机器的 mongodb.conf 中添加 replSet 配置,并确保 keyFile 一致。
1 2 3 4 5 6 7 8 9
| port = 27017 bind_ip = 0.0.0.0 replSet = rs0 dbpath = /usr/local/mongodb/data/db logpath = /usr/local/mongodb/data/logs/mongodb.log fork = true logappend = true auth = true keyFile = /usr/local/mongodb/data/mongodb.key
|
8.2 生成并分发 KeyFile
KeyFile 用于节点间的内部认证,必须一致且权限正确(600)。
1 2 3 4 5
| openssl rand -base64 756 > mongodb.key
chmod 600 mongodb.key
|
将生成的 mongodb.key 复制到所有节点的对应目录下。
8.3 初始化副本集
启动所有节点的 MongoDB 服务。登录任意一台(作为主节点),执行初始化:
1 2 3 4 5 6 7 8
| rs.initiate({ _id: "rs0", members: [ { _id : 0, host : "192.168.56.101:27018" }, { _id : 1, host : "192.168.56.102:27018" }, { _id : 2, host : "192.168.56.103:27018" } ] });
|
查看状态:
8.4 创建集群用户
在 PRIMARY 节点上创建用户:
1 2
| use admin db.createUser({user: 'handle', pwd: '123456', roles: ['root']})
|
8.5 修改集群 IP (Reconfig)
如果服务器 IP 发生变更,需要重新配置集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| use admin; db.auth("admin", "admin12#$");
cfg = rs.conf();
cfg.members[0].host = "192.168.1.10:27017"; cfg.members[1].host = "192.168.1.110:27017"; cfg.members[2].host = "192.168.1.12:27017";
rs.reconfig(cfg, {force: true});
|