Debian环境下MongoDB扩容的两种主要方式
在Debian系统中,MongoDB的扩容可通过**垂直扩容(增加单节点资源)和水平扩容(分片集群扩展)**实现。垂直扩容适用于短期容量需求增长,水平扩容则是应对长期大规模数据的推荐方案。
垂直扩容通过扩展MongoDB数据目录所在磁盘的存储空间,提升单节点的存储能力,适用于单节点部署或无需分布式架构的场景。
/var/lib/mongodb)。操作步骤:
lsblk查看新磁盘,如/dev/sdb);mkfs.ext4 /dev/sdb,根据需求选择文件系统);mount /dev/sdb /var/lib/mongodb),并修改/etc/fstab实现开机自动挂载。vg_mongodb/lv_mongodb):# 查看当前逻辑卷大小
lvdisplay
# 扩展逻辑卷(+10G表示增加10GB,根据需求调整)
lvextend -L +10G /dev/vg_mongodb/lv_mongodb
# 扩展文件系统(ext4为例)
resize2fs /dev/vg_mongodb/lv_mongodb
# 若为XFS文件系统,使用以下命令
# xfs_growfs /dev/vg_mongodb/lv_mongodb
编辑MongoDB配置文件/etc/mongod.conf,调整WiredTiger存储引擎的缓存大小(根据系统内存合理分配,避免占用过多内存):
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2 # 设置为系统内存的50%-70%(如16GB内存可设为8-12GB)
保存后重启MongoDB服务使配置生效:
sudo systemctl restart mongod
扩容后需定期监控磁盘使用情况,避免再次耗尽空间。常用命令:
# 查看磁盘空间使用率(-h表示人类可读格式)
df -h
# 查看MongoDB数据目录占用空间
du -sh /var/lib/mongodb
水平扩容通过向MongoDB分片集群添加新分片,将数据分布到多个节点,提升整体存储和查询性能,适用于大规模数据场景。
在新服务器上安装MongoDB(与现有集群版本一致),并配置为分片服务器(修改/etc/mongod.conf):
sharding:
clusterRole: shardsvr # 设置集群角色为分片服务器
启动MongoDB服务:
sudo systemctl start mongod
sudo systemctl enable mongod
若尚未搭建分片集群,需先完成以下配置:
mongod --configsvr --replSet configReplSet --dbpath /var/lib/mongodb/configdb --port 27019
初始化副本集(连接到任意配置服务器执行):mongo --port 27019
rs.initiate({
_id: "configReplSet",
configsvr: true,
members: [{ _id: 0, host: "localhost:27019" }]
})
mongos --configdb configReplSet/localhost:27019 --port 27017
连接到Mongos实例(mongo --port 27017),执行以下命令添加新分片(假设新分片服务器地址为new_shard_host:27018):
sh.addShard("new_shard_host:27018")
yourDatabase),执行:sh.enableSharding("yourDatabase")
_id或业务键),执行:sh.shardCollection("yourDatabase.yourCollection", { "shardKey": 1 })
sh.status()查看迁移进度。moveChunk命令(需谨慎操作):sh.moveChunk("yourDatabase.yourCollection", { "shardKey": value }, "new_shard_host:27018")
sh.status()确认集群状态正常,所有分片均已加入且数据分布均匀。mongodump),防止操作失误导致数据丢失。通过上述步骤,可在Debian环境下完成MongoDB的垂直或水平扩容,满足不同阶段的存储需求。