mongodb 集群shard_MongoDB Sharding Cluster 分片集群搭建及使用
发布日期:2025-04-14 14:37:30 浏览次数:10 分类:精选文章

本文共 3824 字,大约阅读时间需要 12 分钟。

MongoDB 分片集群搭建与使用指南

1.1 规划

本文将详细介绍MongoDB分片集群的搭建过程,包括shard节点、configserver节点以及mongos节点的配置及使用方法。

1.2 Shard节点配置过程

1.2.1 目录创建

创建以下目录结构:

mkdir -p /mongodb/38021/conf /mongodb/38021/log /mongodb/38021/datamkdir -p /mongodb/38022/conf /mongodb/38022/log /mongodb/38022/datamkdir -p /mongodb/38023/conf /mongodb/38023/log /mongodb/38023/datamkdir -p /mongodb/38024/conf /mongodb/38024/log /mongodb/38024/datamkdir -p /mongodb/38025/conf /mongodb/38025/log /mongodb/38025/datamkdir -p /mongodb/38026/conf /mongodb/38026/log /mongodb/38026/data

1.2.2 修改配置文件

第一组复制集搭建:21-23(1主1从1Arb)
cp /mongodb/38021/conf/mongodb.conf /mongodb/38022/conf/cp /mongodb/38021/conf/mongodb.conf /mongodb/38023/conf/sed -n '#38021#38022#' /mongodb/38022/conf/mongodb.conf -ised -n '#38021#38023#' /mongodb/38023/conf/mongodb.conf -i
第二组节点:24-26(1主1从1Arb)
cp /mongodb/38024/conf/mongodb.conf /mongodb/38025/conf/cp /mongodb/38024/conf/mongodb.conf /mongodb/38026/conf/sed -n '#38024#38025#' /mongodb/38025/conf/mongodb.conf -ised -n '#38024#38026#' /mongodb/38026/conf/mongodb.conf -i

1.2.3 启动所有节点,并搭建复制集

启动各节点并使用rs.initiate命令初始化复制集:

mongod -f /mongodb/38021/conf/mongodb.confmongod -f /mongodb/38022/conf/mongodb.confmongod -f /mongodb/38023/conf/mongodb.confmongod -f /mongodb/38024/conf/mongodb.confmongod -f /mongodb/38025/conf/mongodb.confmongod -f /mongodb/38026/conf/mongodb.confps -ef | grep mongod
configserver配置
mongo --port 38018 use adminconfig = { _id: 'configReplSet', members: [    {_id:0, host: '10.0.0.51:38018'},    {_id:1, host: '10.0.0.51:38019'},    {_id:2, host: '10.0.0.51:38020'}] }rs.initiate(config)

1.3 config节点配置

1.3.1 目录创建

mkdir -p /mongodb/38018/conf /mongodb/38018/log /mongodb/38018/datamkdir -p /mongodb/38019/conf /mongodb/38019/log /mongodb/38019/datamkdir -p /mongodb/38020/conf /mongodb/38020/log /mongodb/38020/data

1.3.2 修改配置文件

cp /mongodb/38018/conf/mongodb.conf /mongodb/38019/conf/cp /mongodb/38018/conf/mongodb.conf /mongodb/38020/conf/sed -n '#38018#38019#' /mongodb/38019/conf/mongodb.conf -ised -n '#38018#38020#' /mongodb/38020/conf/mongodb.conf -i

1.3.3 启动节点,并配置复制集

mongod -f /mongodb/38018/conf/mongodb.confmongod -f /mongodb/38019/conf/mongodb.confmongod -f /mongodb/38020/conf/mongodb.confmongo --port 38018 use adminconfig = { _id: 'configReplSet', members: [    {_id:0, host: '10.0.0.51:38018'},    {_id:1, host: '10.0.0.51:38019'},    {_id:2, host: '10.0.0.51:38020'}] }rs.initiate(config)

1.4 mongos节点配置

1.4.1 创建目录

mkdir -p /mongodb/38017/conf /mongodb/38017/log

1.4.2 配置文件

cat > /mongodb/38017/conf/mongos.conf < &

1.4.3 启动mongos

mongos -f /mongodb/38017/conf/mongos.conf

1.5 分片集群添加节点

1.5.1 连接到mongos并配置

mongo --port 38017 admin

执行以下命令添加分片:

db.runCommand({ addshard: "sh1/10.0.0.51:38021,10.0.0.51:38022,10.0.0.51:38023", name: "shard1" })db.runCommand({ addshard: "sh2/10.0.0.51:38024,10.0.0.51:38025,10.0.0.51:38026", name: "shard2" })

1.5.2 列出分片

mongos> db.runCommand({ listshards: 1 })

1.5.3 查看整体状态

mongos> sh.status()

1.6 使用分片集群

1.6.1 RANGE分片配置及测试

1.6.1.1 激活分片功能

mongo --port 38017 adminadmin> db.runCommand({ enablesharding: "test" })

1.6.1.2 指定分片键

use testdb.vast.ensureIndex({ id: 1 })admin> db.runCommand({ shardcollection: "test.vast", key: { id: 1 } })

1.6.1.3 数据插入与统计

use testfor (i=1; i<1000000; i++) {    db.vast.insert({ id: i, name: "shenzheng", age: 70, date: newDate() });}db.vast.stats()

1.6.2 Hash分片配置及测试

1.6.2.1 激活分片功能

mongo --port 38017 adminadmin> db.runCommand({ enablesharding: "oldboy" })

1.6.2.2 创建Hash索引

use oldboyoldboy> db.vast.ensureIndex({ id: "hashed" })

1.6.2.3 开启分片

use adminadmin> sh.shardCollection("oldboy.vast", { id: "hashed" })

1.6.2.4 数据录入与统计

use oldboyfor (i=1; i<100000; i++) {    db.vast.insert({ id: i, name: "shenzheng", age: 70, date: newDate() });}

1.6.3 分片结果测试

mongo --port 38021 use oldboydb.vast.count()
mongo --port 38024 use oldboydb.vast.count()
上一篇:mongodb 默认端口号_MongoDB的简单使用
下一篇:MongoDB 聚合

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年05月09日 21时59分43秒