部署monggodb副本集分片集群

        分片技术,可以满足MongoDB数据量大量增长的需求。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

上图中主要有如下所述三个主要组件:

Shard:用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

Config Server:mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

部署monggodb三节点分片集群

首先修改主机名

192.168.197.136    hostnamectl set-hostname monggodb-1

192.168.197.137    hostnamectl set-hostname monggodb-2

192.168.197.138   hostnamectl set-hostname monggodb-3

安装monggodb(三个节点都做)

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.18.tgz --no-check-certificate

tar -zxvf mongodb-linux-x86_64-rhel70-5.0.18.tgz  解压安装包

mv mongodb-linux-x86_64-rhel70-5.0.18 /data/mongodb  移动到指定目录

配置环境变量

vim /etc/profile    最底部添加

MONGODB_HOME=/data/mongodb

export PATH=$PATH:$MONGODB_HOME/bin

source /etc/profile

创建数据库目录

mkdir /data/mongodb/{data,data-2,log}   数据存储目录,日志存储目录

部署config server(三台机器都操作)

mkdir /data/mongodb/config

启动config serve

mongod --bind_ip localhost,192.168.197.136 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.137 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.138 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongo --host 192.168.197.136 --port 27000   登录到136创建config的副本集

rs.initiate( { _id: "config", configsvr: true, members: [ { _id : 0, host : "192.168.197.136:27000" }, { _id : 1, host : "192.168.197.137:27000" }, { _id : 2, host : "192.168.197.138:27000" } ] } )

创建完成后查看一下副本集状态    rs.status()

可以看到stateStr状态栏有1个 PRIMARY角色 和 2个 SECONDARY角色集群创建正常,如果是三个SECONDARY角色可以退出mongo重新登录在查看一下。

启动分片集群实例(三个节点都操作)

136节点操作

mongod --bind_ip localhost,192.168.197.136 --shardsvr --replSet mongodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongod --bind_ip localhost,192.168.197.136 --shardsvr --replSet mongodb-2 --dbpath /data/mongodb/data-2/ --logpath /data/mongodb/log/mongod-2.log --fork  --port 27028

137节点操作

mongod --bind_ip localhost,192.168.197.137 --shardsvr --replSet mongodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongod --bind_ip localhost,192.168.197.137 --shardsvr --replSet mongodb-2 --dbpath /data/mongodb/data-2/ --logpath /data/mongodb/log/mongod-2.log --fork  --port 27028

138节点操作

mongod --bind_ip localhost,192.168.197.138 --shardsvr --replSet mongodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongod --bind_ip localhost,192.168.197.138 --shardsvr --replSet mongodb-2 --dbpath /data/mongodb/data-2/ --logpath /data/mongodb/log/mongod-2.log --fork  --port 27028

mongo --host 192.168.197.136 --port 27027   登录到136创建mongodb的副本集1

rs.initiate( { _id: "mongodb", members: [ { _id : 0, host : "192.168.197.136:27027" }, { _id : 1, host : "192.168.197.137:27027" }, { _id : 2, host : "192.168.197.138:27027" } ] } )

创建完成后查看一下副本集状态    rs.status()

可以看到1个 PRIMARY角色 和 2个 SECONDARY角色集群创建正常,如果是三个SECONDARY角色可以退出mongo重新登录在查看一下。

mongo --host 192.168.197.136 --port 27028   登录到136创建mongodb-2的副本集

rs.initiate( { _id: "mongodb-2", members: [ { _id : 0, host : "192.168.197.136:27028" }, { _id : 1, host : "192.168.197.137:27028" }, { _id : 2, host : "192.168.197.138:27028" } ] } )

创建完成后查看一下副本集状态    rs.status()

看到1个 PRIMARY角色 和 2个 SECONDARY角色集群创建正常,如果是三个SECONDARY角色可以退出mongo重新登录在查看一下。

为分片集群启动mongos(在136节点操作

mkdir mongos   创建数据存储目录

vim /data/mongodb/mongos/mongod.conf  创建monggodb的配置文件添加一些参数

net:

  port: 27017 #monggodb使用的端口

  bindIp: 0.0.0.0 #支持任意ipv4地址访问

  ipv6: true #开启ipv6

启动 mongos 指定之前部署的 config 副本集

mongos --configdb config/192.168.197.136:27000,192.168.197.137:27000,192.168.197.138:27000 --config /data/mongodb/mongos/mongod.conf  --logpath /data/mongodb/log/mongos.log --fork --port 27017

连接分片集群  mongo --host 192.168.197.136 --port 27017

将分片添加到集群

sh.addShard( "mongodb/192.168.197.136:27027,192.168.197.137:27027,192.168.197.138:27027")

sh.addShard( "mongodb-2/192.168.197.136:27028,192.168.197.138:27028,192.168.197.138:27028")

如果有多个分片可以重复此步骤

use test

sh.enableSharding("test")    给test库启动分片

sh.shardCollection("test.userid", {_id: "hashed" } )   根据"_id"字段做 hash 分片 

sh.status();     查看分片详情

database._id 表示开启分片的库。

database.primary 表示主 shard。

database.partitioned 表示这个库是否开启分片,true 表示开启。

collections 中表示分片的表。

collections.shardKey 表示分片健。

collections.balancing 为 true 表示平衡。

collections.chunks 数据分布情况。

use test      测试插入数据

for (var i=1; i<=10; i++ ) db.userid.save({userid:i,username:'a'});

插入完数据库来到136的两个主节点查看一下数据是否已经分片存储

mongo --host 192.168.197.136 --port 27027

mongo --host 192.168.197.136 --port 27028

可以看到输入的数据分别存储到了两个分片当中,到这里我们的分片集群就做好了。

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

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

相关文章

不废话的将ts一篇文章写完

写在前面 网上很多写ts的教程的&#xff0c;但是我觉得写的太繁琐了&#xff0c;这里我直接将基础用法写上&#xff0c;包括编译后的js代码&#xff0c;以便于你们进行对比&#xff0c; 包括一些常见的报错信息&#xff0c;你们可以对比一下报错信息&#xff0c; 我尽量不废话的…

图形化编程:Scratch与6547网题库的奇妙结合

随着科技的飞速发展&#xff0c;编程教育逐渐成为孩子们不可或缺的技能。其中&#xff0c;图形化编程因其简单易懂的特性&#xff0c;受到了广大儿童的喜爱。Scratch&#xff0c;这一由麻省理工学院开发的编程工具&#xff0c;正是引领这一风潮的佼佼者。与此同时&#xff0c;6…

LeetCode202. 快乐数

202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为…

HTML5的新特性

目录 一&#xff0c;新增语义化标签 二&#xff0c;新增的多媒体标签 三&#xff0c;新增input表单 四&#xff0c;新增的表单属性 一&#xff0c;新增语义化标签 二&#xff0c;新增的多媒体标签 1&#xff0c;音频&#xff1a;<audio>.。。用MP3 <audio src…

JavaScript 基础五 对象

JavaScript 基础五 对象 1. 对象2. 对象使用① 声明语法② 对象有属性和方法组成③ 属性对象属性的增删改查操作 ④ 方法 3. 对象遍历实例 4. 内置对象① 内置对象② 内置对象Math属性方法 引入&#xff1a;保存网站用户信息&#xff0c;比如姓名、年龄、电话号码&#xff0c;用…

ENG-2,可用于监测细胞内钠离子的动态变化

Replacement of Asante NaTrium Green-2 AM钠离子指示探针&#xff0c;ENG-2&#xff0c;可用于监测细胞内钠离子的动态变化 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Replacement of Asante NaTrium Green-2 AM钠离子指示探针&#xff0c;ENG-2 一、基本信…

如何对视频进行翻译

下载视频和翻译软件 视频和翻译软件点击下载就行了&#xff0c;下载之后解压&#xff0c;然后把两个exe点一下。接下来如果资金充裕或者要求比较高的可以使用各个api&#xff0c;网站里有视频介绍了。 经济适用视频翻译 原理简析 首先这个软件对视频的翻译的流程大致如下&a…

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…

如何系统的自学Python?通义千问、讯飞星火、文心一言及ChatGPT的回答

如何系统的自学Python&#xff1f;来看看通义千问、讯飞星火、文心一言及ChatGPT的回答. 第一个是马老师的通义千问 系统地自学Python是一个循序渐进的过程&#xff0c;从基础语法到实践项目&#xff0c;再到专业领域的深入学习。下面是一个详细的步骤指南&#xff1a; 了解Py…

vulhub靶机activemq环境下的CVE-2015-5254(ActiveMQ 反序列化漏洞)

影响范围 Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0 远程攻击者可以制作一个特殊的序列化 Java 消息服务 (JMS) ObjectMessage 对象&#xff0c;利用该漏洞执行任意代码。 漏洞搭建 没有特殊要求&#xff0c;请看 (3条消息) vulhub搭建方法_himobrinehacken的博客-CSD…

秦始皇帝陵K0007陪葬坑文物展览与文物预防性保护的璀璨交汇

秦始皇帝陵博物院近日迎来了一场引人注目的展览——“何止秦俑——秦陵苑囿之K0007陪葬坑”。此次展览首次集中展示了K0007陪葬坑出土的别具一格的陶俑、鲜活灵动的青铜水禽等珍贵文物。然而&#xff0c;这些文物的安全展出离不开高科技的监测平台与实时终端的24小时不间断保护…

英语不太行?数模美赛必备的翻译工具!

DeepL翻译:全世界最准确的翻译&#xff08;自称&#xff09; 网址&#xff1a;https://www.deepl.com/translator 优点&#xff1a;在专有名词翻译方面很准确&#xff0c;适合学术论文,可免费全文件翻译 缺点&#xff1a;全文件翻译时格式较乱&#xff0c;不过可以用于帮助初步…

Qt第一个项目(元对象系统)

效果是这样的&#xff0c;点击boy长大一岁或者girl长大一岁 qt的文件构造都是两个头文件三个源文件&#xff0c;源文件中有个cpp文件&#xff0c;它是程序的入口&#xff0c;一个项目中只能有一个main函数 #include "widget.h"#include <QApplication>int mai…

C#用正则表达式Regex.Matches 方法检查字符串中重复出现的词

目录 一、Regex.Matches 方法 1.重载 二、Matches(String, String, RegexOptions, TimeSpan) 1.定义 2.示例 三、Matches(String, String, RegexOptions) 1.定义 2.示例 3.示例&#xff1a;用正则表达式检查字符串中重复出现的词 四、Matches(String, Int32) 1.定义…

DRV8301 踩坑记,Status1 D10 老是 Fault

波形如上&#xff1a; 看第一个时钟出来的数据&#xff08;Status1 读完自动清除&#xff1f;&#xff09;&#xff0c;因此数据是&#xff1a;0x20 输入结构体解析&#xff1a; 可以看到&#xff0c;FETHA_OC了也就是A桥上管过流了&#xff1b; 检查一下硬件看看&#xff1…

nodejs+vue+ElementUi高校创业项目申报系统w6f1g

此系统设计主要采用的是nodejs语言来进行开发&#xff0c;采用vue框架技术&#xff0c;框架分为三层&#xff0c;分别是控制层Controller&#xff0c;业务处理层Service&#xff0c;持久层dao&#xff0c;能够采用多层次管理开发&#xff0c;对于各个模块设计制作有一定的安全性…

Lazysysadmin

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-30 21:10 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nma…

强化学习-google football 实验记录

google football 实验记录 1. gru模型和dense模型对比实验 实验场景&#xff1a;5v5(控制蓝方一名激活球员)&#xff0c;跳4帧&#xff0c;即每个动作执行4次 实验点&#xff1a; 修复dense奖励后智能体训练效果能否符合预期 实验目的&#xff1a; 对比gru 长度为16 和 dens…

机器学习算法决策树

决策树的介绍 决策树是一种常见的分类模型&#xff0c;在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分&#xff0c;这种思想是人类处理问题时的本能方法。例如在婚恋市场中&#xff0c;女方通常会先询问男方是否有房产&a…

Outlook技巧:如何插入可以用指定浏览器打开的链接

Outlook中的链接&#xff0c;有时直接点击无法打开&#xff0c;找本地Edge才能打开。如何让Url能够指定打开的浏览器呢&#xff1f; 插入链接时&#xff0c;直接加上前缀Microsoft-edge即可。 操作步骤&#xff1a; 编辑邮件界面&#xff0c;菜单选择插入-》链接 在链接地址…
最新文章