首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Mongodb7.0.14集群分片部署

Mongodb7.0.14集群分片部署

作者头像
DBA实战
发布于 2024-10-10 11:26:09
发布于 2024-10-10 11:26:09
37000
代码可运行
举报
文章被收录于专栏:DBA实战DBA实战
运行总次数:0
代码可运行

概述

MongoDB 集群分片是一种水平扩展数据库的方法,通过将数据分布在多个物理服务器上,提高系统的性能和可扩展性。分片的核心思想是将数据分成多个部分(称为“分片”),每个分片存储在不同的服务器上,从而分散负载,提高查询和写入性能。

使用场景

  1. 大规模数据存储:当单个 MongoDB 实例无法处理大量数据时,可以使用分片来分布数据,提高存储容量。
  2. 高并发访问:在高并发读写场景下,分片可以分散负载,提高系统的响应速度和吞吐量。
  3. 地理分布:当数据需要在全球范围内访问时,分片可以将数据分布到不同的地理位置,减少网络延迟
  4. 实时分析:在需要实时处理大量数据的场景下,分片可以提高查询性能,支持实时分析和报表生成。

优缺点

优点

  1. 高可扩展性:通过增加更多的分片服务器,可以轻松扩展存储和计算能力。
  2. 高可用性:每个分片可以配置为副本集,提供数据冗余和故障恢复能力。
  3. 负载均衡:数据和查询负载可以均匀分布在多个分片上,提高整体性能。
  4. 灵活的数据分布:可以根据业务需求选择合适的分片键,优化数据分布和查询性能。

缺点

  1. 复杂性:分片架构比单实例架构更复杂,需要更多的管理和维护工作。
  2. 配置和管理成本:需要配置路由服务器、配置服务器和分片服务器,增加了初始设置和运维成本。
  3. 数据迁移:在分片键选择不当或数据增长过快时,可能需要重新平衡数据,导致额外的开销。
  4. 查询性能:跨分片的聚合查询和联合查询可能会影响性能,需要优化查询策略。

节点作用

  1. mongos(路由服务器)
  • 作用:作为客户端应用程序和分片集群之间的接口,负责路由查询和写入操作到正确的分片。
  • 特点:无状态,可以横向扩展,提高系统的并发处理能力。
  1. shard(分片服务器)
  • 作用:存储实际的数据,每个分片可以是一个独立的 MongoDB 实例或副本集。
  • 特点:数据分布在多个分片上,每个分片负责一部分数据,提高存储和查询性能。
  1. config server(配置服务器)
  • 作用:存储集群的元数据信息,如分片键、分片分布、路由信息等。
  • 特点:通常使用副本集形式部署,确保高可用性和数据冗余。

下载地址

MongoDB Community Downloads | MongoDB

配置hosts解下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/hosts
10.10.10.21 mon1
10.10.10.22 mon2
10.10.10.23 mon3

集群规划

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10.10.10.21 mon1:mongos(30000)\config(27017-主)\shard1(40001-主)\shard2(40002-从)\shard3(40003-从)
10.10.10.22 mon2:mongos(30000)\config(27017-从)\shard1(40001-从)\shard2(40002-主)\shard3(40003-从)
10.10.10.23 mon3:mongos(30000)\config(27017-从)\shard1(40001-从)\shard2(40002-从)\shard3(40003-主)

3台机,每台机5个组件,分别mongos 1 个,config server 1 个,shard server 3

部署

解压(三台机器)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongosh:
wget https://downloads.mongodb.com/compass/mongosh-2.3.1-linux-x64.tgz
tar xvf mongosh-2.3.1-linux-x64.tgz
mongodb:
tar xvf mongodb-linux-x86_64-rhel70-7.0.14.tgz
mv  mongodb-linux-x86_64-rhel70-7.0.14 mongodb

创建相关目录(三台机器)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@easyliao012 monogocluster]# mkdir -p /monogocluster/shard{1,2,3}/{config,log,data}
[root@easyliao012 monogocluster]#mkdir -p /monogocluster/mongos/{config,log,data}
[root@easyliao012 monogocluster]# mkdir -p /monogocluster/config/{config,log,data}

内存配置

shard 和 config 服务器的 WiredTiger 缓存大小的分配建议:

1. Shard 服务器的缓存大小分配:

对于每个 Shard 服务器,可以根据数据量和预计的工作负载来调整缓存大小。一般来说,将缓存大小设置为机器内存的 50%-75% 是比较常见的做法。

例如,如果你的Shard服务器有16GB的内存,可以将缓存大小设置为8GB-12GB,即 wiredTiger.engineConfig.cacheSizeGB:8

或者wiredTiger.engineConfig.cacheSizeGB:12。

这样可以让MongoDB利用一部分内存来缓存数据和索引,提高读取操作的性能

2. Config 服务器的缓存大小分配:

Config 服务器主要用于存储集群的元数据信息,相对来说对内存的需求较小。通常可以将缓存大小设置为机器内存的 25%-50%。

例如,如果你的 Config 服务器有 8GB 的内存,可以将缓存大小设置为 2GB - 4GB,即 wiredTiger.engineConfig.cacheSizeGB: 2

或者 wiredTiger.engineConfig.cacheSizeGB: 4。

需要注意的是,缓存大小的分配应该综合考虑系统内存大小、数据量、查询模式等因素,以达到最佳性能和资源利用的平衡点。

配置集群分片配置文件

配置文件config(三台机器)

vim /monogocluster/config/config/mongo-conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /monogocluster/config/log/mongodb.log # 日志文件路径     
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen

# 网络设置
net:
  port: 27017                     # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制

# 数据目录
storage:
  dbPath: /monogocluster/config/data          # 数据文件存放路径
  wiredTiger:
    engineConfig:
      cacheSizeGB: 3               # 根据情况配置内存  

# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /monogocluster/config/data/mongod.pid # PID 文件路径 

#复制集名称  
replication:
  replSetName: "mgconfig"

#作为配置服务  
sharding:
  clusterRole: configsvr

配置文件mongos(三台机器)

vim /monogocluster/mongos/config/mongo-conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /monogocluster/mongos/log/mongodb.log # 日志文件路径     
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen

# 网络设置
net:
  port: 30000                    # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制

# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /monogocluster/mongos/data/mongod.pid # PID 文件路径 

#网络延迟阈值  
replication:
  localPingThresholdMs: 15

#关联配置服务
sharding:
  configDB: mgconfig/mon1:27017,mon2:27017,mon3:27017

配置文件mongoshard1(三台机器)

vim /monogocluster/shard1/config/mongo-conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /monogocluster/shard1/log/mongodb.log # 日志文件路径     
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen

# 网络设置
net:
  port: 40001                     # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制

# 数据目录
storage:
  dbPath: /monogocluster/shard1/data          # 数据文件存放路径
  wiredTiger:
    engineConfig:
      cacheSizeGB: 7               # 根据情况配置内存 

# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /monogocluster/shard1/data/mongod.pid # PID 文件路径 

#复制集名称
replication:
  replSetName: "shard1"

#慢查询
operationProfiling:
  slowOpThresholdMs : 100
  mode: "slowOp"

#作为分片服务
sharding:
  clusterRole: shardsvr

配置文件mongoshard2(三台机器)

vim /monogocluster/shard2/config/mongo-conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /monogocluster/shard2/log/mongodb.log # 日志文件路径     
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen

# 网络设置
net:
  port: 40002                     # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制

# 数据目录
storage:
  dbPath: /monogocluster/shard2/data          # 数据文件存放路径
  wiredTiger:
    engineConfig:
      cacheSizeGB: 7               # 根据情况配置内存 

# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /monogocluster/shard2/data/mongod.pid # PID 文件路径 

#复制集名称
replication:
  replSetName: "shard2"

#慢查询
operationProfiling:
  slowOpThresholdMs : 100
  mode: "slowOp"

#作为分片服务
sharding:
  clusterRole: shardsvr

配置文件mongoshard3(三台机器)

vim /monogocluster/shard3/config/mongo-conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 日志设置
systemLog:
  destination: file                # 日志写入文件
  path: /monogocluster/shard3/log/mongodb.log # 日志文件路径     
  logAppend: true                  # 追加日志
  logRotate: rename                # 日志轮转方式,支持 rename 或 reopen

# 网络设置
net:
  port: 40003                     # MongoDB 默认端口
  bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制

# 数据目录
storage:
  dbPath: /monogocluster/shard3/data          # 数据文件存放路径
  wiredTiger:
    engineConfig:
      cacheSizeGB: 7               # 根据情况配置内存 

# 进程设置
processManagement:
  fork: true                       # 以后台进程方式运行
  pidFilePath: /monogocluster/shard3/data/mongod.pid # PID 文件路径 

#复制集名称
replication:
  replSetName: "shard3"

#慢查询
operationProfiling:
  slowOpThresholdMs : 100
  mode: "slowOp"

#作为分片服务
sharding:
  clusterRole: shardsvr

启动config服务并配置复制集(3台机器执行相同操作)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/opt/mongodb/bin/mongod --config /monogocluster/config/config/mongo-conf

连接一个config实例
mongosh mongodb://easyliao012:27017
初始化复制集
这个 mgconfig 名字一定要和config 配置文件中 replSet 的名字一致

config={_id:"mgconfig",members:[ 
{_id:0,host:"mon1:27017"}, 
{_id:1,host:"mon2:27017"}, 
{_id:2,host:"mon3:27017"}, 
]};

rs.initiate(config)
rs.status()

启动shard分片并配置副本集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---shard1
##启动
/opt/mongodb/bin/mongod --config /monogocluster/shard1/config/mongo-conf
##配置副本集
权重越高priority:3会被指定为主节点
连接任意一个shard1实例
[root@mysql1 bin]# mongosh mongodb://mon1:40001
创建复制集
use admin 

config={_id:"shard1",members:[ 
{_id:0,host:"mon1:40001",priority:3}, 
{_id:1,host:"mon2:40001",priority:1}, 
{_id:2,host:"mon3:40001",priority:1}, 
]}

rs.initiate(config)
rs.status()

--shard2
##启动
/opt/mongodb/bin/mongod --config /monogocluster/shard2/config/mongo-conf
##配置副本集
连接任意一个shard2实例
[root@mysql1 bin]# mongosh mongodb://mon2:40002
创建复制集
use admin 

config={_id:"shard2",members:[ 
{_id:0,host:"mon1:40002",priority:1}, 
{_id:1,host:"mon2:40002",priority:3}, 
{_id:2,host:"mon3:40002",priority:1}, 
]}

rs.initiate(config)
rs.status()

---shard3
##启动
/opt/mongodb/bin/mongod --config /monogocluster/shard3/config/mongo-conf
##配置副本集
连接任意一个shard3实例
[root@mysql1 bin]# mongosh mongodb://mon3:40003
创建复制集
use admin 

config={_id:"shard3",members:[ 
{_id:0,host:"mon1:40003",priority:1}, 
{_id:1,host:"mon2:40003",priority:1}, 
{_id:2,host:"mon3:40003",priority:3}, 
]};

rs.initiate(config)
rs.status()

启动mongos并添加分片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##启动
 /opt/mongodb/bin/mongos --config /monogocluster/mongos/config/mongo-conf 

##登陆路由节点
mongosh mongodb://mon1:30000
use admin
##添加分片
sh.addShard("shard1/mon1:40001,mon2:40001,mon3:40001") 
sh.addShard("shard2/mon1:40002,mon2:40002,mon3:40002")
sh.addShard("shard3/mon1:40003,mon2:40003,mon3:40003")
##查看状态
[direct: mongos] admin> sh.status();
shardingVersion
{ _id: 1, clusterId: ObjectId("66f50c31e8f91dc6de9b9770") }
---
shards
[
  {
    _id: 'shard1',
    host: 'shard1/mon1:40001,mon2:40001,mon3:40001',
    state: 1,
    topologyTime: Timestamp({ t: 1727338491, i: 3 })
  },
  {
    _id: 'shard2',
    host: 'shard2/mon1:40002,mon2:40002,mon3:40002',
    state: 1,
    topologyTime: Timestamp({ t: 1727338512, i: 1 })
  },
  {
    _id: 'shard3',
    host: 'shard3/mon1:40003,mon2:40003,mon3:40003',
    state: 1,
    topologyTime: Timestamp({ t: 1727338518, i: 3 })
  }
]
---
active mongoses
[ { '7.0.14': 3 } ]
---
autosplit
{ 'Currently enabled': 'yes' }
---
balancer
{ 'Currently enabled': 'yes', 'Currently running': 'no' }
---
databases
[
  {
    database: { _id: 'config', primary: 'config', partitioned: true },
    collections: {}
  }
]

创建账户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##在mongos创建一个管理员账户用于数据库操作,
mongosh mongodb://mon1:30000
mongos>use admin
mongos>db.createUser({user:"root",pwd:"sdhjfREWFWEF23e",roles:["root"]})
mongos>db.auth("root","sdhjfREWFWEF23e") 

##在shard1、shard2、shard3分别创建副本集管理员账户,每个分片都要创建主节点上
mongosh mongodb://mon1:40001
mongosh mongodb://mon2:40002
mongosh mongodb://mon3:40003
mongos>use admin
mongos>db.createUser({user:"root",pwd:"sdhjfREWFWEF23e",roles:["root"]})
mongos>db.auth("root","sdhjfREWFWEF23e")

安全认证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##创建秘钥文件
openssl rand -base64 753 >/monogocluster/config/mongo-keyfile
#将主节点生成的mongo-keyfile文件拷贝到其他服务器目录,注意权限
chmod 600 /monogocluster/config/mongo-keyfile
##拷贝秘钥
root@mysql1 bin]# scp keyFile.key mongodb@mon2:/monogocluster/config/
root@mysql1 bin]# scp keyFile.key mongodb@mon3:/monogocluster/config/
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
修改config server,shard1,shard2,shard3配置文件,增加如下参数:
security:
  authorization: "enabled"
  keyFile: /monogocluster/config/mongo-keyfile

修改mongos 配置文件,增加如下参数:
security:
  keyFile: /monogocluster/config/mongo-keyfile

关闭服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
关闭集群
第一步:关闭所有mongos路由实例
第二步:关闭所有分片
第三步:关闭所有的配置服务器

##关闭mongos
mongosh mongodb://127.0.0.1:30000
use admin
db.auth('root','sdhjfREWFWEF23e')
db.shutdownServer()

##关闭分片
/opt/mongodb/bin/mongod --config /monogocluster/shard3/config/mongo-conf --shutdown
/opt/mongodb/bin/mongod --config /monogocluster/shard2/config/mongo-conf  --shutdown
/opt/mongodb/bin/mongod --config /monogocluster/shard1/config/mongo-conf  --shutdown

##关闭configservers
/opt/mongodb/bin/mongod --config /monogocluster/config/config/mongo-conf --shutdown

启动服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
启动集群
 第一步:启动配置服务器
 第二步:启动所有分片
 第三步:启动mongos路由实例

##启动配置服务
/opt/mongodb/bin/mongod --config /monogocluster/config/config/mongo-conf

##启动所有分片
/opt/mongodb/bin/mongod --config /monogocluster/shard1/config/mongo-conf 
/opt/mongodb/bin/mongod --config /monogocluster/shard2/config/mongo-conf 
/opt/mongodb/bin/mongod --config /monogocluster/shard3/config/mongo-conf

## 启动mongos路由实例
/opt/mongodb/bin/mongos --config /monogocluster/mongos/config/mongo-conf

验证数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--- 测试服务器分片功能
mongosh mongodb://127.0.0.1:30000
[direct: mongos] test> use admin
[direct: mongos] admin> db.auth('root','sdhjfREWFWEF23e')
--- 启用数据库分片
sh.enableSharding("db2")
--- 启用表分片
sh.shardCollection("db2.user",{"id":1})
sh.shardCollection("db2.user1",{"id":"hashed"})
--- 模拟写入数据
在db2库的user表中循环写入数据
use db2
for(i=1;i<=600;i++){db.tyuser3.insert({"id":i,"name":"ty"+i})}

---查看集群情况
[direct: mongos] db2> sh.status()
shardingVersion
{ _id: 1, clusterId: ObjectId("66f50c31e8f91dc6de9b9770") }
shards
[{
    _id: 'shard1',
    host: 'shard1/mon1:40001,mon2:40001,mon3:40001',
    state: 1,
    topologyTime: Timestamp({ t: 1727338491, i: 3 })
  },{
    _id: 'shard2',
    host: 'shard2/mon1:40002,mon2:40002,mon3:40002',
    state: 1,
    topologyTime: Timestamp({ t: 1727338512, i: 1 })
  },{
    _id: 'shard3',
    host: 'shard3/mon1:40003,mon2:40003,mon3:40003',
    state: 1,
    topologyTime: Timestamp({ t: 1727338518, i: 3 })
  }]
active mongoses
[ { '7.0.14': 3 } ]


---查看集合分片情况
var dbName = "db2"; 
db.getSiblingDB(dbName).getCollectionNames().forEach(function(collName) {
    print("————————————————————————"); 
    print("Collection: " + collName); 
    db.getSiblingDB(dbName).getCollection(collName).getShardDistribution();
});

输出结果
————————————————————————
Collection: user1
Shard shard1 at shard1/mon1:40001,mon2:40001,mon3:40001
 data : 9KiB docs : 214 chunks : 0
 estimated data per chunk : InfinityGiB
 estimated docs per chunk : Infinity

Shard shard3 at shard3/mon1:40003,mon2:40003,mon3:40003
 data : 7KiB docs : 175 chunks : 0
 estimated data per chunk : InfinityGiB
 estimated docs per chunk : Infinity

Shard shard2 at shard2/mon1:40002,mon2:40002,mon3:40002
 data : 9KiB docs : 211 chunks : 0
 estimated data per chunk : InfinityGiB
 estimated docs per chunk : Infinity

Totals
 data : 26KiB docs : 600 chunks : 0
 Shard shard1 contains 35.64% data, 35.66% docs in cluster, avg obj size on shard : 45B
 Shard shard3 contains 29.19% data, 29.16% docs in cluster, avg obj size on shard : 45B
 Shard shard2 contains 35.16% data, 35.16% docs in cluster, avg obj size on shard : 45B
————————————————————————
Collection: user
Shard shard3 at shard3/mon1:40003,mon2:40003,mon3:40003
 data : 26KiB docs : 600 chunks : 0
 estimated data per chunk : InfinityGiB
 estimated docs per chunk : Infinity

Totals
 data : 26KiB docs : 600 chunks : 0
 Shard shard3 contains 100% data, 100% docs in cluster, avg obj size on shard : 45B

总结

MongoDB 集群分片是一种强大的水平扩展解决方案,适用于大规模数据存储和高并发访问场景。通过将数据分布在多个物理服务器上,分片可以显著提高系统的性能和可扩展性。然而,分片架构的复杂性和管理成本也需要仔细考虑。在选择分片键和配置集群时,应根据业务需求和数据特性进行优化,以充分发挥分片的优势。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。
雪人
2023/10/11
2.6K1
MongoDB的集群模式–Sharding(分片)
分片是数据跨多台机器存储,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。
星哥玩云
2022/08/18
1.4K0
MongoDB的集群模式–Sharding(分片)
009.MongoDB分片群集部署
shard:每个分片是分片数据的子集。从MongoDB 3.6开始,必须将分片部署为副本集。
木二
2019/07/01
1.8K0
MongoDB分片集群搭建 原
©著作权归作者所有:来自51CTO博客作者三和梁朝伟的原创作品,如需转载,请注明出处,否则将追究法律责任
拓荒者
2019/09/16
1.3K0
MongoDB分片集群部署(六)
创建用户,该用户在集群环境中可见(相当于单机版root用户,用于创建用户,数据库等操作)
堕落飞鸟
2022/02/24
4250
mongodb 3.4 集群搭建升级版 五台集群 原
最新版mongodb推荐使用yaml语法来做配置,另外一些旧的配置在最新版本中已经不在生效,所以我们在生产实际搭建mongodb集群的时候做了一些改进。如果大家不熟悉什么是分片、副本集、仲裁者的话请先移步查看上一篇文章:mongodb 3.4 集群搭建:分片+副本集
拓荒者
2019/09/16
7870
mongodb4.0.2分片集群部署
2018年11月14日 11:05:50 Full Stack Developer 阅读数 331
拓荒者
2019/09/18
6370
mongodb4.0.2分片集群部署
mongodb-4.x shard cluster 搭建-复制集节点为单个节点-适合开发环境
b. 在vm11创建配置文件 /data/cluster/data/conf/shard1.conf
cosmozhu
2020/06/15
4340
mongodb高可用集群部署
计划分几篇文章把近一个月技术上的一些实践记录一下,这第一篇记录一下mongodb的高可用集群部署。
jeremyxu
2019/03/13
2.8K1
高可用mongodb集群(分片+副本):规划及部署
mongodb是最常用的nosql数据库,以下记录如何搭建高可用mongodb集群(分片+副本)
雪人
2022/10/13
3.8K0
搭建高可用MongoDB集群(分片)
MongoDB基础请参考:http://blog.51cto.com/kaliarch/2044423
KaliArch
2018/05/30
5.5K2
搭建高可用MongoDB集群(分片)
mongodb生产部署手册
mongodb生产部署文档,继上一篇mongodb-4.x shard cluster 搭建-复制集节点为单个节点-适合开发环境后。本文主要记录了生产环境mongodb-shard集群部署的步骤与方法,提供快速安全搭建生产集群的配置。本文使用的mongodb版本为4.2,部署环境为centos7。
cosmozhu
2020/06/15
1.1K0
MongoDB4.0搭建分布式集群
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
拓荒者
2019/09/08
4490
搭建 MongoDB分片(sharding) / 分区 / 集群环境
分别在每台机器建立conf、mongos、config、shard1、shard2、shard3六个目录,因为mongos不存储数据,只需要建立日志文件目录即可。
程序员鹏磊
2018/02/02
3.5K0
MongoDB4.0构建分布式分片群集
分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能。当MongoDB单点数据库服务器存储成为瓶颈、单点数据库服务器的性能成为瓶颈或需要部署大型应用以充分利用内存时,可以使用分片技术。
拓荒者
2019/09/19
6910
MongoDB分片集群搭建
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
用户8826052
2021/07/12
1.7K0
mongodb分片
分别在三台机器上面创建 mkdir -pv /data/mongodb/mongos/log mkdir -pv /data/mongodb/config/{data,log} mkdir -pv /data/mongodb/shard1/{data,log} mkdir -pv /data/mongodb/shard2/{data,log} mkdir -pv /data/mongodb/shard3/{data,log} 配置3台的配置文件 mkdir /var/run/mongodb mkdir
零月
2018/04/25
1.6K0
mongodb分片
02 . MongoDB复制集,分片集,备份与恢复
MongoDB复制集RS(ReplicationSet): 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB)Paxos(mysql MGR 用的是变种))
iginkgo18
2021/04/21
2K0
02 . MongoDB复制集,分片集,备份与恢复
MongoDB3.6集群搭建(分片+副本集) 原
分片则指为处理大量数据,将数据分开存储,不同服务器保存不同的数据,它们的数据总和即为整个数据集。追求的是高性能。 在生产环境中,通常是这两种技术结合使用,分片+副本集
拓荒者
2019/09/16
1.3K0
docker-swarm部署mongo分片集群
在主服务器下创建fate-mongo.yaml,并执行以下脚本(注意根据自己的机器名称修改constraints属性)
kinnylee
2020/10/15
1.4K0
docker-swarm部署mongo分片集群
相关推荐
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档