温馨提示×

linux mongodb配置怎样扩容

小樊
40
2026-10-07 07:49:03
栏目: 云计算

在 Linux 下对 MongoDB 进行扩容,通常分为 垂直扩容(加资源) 和 水平扩容(加节点 / 分片) 两种思路。下面按常见场景说明。


一、垂直扩容(单机升级)

适用于:单机 MongoDB,数据量还不算特别大。

1. 增加磁盘

# 查看磁盘
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

2. 增加内存 / CPU

  • 修改云服务器规格(ECS / 物理机加内存)
  • MongoDB 很依赖内存(working set)

二、副本集扩容(高可用 + 读扩展)

适用于:提高可用性、读性能。

1. 新增节点

在新机器安装 MongoDB,配置:

replication:
  replSetName: rs0

2. 加入副本集

rs.add("new-node-ip:27017")

查看状态:

rs.status()

✅ 读请求可通过:

db.collection.find().readPref("secondary")

三、分片集群扩容(真正水平扩容)

适用于:数据量大(百亿级)、写入压力大。

架构

  • mongos(路由)
  • config server(配置)
  • shard(分片)

1. 新增 shard 节点

mongod --shardsvr --replSet shard2 --dbpath /data/shard2

2. 加入集群

sh.addShard("shard2/ip1:27017,ip2:27017")

3. 开启分片

sh.enableSharding("mydb")
sh.shardCollection("mydb.user", { uid: "hashed" })

四、存储引擎 & 参数优化(变相扩容)

1. WiredTiger 缓存

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8

2. 压缩

storage:
  wiredTiger:
    collectionConfig:
      blockCompressor: zstd

五、常见扩容误区

❌ 只加磁盘不调内存
❌ 单节点无限堆机器
❌ 分片 key 选错(如自增 id)
❌ 忽视索引大小


六、快速建议

场景 方案
小业务 垂直扩容
高可用 副本集
大数据 分片
云环境 MongoDB Atlas

如果你愿意,可以告诉我:

  • MongoDB 版本
  • 单机 / 副本集 / 分片
  • 数据量 & 写入 QPS

我可以给你 具体扩容方案命令。

0 踩