Mongodb7.0 分片集群搭建

参考资料:https://www.mongodb.com/zh-cn/docs/v7.0/tutorial/convert-replica-set-to-replicated-shard-cluster/

安装参阅:Mongodb7.0 安装-优快云博客

1. 前期准备

所有服务器地址必须是以域名的方式存在,不能是IP

域名映射参考:hosts 域名映射-优快云博客

1.1 Config Server

config1.com:27040

config2.com:27040

config3.com:27040

ps: 配置服务器最低要求3台

1.2 Mongos Server

mongs1.com:27017

mongs2.com:27017

mongs3.com:27017

1.3 Node Server

mongod1.com:27041

mongod2.com:27041

mongod3.com:27041

1.4 Node-副本 Server

mongod11.com:27041

mongod22.com:27041

mongod33.com:27041

丐版的mongodb分片集群服务器就准备好了,如果只是搭建试试手参照以下方案:

1. 3台config搭建在一台机器上

2. mongos 于node 共用服务器

3. 1.4的副本集可以省略

2. 开始搭建

2.1 Config Sever

     2.1.1 修改配置
# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
sharding:
  clusterRole: configsvr
replication:
  replSetName: configReplSet
net:
  bindIp: config1.com
  port: 27040

 其他几台服务参照配置只需修改【bindIp】 即可

2.1.2 初始化服务

连接服务器其中一台即可:

# 连接服务器
mongosh "mongodb://config1.com:27040"

# mongosh中执行

rs.initiate({
  _id: "configReplSet",
  configsvr: true,
  members: [
    { _id: 0, host: "config1.com:27040" },
    { _id: 1, host: "config2.com:27040" },
    { _id: 2, host: "config3.com:27040" }
  ]
})

执行完成后会返回:{ ok: 1 }
 

2.2 Node Server

2.2.1 修改配置

分片集(replSetName)分配:shardReplSet1, shardReplSet2, shardReplSet3

# 分片Node配置
sharding:
  clusterRole: shardsvr
replication:
  replSetName: shardReplSet1
net:
  bindIp: mongod1.com
  port: 27041


#分片Node-副本配置
sharding:
  clusterRole: shardsvr
replication:
  replSetName: shardReplSet1
net:
  bindIp: mongod11.com
  port: 27041

#上面两个加起来形成一个副本集架构

副本集与分片集在配置上的区别:副本集replSetName 一致,分片集相反

其他几台服务参照配置只需修改【replSetName,bindIp】 即可

2.2.2 初始化服务

副本集初始化: 连接其中一台即可

分片集初始化: 一台都不能丢下

# 连接 分片1 初始化副本集
rs.initiate({
  _id: "shardReplSet1",
  members: [
    { _id: 0, host: "mongod1.com:27041" },
    { _id: 1, host: "mongod11.com:27041" }
  ]
})

# 连接 分片2 初始化副本集
rs.initiate({
  _id: "shardReplSet2",
  members: [
    { _id: 0, host: "mongod2.com:27041" },
    { _id: 1, host: "mongod22.com:27041" }
  ]
})

# 连接 分片3 初始化副本集
rs.initiate({
  _id: "shardReplSet3",
  members: [
    { _id: 0, host: "mongod3.com:27041" },
    { _id: 1, host: "mongod33.com:27041" }
  ]
})

以上分别连接对应的mongosh 执行初始化

2.3 Mongs Server

2.3.1 修改配置
net:
  port: 27017
  bindIp: mongs1.com

# configDB configReplSet->所有的配置服务器
sharding:
  configDB: configReplSet/config1.com:27040,config2.com:27040,config3.com:27040

 其他几台服务参照配置只需修改【bindIp】 即可

2.3.2 初始化服务

连接到其中一台mongos 完成分片添加即可

sh.addShard("shardReplSet1/mongod1.com:27041,mongod11.com:27041")
sh.addShard("shardReplSet2/mongod2.com:27041,mongod22.com:27041")
sh.addShard("shardReplSet3/mongod3.com:27041,mongod33.com:27041")

3. 测试

连接上一台mongos

mongosh "mongodb://mongs1.com:27017"

use testdatabase
# 从 MongoDB 6.0 开始,对集合分片无需首先运行 sh.enableSharding() 方法来配置数据库。
sh.shardCollection("testdatabase.testRole", { _id: "hashed"})
db.testRole.insertOne({
    _id: 1,
    roleName: "role10000",
    age: 2
    })
    
    db.testRole.insertOne({
    _id: 2,
    roleName: "role10000",
    age: 2
    })
    
    db.testRole.insertOne({
    _id: 3,
    roleName: "role10000",
    age: 2
    })
# 连接上所有节点服务器看看数据分布情况

丐版分片集搭建完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值