MongoDB分片集群搭建及扩容

分片集群搭建及扩容

整体架构

环境准备

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

配置域名解析

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

echo "192.168.65.97 mongo1 mongo01.com mongo02.com" >> /etc/hosts

echo "192.168.65.190 mongo2 mongo03.com mongo04.com" >> /etc/hosts

echo "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 shell

mongo 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 shell

mongo 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个分片

# 连接到mongos

mongo mongo01.com:27017

#添加分片 mongos>sh.addShard("shard1/mongo01.com:27010,mongo03.com:27010,mongo05.com:27010")

#查看mongos状态

mongos>sh.status()

创建分片集合

连接到mongos, 创建分片集合

mongo mongo01.com:27017

mongos>sh.status()

#为了使集合支持分片,需要先开启database的分片功能

mongos>sh.enableSharding("company")

# 执行shardCollection命令,对集合执行分片初始化

mongos>sh.shardCollection("company.emp", {_id: 'hashed'})

mongos>sh.status()



#插入测试数据

 use company

for (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 shell

mongo 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个分片

# 连接到mongos

mongo mongo01.com:27017

#添加分片 mongos>sh.addShard("shard2/mongo02.com:27011,mongo04.com:27011,mongo06.com:27011")

#查看mongos状态

mongos>sh.status()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/930629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker desktop打包配置国内镜像地址

打包遇到无法访问外网资源&#xff0c;直接配置国内镜像地址 直接加入如下代码就行&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-m…

嵌入式Linux,标准I/O探究,I/O缓冲,以及函数讲解

出于速度和效率的考虑&#xff0c;系统 I/O 调用&#xff08;即文件 I/O &#xff0c; open 、 read 、 write 等&#xff09;和标准 C 语言库 I/O 函数&#xff08;即标准 I/O 函数&#xff09;在操作磁盘文件时会对数据进行缓冲。 1. 文件 I/O 的内核缓冲 read() 和…

【人工智能】大数据平台技术及应用

文章目录 前言一、大数据平台基本概念及发展趋势1、数据量爆发式增长&#xff0c;发数据蓬勃发展2、大数据到底是什么&#xff1f;3、大数据处理与传统数据处理的差异4、为什么要建立大数据平台&#xff1f;5、大数据平台开源架构-Hadoop6、华为云大数据平台架构 二、大数据技术…

Word中的公式域

在WORD操作中&#xff0c;遇到数学公式时&#xff0c;我们往往都要通过公式编辑器来录入&#xff0c;其实&#xff0c;除了公式编辑器以外&#xff0c;在Word中还有一个编辑公式的利器&#xff1a;域。有了这个工具&#xff0c;应付一般的数学公式编辑还是绰绰有余的。 公式域的…

2.STM32通信接口之SPI通信---SPI实战《精讲》

SPI仅支持一主多从&#xff08;无应答机制&#xff09; 参照&#xff1a;《第十一部分》1.STM32通信接口之SPI通信---SPI介绍《精讲》-CSDN博客 在采用一主多从的模式下。从机未被选中&#xff0c;SN1时&#xff0c;从机的MISO会处于高阻态状态&#xff0c;SN0时&#xff0c;M…

电子电气架构 --- E/E(电子电气架构)的重新定义

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…

小身躯大能量-供热系统通过EtherCAT转Profinet网关进行升级

在现代工业自动化领域&#xff0c;通信技术的进步对于提高系统效率、稳定性和可靠性起着至关重要的作用。EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;作为一种实时以太网解决方案&#xff0c;因其高性能及成本效益高等特点&#xff0c;在众多…

buuctf:镜子里面的世界

查看图片属性以及010没有发现任何有用的信息 图片名字是steg.png,用stegsolve试试 flag{st3g0_saurus_wr3cks}

brpc的接口使用和封装

brpc 是用 c语言编写的工业级 RPC 框架&#xff0c;常用于搜索、存储、机器学习、广告、推荐等高性能系统。 brpc的远程调用思想&#xff1b;将数据处理的过程不在放在本地进行&#xff0c;而是放在服务器中去 接口使用 客户端和服务端的使用 服务端&#xff1a; 1.继承Echo…

.NET MAUI与.NET for Android/IOS的关系

2024年11月13日微软发布了.Net9.0,我打算体验一下。安装好.Net9.0 SDK后发现Visual Studio识别不到9.0&#xff0c;但是通过命令行dotnet --info查看是正常的&#xff0c;后面看到了VS有版本可以升级&#xff0c;把VS升级到17.12.0就可以了。更新完打开以后看到如下界面 这里…

聚焦 Facebook 隐私安全,守护用户数字家园

随着数字技术的飞速发展&#xff0c;社交媒体已成为我们生活中不可或缺的一部分&#xff0c;而隐私与安全的问题也愈加突出&#xff0c;特别是在 Facebook 这样拥有全球数十亿用户的平台上。如何有效地保障用户隐私&#xff0c;守护用户的数字家园&#xff0c;已成为社会各界关…

Linux C/C++编程的线程创建

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…

Gitee上获取renren-fast-vue install并run dev错误处理

目的&#xff1a;获取一个手脚架、越简约越好、越干净越好、于是看上了renren-fast-vue… 前端&#xff1a;vue2 后端&#xff1a;jdk1.8 mysql 5.7 SpringBoot单体架构 一开始只是下载前后端项目到本地&#xff0c;一堆乱七八糟的错误&#xff0c;网上找的资料也参差不齐… …

线程和进程(juc)

线程 一&#xff1a;概念辨析 1&#xff1a;线程与进程 进程&#xff1a; 1&#xff1a;程序由指令和数据组成&#xff0c;指令要执行&#xff0c;数据要读写&#xff0c;就需要将指令加载给cpu&#xff0c;把数据加载到内存&#xff0c;同时程序运行时还会使用磁盘&#x…

五、docker的网络模式

五、docker的网络模式 5.1 Docker的四种网络模式 当你安装docker时&#xff0c;它会自动创建三个网络&#xff0c;可使用如下命令查看&#xff1a; [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 7390284b02d6 bridge bridge lo…

【AWS re:Invent 2024】一文了解EKS新功能:Amazon EKS Auto Mode

文章目录 一、为什么要使用 Amazon EKS Auto Mode&#xff1f;二、Amazon EKS自动模式特性2.1 持续优化计算成本2.2 迁移集群操作2.3 EKS 自动模式的高级功能 三、EKS Auto 集群快速创建集群配置四、查看来自 API 服务器的指标五、EKS 相关角色权限设置六、参考链接 一、为什么…

数据结构——有序二叉树的删除

在上一篇博客中&#xff0c;我们介绍了有序二叉树的构建、遍历、查找。 数据结构——有序二叉树的构建&遍历&查找-CSDN博客文章浏览阅读707次&#xff0c;点赞18次&#xff0c;收藏6次。因为数据的类型决定数据在内存中的存储形式。left right示意为左右节点其类型也为…

git pull error: cannot lock ref

Git: cannot lock ref ‘refs/remotes/origin/feature/xxx’: refs/remotes/origin/feature/xxx/car’ exists; cannot create refs/remotes/origin/feature/xxx git remote prune origin重新整理服务端和本地的关联关系即可

树与图深度优先遍历——acwing

题目一&#xff1a;树的重心 846. 树的重心 - AcWing题库 分析 采用暴力枚举&#xff0c;试探每个点&#xff0c;除去之后&#xff0c;连通分量最大值是多少&#xff0c; 各个点的最大值找最小的 因为可以通过 dfs 来得到 根u以下点数&#xff0c;以及可以求各分树的点数&am…

ultralytics-YOLOv11的目标检测解析

1. Python的调用 from ultralytics import YOLO import os def detect_predict():model YOLO(../weights/yolo11n.pt)print(model)results model(../ultralytics/assets/bus.jpg)if not os.path.exists(results[0].save_dir):os.makedirs(results[0].save_dir)for result in…