广告
返回顶部
首页 > 资讯 > 数据库 >在CentOS7上部署MongoDB分片群集
  • 560
分享到

在CentOS7上部署MongoDB分片群集

2024-04-02 19:04:59 560人浏览 八月长安
摘要

概述 mongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MonGoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接

概述

mongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MonGoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据。

MongoDB分片群集的组成
  • Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台服务器组成一个Replica Set承担,防止主机单点故障。
  • Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。
  • Routers:路由器,客户端由此接入,且让整个群集看上去像单一数据库前端应用可以透明使用。
部署MongoDB分片群集

实验环境:

  • 1台路由实例(端口27017)
  • 1台配置实例(端口37017)
  • 2台shard实例(端口47017,47018)

1.安装MongoDB3.2

[root@localhost ~]# yum install openssl-devel -y
[root@localhost Tomcat]# tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/

2.创建4个实例

[root@localhost opt]# mkdir -p /data/mongodb/mongodb{1,2,3,4}
[root@localhost mongodb]# mkdir logs
[root@localhost mongodb]# touch logs/mongodb{1,2,3,4}.log
[root@localhost logs]# chmod -R 777 *.log
[root@localhost logs]# ulimit -n 25000   //最大进程数//
[root@localhost logs]# ulimit -u 25000  //最大文件数//

3.部署配置服务器

[root@localhost bin]# vim mongodb1.conf

port=37017
dbpath=/data/mongodb/mongodb1
logpath=/data/mongodb/logs/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
configsvr=true
~      

1)某节点内存不足时,从其他节点分配内存

[root@localhost bin]# sysctl -w vm.zone_reclaim_mode=0 //内核参数为0的话,那么系统会倾向于从其他节点分配内存//
[root@localhost bin]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@localhost bin]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

[root@localhost bin]# ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
[root@localhost bin]# ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod

2)启动配置服务器

[root@localhost bin]# mongod -f mongodb1.conf

4.配置分片服务器

[root@localhost bin]# vim mongodb2.conf 

port=47017
dbpath=/data/mongodb/mongodb2
logpath=/data/mongodb/logs/mongodb2.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true

[root@localhost bin]# vim mongodb3.conf 

port=47018
dbpath=/data/mongodb/mongodb3
logpath=/data/mongodb/logs/mongodb3.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true

1)启动mongodb2、mongodb3

[root@localhost bin]#mongod -f mongodb2.conf
[root@localhost bin]#mongod -f mongodb3.conf

5.启动路由服务器

[root@localhost bin]# ./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.126.141:37017 --chunkSize 1
************显示*******************************************
2018-07-18T09:21:53.507+0800 W SHARDING [main] Running a sharded cluster with fewer than 3 config servers should only be done for testing purposes and is not recommended for production.
about to fork child process, waiting until server is ready for connections.
forked process: 3580
child process started successfully, parent exiting

6.启用分片服务器

[root@localhost bin]# mongo
mongos> show dbs
config  0.031GB
mongos> sh.status()    //#shards下为空,没有分片服务器//

mongos> sh.addShard("192.168.126.204:47017")
mongos> sh.addShard("192.168.126.204:47018")
mongos> sh.status()
shards:
    {  "_id" : "shard0000",  "host" : "192.168.126.141:47017" }
    {  "_id" : "shard0001",  "host" : "192.168.126.141:47018" }

1)创建KGC数据库,创建users集合并且插入100000条数据

mongos> use kgc
mongos> db.createCollection('users')
mongos> for(var i=1;i<=100000;i++)db.users.insert({"id":1,"name":"jack"+i})
mongos> db.users.find()
{ "_id" : ObjectId("5b4e9b580f25d0730817aea1"), "id" : 1, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b580f25d0730817aea2"), "id" : 2, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b580f25d0730817aea3"), "id" : 3, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b580f25d0730817aea4"), "id" : 4, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aea5"), "id" : 5, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aea6"), "id" : 6, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aea7"), "id" : 7, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aea8"), "id" : 8, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aea9"), "id" : 9, "name" : "jack1" }
{ "_id" : ObjectId("5b4e9b590f25d0730817aeaa"), "id" : 10, "name" : "jack1" }
..........//省略//

7.实现分片功能

[root@localhost bin]# ./mongoimport -d kgc -c users --file /opt/testdb.txt
mongos> show dbs
config  0.031GB
kgc     0.078GB
mongos> use kgc
switched to db kgc
mongos> show tables
system.indexes
users
mongos> sh.status()    //查看数据库分片信息//
 databases:
    {  "_id" : "kgc",  "primary" : "shard0000",  "partitioned" : false } //数据库尚未分片//

1)启用数据库分片

mongos> sh.enableSharding("kgc")   //启用数据库分片//
mongos> sh.status()
databases:
    {  "_id" : "kgc",  "primary" : "shard0000",  "partitioned" : true }
mongos> db.users.createIndex({"id":1})   //对users表创建索引//
mongos> sh.shardCollection("kgc.users",{"id":1})  //表分片//
mongos> sh.status()
 shards:
    {  "_id" : "shard0000",  "host" : "192.168.126.141:47017" }
    {  "_id" : "shard0001",  "host" : "192.168.126.141:47018" }
您可能感兴趣的文档:

--结束END--

本文标题: 在CentOS7上部署MongoDB分片群集

本文链接: https://www.lsjlt.com/news/36881.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在CentOS7上部署MongoDB分片群集
    概述 MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接...
    99+
    2022-10-18
  • Mongodb 分片集群部署
    Mongodb分片集群介绍       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功...
    99+
    2022-10-18
  • MongoDB分片集群部署
    一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明2、各个角色的部署情况...
    99+
    2022-10-18
  • CentOS7上的mongodb分片群集
    CentOS7的mongodb分片群集 简介 高数据量和吞吐量的数据库应用会对单机的性能造成较大的压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁...
    99+
    2022-10-18
  • MongoDB分片集群部署详解
     一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明 2、各...
    99+
    2022-10-18
  • Redis集群分片环境部署
    原理 集群技术是构建高并发网站的主要技术,访问网站的最大压力是在访问某个页面时,需要时查询数据库并相应,Redis从3.0版本以后开始支持集群功能了,要让集群正常工作至少得有三个主节点。Redis集群是基于...
    99+
    2022-10-18
  • centos7系统部署k8s集群的示例分析
    centos7系统部署k8s集群的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1 版本、规划1.1 版本信息:名称版本号内核3.10.0-1160.e...
    99+
    2023-06-22
  • 如何在Azure上部署Kubernetes集群
    如何在Azure上部署Kubernetes集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实验、演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载。...
    99+
    2023-06-05
  • 如何在K8s上部署Redis集群
    这篇文章将为大家详细讲解有关如何在K8s上部署Redis集群,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言 架构原理:每个Master都可以拥有多个Slave。当...
    99+
    2022-10-18
  • 如何在kubernetes上部署consul集群
    这篇文章主要介绍“如何在kubernetes上部署consul集群”,在日常操作中,相信很多人在如何在kubernetes上部署consul集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在kubern...
    99+
    2023-06-04
  • 在企业的生产环境中部署Reids分片集群
    1、环境说明    在此文章中不对redis做详细介绍,如果对redis不太了解的朋友可以参考此链接 http://www.runoob.com/redis/redis-tutorial...
    99+
    2022-10-18
  • 在K8s上部署Redis集群的方法步骤
    目录一、前言 二、准备操作 三、StatefulSet简介 四、部署过程 1.创建NFS存储 2.创建Configmap 3.创建Headless service 4.创建Redis...
    99+
    2022-11-12
  • 如何在Kubernetes上部署Redis高可用集群
    如何在Kubernetes上部署Redis高可用集群,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Redis 介绍Redis 代表REmote DI...
    99+
    2023-06-15
  • 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群
    作者:程润科 数据库研发工程师 编辑:张莉梅 高级文档工程师 视频:钱芬 高级测试工程师 本文将演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步骤,快速实现 MyS...
    99+
    2022-04-02
    容器化 | K8s 上部署 RadonDB MySQL Operator 和集群
  • 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
    本文参考kubernetes官网文章Installing Kubernetes on linux with kubeadm在CentOS7.2使用Kubeadm部署Kuebernetes集群,解决了一些在按照该文档部署时...
    99+
    2022-06-04
    CentOS部署Kubernetes集群 CentOS Kubernetes集群
  • 如何使用Rancher在Kubernetes上部署EMQ X集群
    这篇文章主要讲解了“如何使用Rancher在Kubernetes上部署EMQ X集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Rancher在Kubernetes上部署EMQ X...
    99+
    2023-06-03
  • 如何在阿里云服务器上部署CDH5集群
    CDH5是Cloudera的数据平台,用于在大规模集群中处理和分析大数据。在阿里云服务器上部署CDH5集群,需要考虑多个因素,包括服务器配置、软件安装、配置文件等。本文将详细介绍如何在阿里云服务器上部署CDH5集群。 详细说明:一、服务器配...
    99+
    2023-10-30
    阿里 集群 器上
  • MongoDB分片在部署与维护管理中常见的事项有哪些
    这篇文章主要为大家展示了“MongoDB分片在部署与维护管理中常见的事项有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MongoDB分片在部署与维护管理中...
    99+
    2022-10-18
  • 如何在 Windows 上部署 Python 分布式系统并集成 JavaScript 应用?
    在当今互联网时代,分布式系统已成为不可或缺的基础设施之一,而 Python 和 JavaScript 作为两种最受欢迎的编程语言之一,也成为了分布式系统开发的主流语言。在本文中,我们将介绍如何在 Windows 上部署 Python 分布...
    99+
    2023-08-21
    分布式 javascript windows
  • Go语言的容器技术:如何将对象分布式地部署在集群中?
    随着云计算和容器化技术的不断发展,分布式系统已经成为了现代软件开发中的一种常见模式。而Go语言以其高效、可靠和简洁的特性,已经成为了构建分布式系统的一种首选语言。在本文中,我们将介绍Go语言的容器技术,以及如何使用这些技术将对象分布式地部...
    99+
    2023-06-27
    容器 对象 分布式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作