MongoDB部署分片集群

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB部署分片集群

1.前置条件(官方推荐生产环境使用此种)

To avoid configuration updates due to IP address changes, use DNS hostnames instead of IP addresses. It is particularly important to use a DNS hostname instead of an IP address when configuring replica set members or sharded cluster members.

Use hostnames instead of IP addresses to configure clusters across a split network horizon. Starting in MongoDB 5.0, nodes that are only configured with an IP address will fail startup validation and will not start.

2.配置 Config Server

配置成副本集模式。config1,config2,config3

2.1创建文件夹

mkdir -p /data/dbs/config1/data
mkdir -p /data/dbs/config1/logs

2.2 vim /data/dbs/config1/mongod.conf

systemLog:
  destination: file
  logAppend: true
  path: /data/dbs/config1/logs/mongod.log


storage:
  dbPath: /data/dbs/config1/data
  journal:
    enabled: true


processManagement:
  fork: true  
  pidFilePath: /data/dbs/config1/mongod.pid  



net:
  port: 27018
  bindIp: 0.0.0.0

sharding:
  clusterRole: configsvr

replication:
  replSetName: config

2.3启动

/home/mongodb/mongodb/bin/mongod -f /data/dbs/config1/mongod.conf
/home/mongodb/mongodb/bin/mongod -f /data/dbs/config2/mongod.conf
/home/mongodb/mongodb/bin/mongod -f /data/dbs/config3/mongod.conf

2.4 初始化

/home/mongodb/mongodb/bin/mongo --port 27018

rs.initiate(
  {
    _id: "config",
    configsvr: true,
    members: [
      { _id : 0, host : "10.6.8.176:27018" },
      { _id : 1, host : "10.6.8.176:27028" },
      { _id : 2, host : "10.6.8.176:27038" }
    ]
  }
)

3.配置Shard

配置成副本集模式。shard1,shard2,shard3

3.1创建文件夹

mkdir -p /data/dbs/shard1/data
mkdir -p /data/dbs/shard1/logs

3.2 vim /data/dbs/config1/mongod.conf

systemLog:
  destination: file
  logAppend: true
  path: /data/dbs/shard1/logs/mongod.log


storage:
  dbPath: /data/dbs/shard1/data
  journal:
    enabled: true


processManagement:
  fork: true  
  pidFilePath: /data/dbs/shard1/mongod.pid 


net:
  port: 27019
  bindIp: 0.0.0.0

sharding:
  clusterRole: shardsvr

replication:
  replSetName: shard1

3.3 启动

/home/mongodb/mongodb/bin/mongod -f /data/dbs/shard1/mongod.conf
/home/mongodb/mongodb/bin/mongod -f /data/dbs/shard2/mongod.conf
/home/mongodb/mongodb/bin/mongod -f /data/dbs/shard3/mongod.conf

3.4 初始化

shard1

/home/mongodb/mongodb/bin/mongo --port 27019

rs.initiate(
  {
    _id: "shard1",
    members: [
      { _id : 0, host : "10.6.8.176:27019" }
    ]
  }
)

shard2

/home/mongodb/mongodb/bin/mongo --port 27020

rs.initiate(
  {
    _id: "shard2",
    members: [
      { _id : 0, host : "10.6.8.176:27020" }
    ]
  }
)

shard3

/home/mongodb/mongodb/bin/mongo --port 27021

rs.initiate(
  {
    _id: "shard3",
    members: [
      { _id : 0, host : "10.6.8.176:27021" }
    ]
  }
)

4. 配置mongos-router

配置成副本集模式或者单个都可以。

4.1 创建文件夹

mkdir -p /data/dbs/router1/data
mkdir -p /data/dbs/router1/logs

4.2 vim /data/dbs/router1/mongod.conf

systemLog:
  destination: file
  logAppend: true
  path: /data/dbs/router1/logs/mongod.log


storage:
  dbPath: /data/dbs/router1/data
  journal:
    enabled: true


processManagement:
  fork: true  
  pidFilePath: /data/dbs/router1/mongod.pid 


net:
  port: 27017
  bindIp: 0.0.0.0

sharding:
  configDB: config/10.6.8.186:27018

4.3 启动

/home/mongodb/mongodb/bin/mongos -f /data/dbs/router1/mongod.conf

4.4 初始化

/home/mongodb/mongodb/bin/mongo --port 27017

sh.addShard( "shard1/10.6.8.176:27019")
sh.addShard( "shard2/10.6.8.176:27020")
sh.addShard( "shard3/10.6.8.176:27021")

4.5 删除分片

db.runCommand( { removeShard: "shard1" } )

db.adminCommand( { removeShard : "shard1" } )

5.验证分片

/home/mongodb/mongodb/bin/mongo --port 27017

5.1为集合启用分片,设置分片规则

use db0001;
sh.enableSharding("db0001")
sh.shardCollection("db0001.student", {"_id": "hashed" })

5.2插入数据

for (i = 1; i <= 1000; i=i+1){
    db.student.insert({'xh': i,'name':'name'+i})
}

5.3查看各分片数量

/home/mongodb/mongodb/bin/mongo --port 27029
/home/mongodb/mongodb/bin/mongo --port 27020
/home/mongodb/mongodb/bin/mongo --port 27021

use db0001;
db.student.find().count()
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
|
2月前
|
存储 NoSQL 前端开发
MongoDB 分片
10月更文挑战第17天
40 2
|
1月前
|
存储 NoSQL MongoDB
【赵渝强老师】部署MongoDB复制集
本文介绍了如何在单个节点上搭建MongoDB复制集环境,通过监听不同端口实现多节点配置。详细步骤包括创建数据目录、编辑配置文件、启动节点、初始化复制集、查看状态以及测试主从库的读写操作。文中还提供了视频讲解和代码示例,帮助读者更好地理解和操作。
|
3月前
|
存储 监控 NoSQL
*MongoDB的水平扩展主要通过分片技术实
*MongoDB的水平扩展主要通过分片技术实
52 5
|
3月前
|
存储 NoSQL 前端开发
MongoDB 分片总结
这篇文章总结了MongoDB分片的概念、集群结构、分片实例、配置和测试过程。
84 6
|
4月前
|
存储 NoSQL MongoDB
今日分享MongoDB一键部署脚本
今日分享MongoDB一键部署脚本
39 0
|
4月前
|
存储 NoSQL 算法
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
378 15
|
5月前
|
自然语言处理 运维 NoSQL
MongoDB集群同步
实现 MongoDB Cluster-to-Cluster 即集群同步的工具是:mongosync 详情可参考如下官方文档: https://www.mongodb.com/zh-cn/docs/cluster-to-cluster-sync/current/quickstart/ 以上这个地址的文档一看就是机器翻译的,可能有不恰当的地方,但基本可参考使用。 以下是本次在某项目地配置集群同步的简要步骤,可参考使用。
95 6
|
4月前
|
存储 运维 NoSQL
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
133 0
|
5月前
|
负载均衡 NoSQL 中间件