在 Linux 下对 MongoDB 进行扩容,通常分为 垂直扩容(加资源) 和 水平扩容(加节点 / 分片) 两种思路。下面按常见场景说明。
适用于:单机 MongoDB,数据量还不算特别大。
# 查看磁盘
df -h
# 挂载新磁盘(示例)
mkfs.ext4 /dev/sdb
mkdir /data/mongo
mount /dev/sdb /data/mongo
修改 MongoDB 数据目录:
# 停止 mongo
systemctl stop mongod
# 迁移数据
mv /var/lib/mongo /data/mongo
# 修改配置
vim /etc/mongod.conf
storage:
dbPath: /data/mongo
systemctl start mongod
适用于:提高可用性、读性能。
在新机器安装 MongoDB,配置:
replication:
replSetName: rs0
rs.add("new-node-ip:27017")
查看状态:
rs.status()
✅ 读请求可通过:
db.collection.find().readPref("secondary")
适用于:数据量大(百亿级)、写入压力大。
mongod --shardsvr --replSet shard2 --dbpath /data/shard2
sh.addShard("shard2/ip1:27017,ip2:27017")
sh.enableSharding("mydb")
sh.shardCollection("mydb.user", { uid: "hashed" })
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 8
storage:
wiredTiger:
collectionConfig:
blockCompressor: zstd
❌ 只加磁盘不调内存
❌ 单节点无限堆机器
❌ 分片 key 选错(如自增 id)
❌ 忽视索引大小
| 场景 | 方案 |
|---|---|
| 小业务 | 垂直扩容 |
| 高可用 | 副本集 |
| 大数据 | 分片 |
| 云环境 | MongoDB Atlas |
如果你愿意,可以告诉我:
我可以给你 具体扩容方案命令。