当前位置: 首页 > 工具软件 > Mongodb-Log > 使用案例 >

MongoDB-分片集群搭建

颛孙信厚
2023-12-01

1.分片集群搭建整体思路

由于MongoDB不断更新,因此集群搭建的方法最终以MongoDB官网为准。本文提供一个较为清晰的搭建思路
分片集群搭建的方法同MongoDB复制集搭建基本一致。

1.1 搭建配置服务器复制集
  • 早期版本的配置服务器只要一台即可
  • 最新版本MongoDB要求配置服务器必须是一个复制集
1.2 搭建分片服务器复制集
  • 用于保存数据的多台电脑
1.3 搭建路由服务器
  • 用于建立配置服务器和分片服务器之间的关系

2.搭建配置服务器集群

  • MongoDB官网中下载.zip压缩包。
  • 本案例中将压缩包解压7次,解压后文后分别命名。
    • 其中配置服务器:mongodb-config-27018、mongodb-config-27019、mongodb-config-27020;
    • 分片服务器:mongodb-shard-27021、mongodb-shard-27022、mongodb-shard-27023;
    • 路由服务器:mongodb-router-27024。
2.0 创建配置文件目录结构
  • mongodb-config-27018中新建data、log文件夹。
  • log文件夹中新建mongod.log文件
  • mongodb-config-27018/bin目录中新建mongo.config文件【用于编写配置文件】
2.1 编写配置文件
  • 通过图形化安装MongoDB文件夹中,有bin目录,其中的mongod.cfg文件中,就是配置文件的模板,复制到2.0中新建的mongo.config文件中,并做修改如下:
# 数据保存到哪
storage:
  dbPath: D:\Developer\MongoDB666\mongodb-config-27018\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:
# 日志保存到哪
systemLog:
  destination: file
  logAppend: true
  path:  D:\Developer\MongoDB666\mongodb-config-27018\log\mongod.log
# 绑定的IP和端口号
net:
  port: 27018
  bindIp: 127.0.0.1
# 复制集的名称
replication:
  replSetName: 'it666'
# 复制集的作用:告诉系统当前的这台服务器是一台配置服务器
sharding:
  clusterRole: configsvr

mongodb-config-27019、mongodb-config-27020这两台服务器的配置方法同2.0,2.1.

2.2 注册MongoDB服务

管理员权限运行终端, 分别打开三台配置服务器的bin目录。分别执行如下指令

mongod --config D:\Developer\MongoDB666\mongodb-config-27018\bin\mongo.config --serviceName "MongoDB27018" --serviceDisplayName "MongoDB27018"  --install
mongod --config D:\Developer\MongoDB666\mongodb-config-27019\bin\mongo.config --serviceName "MongoDB27019" --serviceDisplayName "MongoDB27019"  --install
mongod --config D:\Developer\MongoDB666\mongodb-config-27020\bin\mongo.config --serviceName "MongoDB27020" --serviceDisplayName "MongoDB27020"  --install
2.3 开启任务【服务】
  • 方法一:在任务管理器中开启
  • 方法二:终端中输入net start MongoDB27019
2.4 测试服务可用性
mongo --host 127.0.0.1 --port 27018
mongo --host 127.0.0.1 --port 27019
mongo --host 127.0.0.1 --port 27020
2.5 添加复制集[初始化]
rs.initiate({
_id: 'it666',
configsvr: true,
members: [
{_id: 0, host: '127.0.0.1:27018'},
{_id: 1, host: '127.0.0.1:27019'},
{_id: 2, host: '127.0.0.1:27020'}]
})
  • configsvr:配置服务器的复制集
  • members:复制集当中的节点

3.搭建分片服务器集群

3.0 创建文件目录结构
  • mongodb-shard-27021中新建data、log文件夹。
  • log文件夹中新建mongod.log文件
  • mongodb-shard-27021/bin目录中新建mongo.config文件【用于编写配置文件】
3.1编写配置文件
  • 通过图形化安装MongoDB文件夹中,有bin目录,其中的mongod.cfg文件中,就是配置文件的模板,复制到3.0中新建的mongo.config文件中,并做修改如下:
# 数据保存到哪
storage:
  dbPath: D:\Developer\MongoDB666\mongodb-shard-27021\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:
# 日志保存到哪
systemLog:
  destination: file
  logAppend: true
  path:  D:\Developer\MongoDB666\mongodb-shard-27021\log\mongod.log
# 绑定的IP和端口号
net:
  port: 27021
  bindIp: 127.0.0.1
# 复制集名称
replication:
  replSetName: 'itzb'
# 复制集的作用:是一个分片服务器
sharding:
    clusterRole: shardsvr

mongodb-shard-27022、mongodb-config-27023这两台服务器的配置方法同3.0,3.1.

3.2注册MongoDB服务

管理员权限运行终端, 分别打开三台分片服务器的bin目录。分别执行如下指令

mongod --config D:\Developer\MongoDB666\mongodb-shard-27021\bin\mongo.config --serviceName "MongoDB27021" --serviceDisplayName "MongoDB27021"  --install
mongod --config D:\Developer\MongoDB666\mongodb-shard-27022\bin\mongo.config --serviceName "MongoDB27022" --serviceDisplayName "MongoDB27022"  --install
mongod --config D:\Developer\MongoDB666\mongodb-shard-27023\bin\mongo.config --serviceName "MongoDB27023" --serviceDisplayName "MongoDB27023"  --install
3.3 在任务管理器中开启任务
  • 方法一:在任务管理器中开启
  • 方法二:终端中输入net start MongoDB27021
3.4 测试服务可用性
mongo --host 127.0.0.1 --port 27021
mongo --host 127.0.0.1 --port 27022
mongo --host 127.0.0.1 --port 27023
3.5 添加复制集
rs.initiate({
_id: 'itzb',
members: [
{_id: 0, host: '127.0.0.1:27021'},
{_id: 1, host: '127.0.0.1:27022'},
{_id: 2, host: '127.0.0.1:27023'}]
})

4.搭建路由服务器

4.0 创建文件目录结构
  • mongodb-router-27024中新建data、log文件夹。
  • log文件夹中新建mongod.log文件
  • mongodb-router-27024/bin目录中新建mongo.config文件【用于编写配置文件】
4.1编写配置文件
  • 通过图形化安装MongoDB文件夹中,有bin目录,其中的mongod.cfg文件中,就是配置文件的模板,复制到4.0中新建的mongo.config文件中,并做修改如下:
# 日志保存到哪
systemLog:
  destination: file
  logAppend: true
  path:  D:\Developer\MongoDB666\mongodb-router-27024\log\mongod.log
# 绑定的IP和端口号
net:
  port: 27024
  bindIp: 127.0.0.1
# 配置服务器地址
sharding:
  configDB: it666/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020
  • sharding:告诉路由服务器,将来要找哪一个配置服务器集群
4.2 注册MongoDB服务

管理员权限运行终端, 打开路由服务器的bin目录,执行如下指令:

mongos  --config D:\Developer\MongoDB666\mongodb-router-27024\bin\mongo.config --serviceName "MongoDB27024" --serviceDisplayName "MongoDB27024"  --install
  • 注意点:配置服务器和分片服务器是使用指令mongo注册的,而路由服务器是使用指令mongos
4.3 在任务管理器中开启任务
4.4 测试服务可用性
mongo --host 127.0.0.1 --port 27024
4.5 添加分片服务器
sh.addShard( "itzb/127.0.0.1:27021")
sh.addShard( "itzb/127.0.0.1:27022")
sh.addShard( "itzb/127.0.0.1:27023")
  • 帮助路由服务器找到分片服务器
  • 可以使用sh.status()查看分片服务器
4.6 给指定数据库(demo)开启分片
sh.enableSharding("demo")

默认情况下,集合中的数据是不会分片,会默认保存到主分片中。

4.7 指定分片片键
sh.shardCollection("demo.user",{'age':1})
sh.shardCollection("demo.user",{'name':hashed})
  • 指明数据库中哪个集合分片,及分片片键
  • 1:说明使用片键的取值划分数据段的
  • hashed:使用片键的hash值划分数据段
 类似资料: