广告
返回顶部
首页 > 资讯 > 数据库 >mongodb中怎么搭建shard_replica集群
  • 274
分享到

mongodb中怎么搭建shard_replica集群

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

本篇文章为大家展示了mongoDB中怎么搭建shard_replica集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。参考官方文档,大致步骤第一步:创建Confi

本篇文章为大家展示了mongoDB中怎么搭建shard_replica集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

参考官方文档,大致步骤

第一步:创建Config Server实例,配置Config Server实例成Replica Set

第二步:创建Shard Server实例,配置Shard Server实例成Replica Set

第三步:创建Route Server实例,把Config Server实例和Shard Server实例配置进来

第四步:创建数据库并执行db.printShardingStatus()命令验证

涉及replSet、shardsvr、configsvr几个参数

replSet:配置replica set,replica set中的所有主机必须具有相同的replica set名称。

shardsvr:将此monGod实例配置为分片集群中的分片。默认端口是27018。

configsvr:声明此mongod实例作为分片集群的配置服务器。默认端口是27019,默认的dbpath目录是/data/configdb,配置服务器存储集群的元数据和配置设置。从MongoDB 3.4开始,配置服务器必须部署为一个replicate set副本集,为了防止这个配置服务是单点服务。如果你的集群只有一个配置服务器,一旦这个配置服务器出现故障则集群将不可用

涉及Config Server、Shard Server、Route Server几个实例

1. Config Server: mongod实例,存储了整个Cluster Metadata,其中包括Chunk信息。

2. Shard Server: mongod实例,用于存储实际的数据块,实际生产环境中一个Shard Server角色可由几台机器组个一个Replica Set承担,防止主机单点故障。

3. Route Server: mongos实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

部署规划

2台物理设备服务器,ip分别为172.22.138.157、172.22.138.158

两台服务器上分别创建端口是29001的Config Server实例,这两台服务器上的Config Server实例组成Replica Set模式

两台服务器上分别创建端口分别是28001、28002、28003的shard server实例,两台服务器上相同端口的shard server实例组成Replica Set模式

两台服务器上分别创建端口是27001的Route Server实例

部署架构

外部程序-->Route Server实例-->Config Server实例-->shard server实例

Route Server实例不是单点,两台服务器上都有,配置都是一样,都是指向一样的Config Server实例

Config Server实例不是单点,是Replica Set模式

shard server实例不是单点,是Replica Set模式

第一步:

创建Config Server实例,配置Config Server实例成Replica Set

1.1、在两台服务器上分别编辑如下文件(两个重点参数configsvr、replSet)

cat /mongodb/configsvr29001.conf

port=29001

dbpath=/mongodb/mongoconfig29001

logpath=/mongodb/log/mongoconfig29001.log

configsvr=true

replSet=config29001

fork=true

logappend=true

directoryperdb=true

bind_ip=0.0.0.0

pidfilepath=/mongodb/mongoconfig29001.pid

1.2、两台服务器上分别启动Config Server实例

mongod -f /mongodb/configsvr29001.conf

1.3、配置两台服务器的Config Server实例成Replica Set

     登录任意一台服务器执行如下操作即可

mongo --host 172.22.138.157 --port 29001

rs.initiate(

  {

    _id: "config29001",

    configsvr: true,

    members: [

      { _id : 0, host : "172.22.138.157:29001" },

      { _id : 1, host : "172.22.138.158:29001" }

    ]

  }

)

第二步

创建Shard Server实例,配置Shard Server实例成Replica Set

2.1、在两台服务器上分别编辑如下三个文件(两个重点参数shardsvr、replSet)

cat /mongodb/shardsvr28001.conf

port=28001

dbpath=/mongodb/mongoshard28001

logpath=/mongodb/log/mongoshard28001.log

shardsvr=true

replSet=shard28001

fork=true

logappend=true

directoryperdb=true

verbose=true

bind_ip=0.0.0.0

pidfilepath=/mongodb/mongoshard28001.pid

cat /mongodb/shardsvr28002.conf

port=28002

dbpath=/mongodb/mongoshard28002

logpath=/mongodb/log/mongoshard28002.log

shardsvr=true

replSet=shard28002

fork=true

logappend=true

directoryperdb=true

verbose=true

bind_ip=0.0.0.0

pidfilepath=/mongodb/mongoshard28002.pid

cat /mongodb/shardsvr28003.conf

port=28003

dbpath=/mongodb/mongoshard28003

logpath=/mongodb/log/mongoshard28003.log

shardsvr=true

replSet=shard28003

fork=true

logappend=true

directoryperdb=true

verbose=true

bind_ip=0.0.0.0

pidfilepath=/mongodb/mongoshard28003.pid

2.2、两台服务器上分别启动Shard Server实例

mongod -f /mongodb/shardsvr28001.conf

mongod -f /mongodb/shardsvr28002.conf

mongod -f /mongodb/shardsvr28003.conf

2.3、配置两台服务器的3个Shard Server实例成Replica Set

     登录任意一台服务器执行如下操作即可

mongo --host 172.22.138.157 --port 28001

rs.initiate(

  {

    _id: "shard28001",

    members: [

      { _id : 0, host : "172.22.138.157:28001" },

      { _id : 1, host : "172.22.138.158:28001" }

    ]

  }

)

mongo --host 172.22.138.157 --port 28002

rs.initiate(

  {

    _id: "shard28002",

    members: [

      { _id : 0, host : "172.22.138.157:28002" },

      { _id : 1, host : "172.22.138.158:28002" }

    ]

  }

)

mongo --host 172.22.138.157 --port 28003

rs.initiate(

  {

    _id: "shard28003",

    members: [

      { _id : 0, host : "172.22.138.157:28003" },

      { _id : 1, host : "172.22.138.158:28003" }

    ]

  }

)

第三步

创建Route Server实例

3.1、在两台服务器上分别编辑如下文件(重点参数configdb,把上面第一步的Config Server实例配置进来)

cat /mongodb/Routesvr27001.conf

port=27001

logpath=/mongodb/log/mongoRoute27001.log

configdb=config29001/172.22.138.157:29001,172.22.138.158:29001

fork=true

bind_ip=0.0.0.0

pidfilepath=/mongodb/mongoRoute27001.pid

3.2、两台服务器上分别启动Config Server实例

mongos -f /mongodb/Routesvr27001.conf

3.3、添加shard分片到集群,把上面第二步的Shard Server实例配置进来

     登录任意一台服务器执行如下操作即可

mongo --host 172.22.138.157 --port 27001

sh.addShard( "shard28001/172.22.138.157:28001,172.22.138.158:28001")

sh.addShard( "shard28002/172.22.138.157:28002,172.22.138.158:28002")

sh.addShard( "shard28003/172.22.138.157:28003,172.22.138.158:28003")

第四步

验证

登录任意一台mongos实例,创建四个数据库

mongo --host 172.22.138.157 --port 27001

mongos> use TDB1

mongos> db.createCollection("test01")

mongos> db.test01.insert({hid:1,hname:"w001"})

mongos> use TDB2

mongos> db.createCollection("test02")

mongos> db.test02.insert({hid:11,hname:"x001"})

mongos> use TDB3

mongos> db.createCollection("test03")

mongos> db.test03.insert({hid:111,hname:"y001"})

mongos> use TDB4

mongos> db.createCollection("test04")

mongos> db.test04.insert({hid:1111,hname:"z001"})

连接任意一台mongos实例,都可以看到这四个数据库,执行db.printShardingStatus()看到四个数据库被分到了不同的shard上了,TDB1分到了shard28001上,TDB2\TDB3分到了shard28002上,TDB4分到了shard28003上,登录mongod实例shard集群分片28001端口只看到TDB1数据库,登录mongod实例集群分片28002端口只看到TDB2、TDB3数据库,登录mongod实例集群分片28003端口只看到TDB4数据库,通过mongos,用户看到所有数据库,底下的shard server对用户而言是可以不用了解的

mongo --host 172.22.138.158 --port 27001

mongos> show dbs

TDB1    0.000GB

TDB2    0.000GB

TDB3    0.000GB

TDB4    0.000GB

admin   0.000GB

config  0.001GB

mongos> db.printShardingStatus()

--- Sharding Status ---

  sharding version: {

        "_id" : 1,

        "minCompatibleVersion" : 5,

        "currentVersion" : 6,

        "clusterId" : ObjectId("5d09cd1c38fe676e9fb94a92")

  }

  shards:

        {  "_id" : "shard28001",  "host" : "shard28001/172.22.138.157:28001,172.22.138.158:28001",  "state" : 1 }

        {  "_id" : "shard28002",  "host" : "shard28002/172.22.138.157:28002,172.22.138.158:28002",  "state" : 1 }

        {  "_id" : "shard28003",  "host" : "shard28003/172.22.138.157:28003,172.22.138.158:28003",  "state" : 1 }

  active mongoses:

        "3.6.12" : 2

  autosplit:

        Currently enabled: yes

  balancer:

        Currently enabled:  yes

        Currently running:  no

        Failed balancer rounds in last 5 attempts:  0

        Migration Results for the last 24 hours:

                No recent migrations

  databases:

        {  "_id" : "TDB1",  "primary" : "shard28001",  "partitioned" : false }

        {  "_id" : "TDB2",  "primary" : "shard28002",  "partitioned" : false }

        {  "_id" : "TDB3",  "primary" : "shard28002",  "partitioned" : false }

        {  "_id" : "TDB4",  "primary" : "shard28003",  "partitioned" : false }

        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }

                config.system.sessions

                        shard key: { "_id" : 1 }

                        unique: false

                        balancing: true

                        chunks:

                                shard28001      1

                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard28001 Timestamp(1, 0)

mongo --host 172.22.138.157 --port 28001

shard28001:PRIMARY> show dbs

TDB1    0.000GB

admin   0.000GB

config  0.000GB

local   0.000GB

mongo --host 172.22.138.157 --port 28002

shard28002:PRIMARY> show dbs

TDB2    0.000GB

TDB3    0.000GB

admin   0.000GB

config  0.000GB

local   0.000GB

mongo --host 172.22.138.157 --port 28003

shard28003:PRIMARY> show dbs

TDB4    0.000GB

admin   0.000GB

config  0.000GB

local   0.000GB

第五步

如果想对某个数据库里面的表分片存储,即A表一部分放入shared1,一部分放入shard2,就需要先使用sh.enableSharding("db_name")对这个数据库启用分片,数据库启用分片后,上面第四步验证结果"partitioned" : false就变成了"partitioned" : true。如果该表已包含数据,则必须在使用shardCollection()对表分片之前使用db.collection.createIndex()方法在分片键上创建索引。如果表为空,MongoDB将创建索引作为shardCollection()的一部分。

mongo --host 172.22.138.158 --port 27001

mongos> use testdb

mongos> db.createCollection("table1")

mongos> db.printShardingStatus() --此时testdb对应的数据库"partitioned" : false

mongos> sh.enableSharding("testdb")

mongos> db.printShardingStatus() --此时testdb对应的数据库"partitioned" : true

对表testdb.table1按age字段范围分片(代号为1),指定散列分片键对空集合进行分片时最初要创建的块数为5

mongos> sh.shardCollection("testdb.table1",{age:1},{numInitialChunks:5})

mongos> for (var i=0;i<150000;i++) db.table1.save({name:"u_"+i,age:0+i,sex:i%2,class:"number2",grade:"number3",birthd:"shanghai",motk:"shanghai",controyload:"chian",birthn:3030303030303030303,horbity:"footboll"})

对表testdb.table2按age字段范围分片(代号为1),指定散列分片键对空集合进行分片时最初要创建的块数为1

mongos> db.createCollection("table2")

mongos> sh.shardCollection("testdb.table2",{age:1},{numInitialChunks:1})

mongos> for (var i=0;i<100000;i++) db.table2.save({name:"u_"+i,age:0+i,sex:i%2,class:"number2",grade:"number3",birthd:"shanghai",motk:"shanghai",controyload:"chian",birthn:3030303030303030303,horbity:"footboll"})

对表testdb.table3按age字段范围分片(代号为hashed),指定散列分片键对空集合进行分片时最初要创建的块数为1

mongos> db.createCollection("table3")

mongos> sh.shardCollection("testdb.table2",{age:"hashed"},{numInitialChunks:1})

mongos> for (var i=0;i<100000;i++) db.table3.save({name:"u_"+i,age:0+i,sex:i%2,class:"number2",grade:"number3",birthd:"shanghai",motk:"shanghai",controyload:"chian",birthn:3030303030303030303,horbity:"footboll"})

上述内容就是mongodb中怎么搭建shard_replica集群,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mongodb中怎么搭建shard_replica集群

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

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

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

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

下载Word文档
猜你喜欢
  • mongodb中怎么搭建shard_replica集群
    本篇文章为大家展示了mongodb中怎么搭建shard_replica集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。参考官方文档,大致步骤第一步:创建Confi...
    99+
    2022-10-18
  • mongodb集群搭建
    mongodb集群搭建 小码农叔叔 2019-06-17 22:51:33 4086 收藏 7 分类专栏: mongodb 版权 集群方式有三种:Replica Set、Sharding、Master-Slaver三种方式 常用的主要是副...
    99+
    2014-09-28
    mongodb集群搭建
  • MongoDB中怎么搭建分片集群
    本篇文章为大家展示了MongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB分片集群基本组件介绍mongos:数据库集群请求的入...
    99+
    2022-10-18
  • mongodb分片集群怎么搭建
    要搭建一个MongoDB分片集群,您需要遵循以下步骤: 安装MongoDB:在每个节点上安装MongoDB。您可以从MongoD...
    99+
    2023-10-26
    mongodb
  • mongodb 分片集群搭建
    环境介绍:...
    99+
    2022-10-18
  • MongoDB高可用集群搭建
    MongoDB高可用集群搭建   MongoDB副本集搭建 准备三台服务器:   10.175.120.131(主节点)   10.175.121.134(副本节点)   10.175...
    99+
    2015-11-17
    MongoDB高可用集群搭建
  • MongoDB搭建集群的方法
    小编给大家分享一下MongoDB搭建集群的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么使用集群架构?主从:故障转移:...
    99+
    2022-10-18
  • mongodb linux下集群搭建过程
    mongodb的集群结构如上图 网上有个mongo3.0的集群例子: https://www.jb51.net/article/191388.htm router提供入口,mong...
    99+
    2022-11-13
  • mongodb集群搭建的步骤是什么
    搭建MongoDB集群的步骤如下: 安装MongoDB:在每个节点上安装MongoDB并确保其正常运行。 配置MongoDB...
    99+
    2023-10-26
    mongodb
  • mongodb集群搭建的方法是什么
    搭建MongoDB集群有多种方法,以下是其中一种常用的方法:1. 安装MongoDB:首先需要在每个集群节点上安装MongoDB数据...
    99+
    2023-09-06
    mongodb
  • 搭建高可用MongoDB集群(分片)
    MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423MongoDB(replica set)请参考:https://blog.51cto.com/kali...
    99+
    2022-10-18
  • Kubernetes集群怎么搭建
    本篇内容介绍了“Kubernetes集群怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kubernetes 是一个可移植的、可扩展的...
    99+
    2023-06-27
  • MongoDB搭建高可用集群的案例
    小编给大家分享一下MongoDB搭建高可用集群的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、规划好端口ip ...
    99+
    2022-10-18
  • centos6.9怎么搭建pxc集群
    这篇文章主要讲解了“centos6.9怎么搭建pxc集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“centos6.9怎么搭建pxc集群”吧!一:环境介绍:1.32.49 1.3...
    99+
    2023-06-05
  • docker怎么搭建redis集群
    要搭建Redis集群,可以使用Docker来简化部署过程。下面是一些搭建Redis集群的步骤: 首先,确保已经安装了Docker...
    99+
    2023-10-26
    docker redis
  • docker mysql集群怎么搭建
    要搭建Docker MySQL集群,可以按照以下步骤进行操作: 安装Docker:在每个节点上安装Docker引擎。 创建D...
    99+
    2023-10-27
    docker mysql
  • Ubuntu怎么搭建Kubernetes集群
    这篇文章主要介绍“Ubuntu怎么搭建Kubernetes集群”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Ubuntu怎么搭建Kubernetes集群”文章能帮助大家解决问题。关于 Kuberne...
    99+
    2023-07-04
  • 怎么在MySQL中搭建PXC集群
    本篇文章给大家分享的是有关怎么在MySQL中搭建PXC集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、PXC 介绍1.1 PXC 简介PXC 是一套 MySQL 高可用集...
    99+
    2023-06-15
  • mongodb怎么使用docker搭建replicaSet集群与变更监听
    这篇文章主要介绍“mongodb怎么使用docker搭建replicaSet集群与变更监听”,在日常操作中,相信很多人在mongodb怎么使用docker搭建replicaSet集群与变更监听问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-07-05
  • 怎么用docker搭建elasticsearch集群
    本篇内容主要讲解“怎么用docker搭建elasticsearch集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用docker搭建elasticsearch集群”吧!概述用docker进...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作