当前位置: 首页 > news >正文

MongoDB分片集群搭建及扩容

分片集群搭建及扩容

整体架构

环境准备

  1. 3台Linux虚拟机,准备MongoDB环境,配置环境变量。
  2. 一定要版本一致(重点),当前使用 version4.4.9

配置域名解析

在3台虚拟机上执行以下命令,注意替换实际 IP 地址

echo "192.168.65.97 mongo1 mongo01.com mongo02.com" >> /etc/hostsecho "192.168.65.190 mongo2 mongo03.com mongo04.com" >> /etc/hostsecho "192.168.65.200 mongo3 mongo05.com mongo06.com" >> /etc/hosts

准备分片目录

在各服务器上创建数据目录,我们使用 `/data`,请按自己需要修改为其他目录:

在mongo01.com / mongo03.com / mongo05.com 上执行以下命令:

mkdir -p /data/shard1/db /data/shard1/log /data/config/db /data/config/log

在mongo02.com / mongo04.com / mongo06.com 上执行以下命令:

mkdir -p /data/shard2/db /data/shard2/log /data/mongos/

创建第一个分片用的复制集

在mongo01.com / mongo03.com / mongo05.com 上执行以下命令:

mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /data/shard1/db \--logpath /data/shard1/log/mongod.log --port 27010 --fork \--shardsvr --wiredTigerCacheSizeGB 1

--shardsvr 声明这是集群的一个分片

--wiredTigerCacheSizeGB 设置内存大小

初始化第一个分片复制集

# 进入mongo shellmongo mongo01.com:27010#shard1复制集节点初始化rs.initiate({_id: "shard1","members" : [{"_id": 0,"host" : "mongo01.com:27010"},{"_id": 1,"host" : "mongo03.com:27010"},{"_id": 2,"host" : "mongo05.com:27010"}]})#查看复制集状态rs.status()

创建 config server 复制集

在mongo01.com / mongo03.com / mongo05.com上执行以下命令:

mongod --bind_ip 0.0.0.0 --replSet config --dbpath /data/config/db \--logpath /data/config/log/mongod.log --port 27019 --fork \--configsvr --wiredTigerCacheSizeGB 1

初始化 config server 复制集

# 进入mongo shellmongo mongo01.com:27019#config复制集节点初始化rs.initiate({_id: "config","members" : [{"_id": 0,"host" : "mongo01.com:27019"},{"_id": 1,"host" : "mongo03.com:27019"},{"_id": 2,"host" : "mongo05.com:27019"}]})

搭建 mongos

在mongo01.com / mongo03.com / mongo05.com上执行以下命令:

#启动mongos,指定config复制集mongos --bind_ip 0.0.0.0 --logpath /data/mongos/mongos.log --port 27017 --fork \--configdb config/mongo01.com:27019,mongo03.com:27019,mongo05.com:27019

mongos加入第1个分片

# 连接到mongosmongo mongo01.com:27017#添加分片 mongos>sh.addShard("shard1/mongo01.com:27010,mongo03.com:27010,mongo05.com:27010")#查看mongos状态mongos>sh.status()

创建分片集合

连接到mongos, 创建分片集合mongo mongo01.com:27017mongos>sh.status()#为了使集合支持分片,需要先开启database的分片功能mongos>sh.enableSharding("company")# 执行shardCollection命令,对集合执行分片初始化mongos>sh.shardCollection("company.emp", {_id: 'hashed'})mongos>sh.status()#插入测试数据use companyfor (var i = 0; i < 10000; i++) {db.emp.insert({i: i});}#查询数据分布db.emp.getShardDistribution()

创建第2个分片的复制集

在mongo02.com / mongo04.com / mongo06.com上执行以下命令:

mongod --bind_ip 0.0.0.0 --replSet shard2 --dbpath /data/shard2/db \--logpath /data/shard2/log/mongod.log --port 27011 --fork \--shardsvr --wiredTigerCacheSizeGB 1

初始化第二个分片的复制集

# 进入mongo shellmongo mongo06.com:27011#shard2复制集节点初始化rs.initiate({_id: "shard2","members" : [{"_id": 0,"host" : "mongo06.com:27011"},{"_id": 1,"host" : "mongo02.com:27011"},{"_id": 2,"host" : "mongo04.com:27011"}]})#查看复制集状态rs.status()

mongos加入第2个分片

# 连接到mongosmongo mongo01.com:27017#添加分片 mongos>sh.addShard("shard2/mongo02.com:27011,mongo04.com:27011,mongo06.com:27011")#查看mongos状态mongos>sh.status()

http://www.lryc.cn/news/499028.html

相关文章:

  • qt QSettings详解
  • 【Linux】ubuntu下一键配置vim
  • 【NLP 9、实践 ① 五维随机向量交叉熵多分类】
  • 信息系统安全防护攻防对抗式实验教学解决方案
  • 【笔记2-4】ESP32:freertos任务创建
  • 2024年12月6日Github流行趋势
  • matlab读取NetCDF文件
  • RDMA驱动学习(三)- cq的创建
  • Flask使用Celery与多进程管理:优雅处理长时间任务与子进程终止技巧(multiprocessing)(subprocess)
  • Django模板系统
  • 15. 文件操作
  • 清风数学建模学习笔记——Topsis法
  • 组合总和习题分析
  • 基于eFramework车控车设中间件介绍
  • L17.【LeetCode笔记】另一棵树的子树
  • BGP通过route-policy路由策略调用ip-prefix网络前缀实现负载均衡与可靠性之AS-path属性
  • 每日速记10道java面试题14-MySQL篇
  • 内存图及其画法
  • Ansys Maxwell:Qi 无线充电组件
  • 【Shell 脚本实现 HTTP 请求的接收、解析、处理逻辑】
  • 【北京迅为】iTOP-4412全能版使用手册-第六十七章 USB鼠标驱动详解
  • 【青牛科技】拥有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作——D4558
  • Kafka 数据写入问题
  • 实战ansible-playbook(九)-profile配置- 确保 CUDA 和 MPI 环境变量正确设置并立即生效
  • 气膜馆:科技与环保融合的未来建筑新选择—轻空间
  • git回退到某个版本git checkout和git reset命令的区别
  • Preprocess
  • stm32 spi接口传输asm330l速率优化(及cpu和dma方式对比)
  • 数字时代的文化宝库:存储技术与精神生活
  • flex: 1 display:flex 导致的宽度失效问题