广告
返回顶部
首页 > 资讯 > 数据库 >Mongodb 分片集群部署
  • 615
分享到

Mongodb 分片集群部署

2024-04-02 19:04:59 615人浏览 泡泡鱼
摘要

Mongodb分片集群介绍       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功

Mongodb分片集群介绍

       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。通过一个名为monGos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器)。大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差,查询则尽量避免跨分片查询。使用分片的时机:
1,机器的磁盘不够用了。使用分片解决磁盘空间的问题。
2,单个mongod已经不能满足写数据的性能要求。通过分片让写压力分散到各个分片上面,使用分片服务器自身的资源。
3,想把大量数据放到内存里提高性能。和上面一样,通过分片使用分片服务器自身的资源。

服务器规划

Mongodb 分片集群部署

下载 Mongodb

https://www.mongoDB.com/download-center/commUnity

Mongodb 分片集群部署Mongodb 分片集群部署

wget -c Https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.8.tgz

解压包 Mongodb 包

tar -zxvf mongodb-linux-x86_64-rhel70-4.0.7.tgz -C /usr/local/mongodb

添加环境变量

export MONGO_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGO_HOME/bin

集群准备

新建 Mongodb 需要的目录

在192.168.2.177服务器上操作,以下配置操作均在192.168.2.177上进行

mkdir -p /wdata/mongodb/{data,logs,config,keys}
mkdir -p /wdata/mongodb/data/{mongosrv,shard1}

将新建的目录发送到另外两台服务器

for i in 178 180; do scp -r /wdata/mongodb root@192.168.2.$i; done

生成分片集群的key文件

openssl rand -base64 90 -out /wdata/mongodb/keys/keyfile

修改key文件属性

chmod 600 /wdata/mongodb/keys/keyfile

注意:此处必须修改,否则可能报错

编辑 mongos.conf 文件

systemLog:
 destination: file
#日志存储位置
 path: /wdata/mongodb/logs/mongos.log
 logAppend: true
proceSSManagement:
 #fork and run in background
 fork: true
 pidFilePath: /wdata/mongodb/data/mongos.pid
#端口配置
net:
 port: 30000
 maxIncominGConnections: 500
  unixDomainSocket:
    enabled: true
    #pathPrefix: /tmp
    filePermissions: 0700
  bindIp: 0.0.0.0
security:
  keyFile: /wdata/mongodb/keys/keyfile
#将 confige server 添加到路由
sharding:
  configDB: configs/192.168.2.177:21000,192.168.2.178:21000,192.168.2.180:21000

编辑 mongosrv1.conf 文件

systemLog:
  destination: file
  logAppend: true
  path: /wdata/mongodb/logs/mongosrv.log
  
storage:
  dbPath: /wdata/mongodb/data/mongosrv
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      directoryForIndexes: true
      
processManagement:
# fork and run in background
  fork: true
# location of pidfile
  pidFilePath: /wdata/mongodb/data/mongosrv/mongosrv.pid
  
net:
  port: 21000
  #bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  bindIpAll: true
  maxIncomingConnections: 65535
  unixDomainSocket:
    enabled: true
    filePermissions: 0700
    
security:
  keyFile: /wdata/mongodb/keys/keyfile
  authorization: enabled
  
replication:
  replSetName: configs
sharding:
  clusterRole: configsvr

说明:该文件在此环境需要3个,分布在3台服务器,这里仅配置1个

编辑 shard1.conf 文件

systemLog:
  destination: file
  logAppend: true
  path: /wdata/mongodb/logs/shard1.log
  
storage:
  dbPath: /wdata/mongodb/data/shard1
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      directoryForIndexes: true
      
processManagement:
# fork and run in background
  fork: true  
  pidFilePath:  /wdata/mongodb/data/mongosrv/mongosrv.pid  # location of pidfile
# timeZoneInfo: /usr/share/zoneinfo

net:
  port: 27001
  # bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  bindIpAll: true
  maxIncomingConnections: 65535
  unixDomainSocket:
    enabled: true
    # pathPrefix: /tmp/mongod1
    filePermissions: 0700
    
security:
  keyFile: /wdata/mongodb/keys/keyfile
  authorization: enabled
  
replication:
  replSetName: shard1
sharding:
  clusterRole: shardsvr

说明:shard在一台服务器上也可以配置多个,建不同的目录充当分片服务器,看需求而定

将配置文件到其他两台服务器

for i in 178 180; do scp -r /wdata/mongodb/config root@192.168.2.$i:/wdata/mongodb/; done

启动集群

在192.168.1.177上启动
mongod -f /wdata/mongodb/config/mongosrv1.conf
mongod -f /wdata/mongodb/config/shard1.conf
mongos  -f  /wdata/mongodb/config/mongos.conf
在192.168.1.178上启动
mongod  -f  /wdata/mongodb/config/mongosrv1.conf
mongod -f /wdata/mongodb/config/shard1.conf
mongos -f /wdata/mongodb/config/mongos.conf
在192.168.1.180上启动
mongod  -f  /wdata/mongodb/config/mongosrv1.conf
mongod -f /wdata/mongodb/config/shard1.conf
mongos -f /wdata/mongodb/config/mongos.conf

分片集群创建副本集

在192.168.2.177上操作

[root@localhost mongodb]# mongo --port 27001
MongoDB shell version v4.0.7
connecting to: mongodb://127.0.0.1:27001/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b56157d2-fbc7-4226-aeb4-4de0b79dfcda") }
MongoDB server version: 4.0.7
> use admin
switched to db admin
> config = {_id: 'shard1', members: [{_id: 0, host: '192.168.2.177:27001'},{_id: 1, host: '192.168.2.178:27001'},{_id: 2, host:'192.168.2.180:27001'}]}
{
"_id" : "shard1",
"members" : [
{
"_id" : 0,
"host" : "192.168.2.177:27001"
},
{
"_id" : 1,
"host" : "192.168.2.178:27001"
},
{
"_id" : 2,
"host" : "192.168.2.180:27001"
}
]
}
> rs.initiate(config)
{ "ok" : 1 }
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-04-03T10:08:16.477Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
}
},
"lastStableCheckpointTimestamp" : Timestamp(1554286040, 2),
"members" : [
{
"_id" : 0,
"name" : "192.168.2.177:27001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2657,
"optime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:08:10Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1554286040, 1),
"electionDate" : ISODate("2019-04-03T10:07:20Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "192.168.2.178:27001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 67,
"optime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:08:10Z"),
"optimeDurableDate" : ISODate("2019-04-03T10:08:10Z"),
"lastHeartbeat" : ISODate("2019-04-03T10:08:16.259Z"),
"lastHeartbeatRecv" : ISODate("2019-04-03T10:08:15.440Z"),
"pingMs" : NumberLong(6),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.2.177:27001",
"syncSourceHost" : "192.168.2.177:27001",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.168.2.180:27001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 67,
"optime" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1554286090, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:08:10Z"),
"optimeDurableDate" : ISODate("2019-04-03T10:08:10Z"),
"lastHeartbeat" : ISODate("2019-04-03T10:08:16.219Z"),
"lastHeartbeatRecv" : ISODate("2019-04-03T10:08:15.440Z"),
"pingMs" : NumberLong(4),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.2.177:27001",
"syncSourceHost" : "192.168.2.177:27001",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
}
],
"ok" : 1
}
shard1:PRIMARY> exit
bye

创建分片集群数据库和用户

[root@localhost mongodb]# mongo --port 27001
MongoDB shell version v4.0.7
connecting to: mongodb://127.0.0.1:27001/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a4c12af4-85e2-49e3-9a02-dd481307bcda") }
MongoDB server version: 4.0.7
shard1:PRIMARY> use admin
switched to db admin
shard1:PRIMARY> db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
shard1:PRIMARY> db.auth("admin","123456")
1
shard1:PRIMARY> use test
switched to db test
shard1:PRIMARY> db.createUser({user:"root",pwd:"123456",roles:[{role:"dbOwner",db:"test"}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "dbOwner",
"db" : "test"
}
]
}
shard1:PRIMARY> exit
bye

配置 mongosrv 副本集

[root@localhost config]# mongo --port 21000
MongoDB shell version v4.0.7
connecting to: mongodb://127.0.0.1:21000/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f9896034-d90f-4d52-bc55-51c3Dc85aae9") }
MongoDB server version: 4.0.7
> config = {_id: 'configs', members: [{_id: 0, host: '192.168.2.177:21000'},{_id: 1, host: '192.168.2.178:21000'},{_id: 2, host: '192.168.2.180:21000'}]}
{
"_id" : "configs",
"members" : [
{
"_id" : 0,
"host" : "192.168.2.177:21000"
},
{
"_id" : 1,
"host" : "192.168.2.178:21000"
},
{
"_id" : 2,
"host" : "192.168.2.180:21000"
}
]
}
> rs.initiate(config)
{
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(1554288851, 1),
"electionId" : ObjectId("000000000000000000000000")
},
"lastCommittedOpTime" : Timestamp(0, 0)
}
configs:SECONDARY> rs.status(config)
{
"set" : "configs",
"date" : ISODate("2019-04-03T10:54:43.283Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"configsvr" : true,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
}
},
"lastStableCheckpointTimestamp" : Timestamp(1554288864, 1),
"members" : [
{
"_id" : 0,
"name" : "192.168.2.177:21000",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 5454,
"optime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:54:39Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1554288863, 1),
"electionDate" : ISODate("2019-04-03T10:54:23Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "192.168.2.178:21000",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 31,
"optime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:54:39Z"),
"optimeDurableDate" : ISODate("2019-04-03T10:54:39Z"),
"lastHeartbeat" : ISODate("2019-04-03T10:54:41.362Z"),
"lastHeartbeatRecv" : ISODate("2019-04-03T10:54:41.906Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.2.177:21000",
"syncSourceHost" : "192.168.2.177:21000",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.168.2.180:21000",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 31,
"optime" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1554288879, 4),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2019-04-03T10:54:39Z"),
"optimeDurableDate" : ISODate("2019-04-03T10:54:39Z"),
"lastHeartbeat" : ISODate("2019-04-03T10:54:41.362Z"),
"lastHeartbeatRecv" : ISODate("2019-04-03T10:54:41.597Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.2.177:21000",
"syncSourceHost" : "192.168.2.177:21000",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
}
],
"ok" : 1,
"operationTime" : Timestamp(1554288879, 4),
"$gleStats" : {
"lastOpTime" : Timestamp(1554288851, 1),
"electionId" : ObjectId("7fffffff0000000000000001")
},
"lastCommittedOpTime" : Timestamp(1554288879, 4),
"$clusterTime" : {
"clusterTime" : Timestamp(1554288879, 4),
"signature" : {
"hash" : BinData(0,"VVM2Bsa9KiZy8Sew9Oa8CsbDBPU="),
"keyId" : NumberLong("6675619852301893642")
}
}
}
configs:PRIMARY>

到此mongodb分片集群部署完成后,后面附上 Mongodb 常见操作指令

show dbs                  #查看所有数据库
db                        #查看当前所在的数据库
sh.status()             #查看集群的信息
sh.enableSharding("dba")  #对数据库启用分片
db.help()                 #查看帮助
db.account.stats()        #查看数据集合的分布情况
db.createUser()           #新建用户
use databasename          #进入或者新建数据库
db.shutdownServer()       #关闭数据库
db.dropDatabase()         #删除数据库(必须先切换到该数据库)


您可能感兴趣的文档:

--结束END--

本文标题: Mongodb 分片集群部署

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

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

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

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

下载Word文档
猜你喜欢
  • Mongodb 分片集群部署
    Mongodb分片集群介绍       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功...
    99+
    2022-10-18
  • MongoDB分片集群部署
    一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明2、各个角色的部署情况...
    99+
    2022-10-18
  • MongoDB分片集群部署详解
     一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明 2、各...
    99+
    2022-10-18
  • 在CentOS7上部署MongoDB分片群集
    概述 MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接...
    99+
    2022-10-18
  • Redis集群分片环境部署
    原理 集群技术是构建高并发网站的主要技术,访问网站的最大压力是在访问某个页面时,需要时查询数据库并相应,Redis从3.0版本以后开始支持集群功能了,要让集群正常工作至少得有三个主节点。Redis集群是基于...
    99+
    2022-10-18
  • MongoDB分布式集群分片
    MongoDB高可用集群搭建 一、环境准备 # 启动时需要使用非root用户,所有创建一个mongo用户: useradd mongo # 为mongo用户添加密码: echo 123456 | pass...
    99+
    2022-10-18
  • mongodb 分片集群搭建
    环境介绍:...
    99+
    2022-10-18
  • CentOS7上的mongodb分片群集
    CentOS7的mongodb分片群集 简介 高数据量和吞吐量的数据库应用会对单机的性能造成较大的压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁...
    99+
    2022-10-18
  • 2.MongoDB Sharding Cluster分片集群
    原文:https://www.cnblogs.com/fengyuanfei/p/14495513.html...
    99+
    2018-07-08
    2.MongoDB Sharding Cluster分片集群 数据库入门 数据库基础教程
  • mongodb分片集群怎么搭建
    要搭建一个MongoDB分片集群,您需要遵循以下步骤: 安装MongoDB:在每个节点上安装MongoDB。您可以从MongoD...
    99+
    2023-10-26
    mongodb
  • DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)
    DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)   第一章:逻辑结构 Mongodb 逻辑结构...
    99+
    2015-02-25
    DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)
  • mongodb 中怎么利用分片集群创建分片集合
    mongodb 中怎么利用分片集群创建分片集合,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.创建数据库,直接use 即可,没有的话,如果你...
    99+
    2022-10-18
  • 搭建高可用MongoDB集群(分片)
    MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423MongoDB(replica set)请参考:https://blog.51cto.com/kali...
    99+
    2022-10-18
  • mongodb+分片集群+ycsb测试一例
    简介mongodb是很出名的nosql数据库了,属于集合-文档型的特有架构nosql数据库,也是被誉为最像关系型数据库的非关系型数据库,但是不支持事务.由于mongodb原生就支持分布式架构,所以部署简单,...
    99+
    2022-10-18
  • MongoDB 3 分片集群安装配置
    操作系统:CentOS 6   x86_64MongoDB版本:3.4.3集群主机拓扑:主机mongo shardsvr & ReplSetNamemongo configsvr ...
    99+
    2022-10-18
  • MongoDB中怎么搭建分片集群
    本篇文章为大家展示了MongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB分片集群基本组件介绍mongos:数据库集群请求的入...
    99+
    2022-10-18
  • mongodb 中怎么设置分片集群
    今天就跟大家聊聊有关mongodb 中怎么设置分片集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、先enable sharding,开启数据库...
    99+
    2022-10-18
  • elasticsearch 集群部署
    Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也都采用...
    99+
    2022-10-18
  • docker集群部署:第3部分:服务
    docker集群部署:第3部分:服务 介绍在第3部分中,我们将扩展应用程序并实现负载平衡。 关于服务在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务,后面的...
    99+
    2023-01-31
    集群 docker
  • 在企业的生产环境中部署Reids分片集群
    1、环境说明    在此文章中不对redis做详细介绍,如果对redis不太了解的朋友可以参考此链接 http://www.runoob.com/redis/redis-tutorial...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作