Linux上处理MongoDB大数据量的实用方案
一 架构与容量规划
二 存储与操作系统优化
三 导入、查询与索引策略
mongoimport --db mydb --collection coll --file data.json --jsonArray。四 配置与运维要点
storage:
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 8 # 依据内存调整
net:
port: 27017
maxIncomingConnections: 10000
operationProfiling:
mode: slowOp
slowOpThresholdMs: 100
replication:
replSetName: rs0
sharding:
clusterRole: shardsvr # 或 mongos/configsvr
五 分片集群最小落地步骤
mkdir -p /data/configdb
mongod --configsvr --replSet csrs --dbpath /data/configdb --port 27019 --fork --logpath /var/log/mongodb/config.log
在任一配置节点初始化:rs.initiate({_id:"csrs",configsvr:true,members:[{_id:0,host:"cfg1:27019"},{_id:1,host:"cfg2:27019"},{_id:2,host:"cfg3:27019"}]})mkdir -p /data/shard1a /data/shard1b
mongod --shardsvr --replSet shard1 --dbpath /data/shard1a --port 27018 --fork --logpath /var/log/mongodb/shard1a.log
mongod --shardsvr --replSet shard1 --dbpath /data/shard1b --port 27018 --fork --logpath /var/log/mongodb/shard1b.log
在分片节点初始化(以shard1为例):rs.initiate({_id:"shard1",members:[{_id:0,host:"s1a:27018"},{_id:1,host:"s1b:27018"}]})mongos --configdb csrs/cfg1:27019,cfg2:27019,cfg3:27019 --port 27017 --fork --logpath /var/log/mongodb/mongos.log
mongo --port 27017
sh.addShard("shard1/s1a:27018")
sh.addShard("shard2/s2a:27018")
sh.enableSharding("mydb")
sh.shardCollection("mydb.events", { "user_id": 1 })
sh.status()
sh.status()观察chunk均衡与迁移状态。