在windows环境下配置mongoDB集群

在windows环境下配置mongoDB集群

mongodb官网

官网分片文档

首先感谢这次参考的文章:

mongodb搭建高可用分片集群示例-天才卧龙

MongoDB高可用集群搭建示例-lizh

配置中用到端口划分汇总:

(本次配置一共用了2个mongos、3个confiigserver、3个shard)

mongosR1(端口:27019)mongosR2(端口:27029)
configR1(端口:27018)configR2(端口:27028)configR3(端口:27038)
Shard1R1(端口:27011)Shard1R2(端口:27021)Shard1R3(端口:27031)

这是这次配置所需要用到的端口

配置的过程:

1. 新建文件加存放mongodb集群所需配置文件和数据

在这里插入图片描述

2. 在每个config文件夹中新建所需文件

在这里插入图片描述

3. 在 config.conf里编写配置内容
net:
  port: 27018  #config1的端口27018  config2为27028  config3为27038
  bindIp: 0.0.0.0  #允许连接地址,这里统一设置为允许任何ip连接
systemLog:
  destination: file
  logAppend: true
  path: D:\developTool\mongodb\mongoCluster\configR1\log\config.log  #config的日志存储地址,config2和config3修改路径即可
storage:
  dbPath: D:\developTool\mongodb\mongoCluster\configR1\data #config的数据存储地址,config2和config3修改路径即可
  journal:
    enabled: true #数据故障恢复和持久化,肯定是开启
#processManagement:
#  fork: true    #linux下打开此设置,Windows环境下后台启动需要注册服务,
#  pidFilePath: /mongo/config/run/mongod.pid
#副本集名称设置
replication:
  replSetName: configs
#分片集群角色,配置服务器的固定值
sharding:
  clusterRole: configsvr
#这里是集群安全认证配置,首次配置启动集群不打开此配置,先留着,后面再说
#security: 
  #keyFile: 
  #authorization: enabled

4. configR2、R3的配置一样,只是端口和路径进行修改
5. 新建shard文件夹以及目录下的文件

在这里插入图片描述
(shardR1下新建shard1,因为一个shard没有做分片处理,如果后续做分片处理可以新建shard2、3等等)
在这里插入图片描述
(shard1下新建data、log文件以及shard.conf配置文件)

6. 在shard.conf里写配置内容(shardR2和shardR3下的shard1同理配置,修改端口和路径即可)
net:
  port: 27011   #shard1的端口27011 ,shard2端口27021 ,shard2端口27031
  bindIp: 0.0.0.0
systemLog:
  destination: file
  logAppend: true
  path: D:\developTool\mongodb\mongoCluster\shardR1\shard1\log\shard.log #shard1R1的路径,shard1R2和shard1R3做对应修改即可
storage:
  dbPath: D:\developTool\mongodb\mongoCluster\shardR1\shard1\data #shard1R1的路径,shard1R2和shard1R3做对应修改即可
  journal:
    enabled: true
#processManagement:
#  fork: true
#  pidFilePath: /mongo/shard1/run/mongod.pid
replication:
  replSetName: shard1
sharding:
  clusterRole: shardsvr #集群中角色归属

7. 再mongosR1下新建文件以及配置文件

在这里插入图片描述

8. 在mongos.conf里编写配置
systemLog:
  destination: file
  logAppend: true
  path:  D:\developTool\mongodb\mongoCluster\mongosR1\log\mongos.log #mongos没有数据存储地址,只有日志输出地址,mongosR2下做对应的地址调整
# network interfaces
net:
  port: 27019 # mongosR1的端口,mongosR2为27029
  bindIp: 0.0.0.0
setParameter:
  enableLocalhostAuthBypass: false
#注意!此处配置的连接地址为配置服务器config Serve的副本集名称和所在服务器地址以及端口
sharding:
  configDB: configs/127.0.0.1:27018,127.0.0.1:27028,127.0.0.1:27038

9. 启动服务,分片集群启动时一定要按照config server,shard ,mongos的顺序启动

在安装mongodb的bin目录下启动dos命令:

./mongod -f D:\developTool\mongodb\mongoCluster\configR1\config.conf

在这里插入图片描述

(1) 启动完成之后新打开一个dos窗口进入一台configserver
./mongo -host 127.0.0.1  --port 27018
(2) 进入之后在dos界面配置配置器的服务集:
config = {  _id : "configs",   
members : [     
{_id : 0, host : "127.0.0.1:27018" },     
{_id : 1, host : "127.0.0.1:27028" },     
{_id : 2, host : "127.0.0.1:27038" }   
]  }
(3) 初始化副本集:
rs.initiate(config)
(4) 查看副本集状态:
rs.status()

在这里插入图片描述
在这里插入图片描述

(执行完成之后对应data文件下会产生文件)

10.
(1) 在开启三个dos窗口分别启动shardR1的shard1、shardR2的shard1和shardR3的shard1
./mongod -f D:\developTool\mongodb\mongoCluster\shardR1\shard1\shard.conf
./mongod -f D:\developTool\mongodb\mongoCluster\shardR2\shard1\shard.conf
./mongod -f D:\developTool\mongodb\mongoCluster\shardR3\shard1\shard.conf

在这里插入图片描述

(2) 打开新的dos窗口连接shardR1
./mongo --port 27011
(3) 配置shard1的副本集:
config = { _id : "shard1",
members : [ 
{_id : 0, host : "127.0.0.1:27011"},
{_id : 1, host : "127.0.0.1:27021"},
{_id : 2, host : "127.0.0.1:27031"}
] }
(4) 初始化副本集:
rs.initiate(config);

在这里插入图片描述

11.
(1) 分别打开三个新的dos窗口启动前端路由器mongosR1,mongosR2
./mongos -f D:\developTool\mongodb\mongoCluster\mongosR1\mongos.conf
./mongos -f D:\developTool\mongodb\mongoCluster\mongosR2\mongos.conf
(2) 新开一个dos窗口:连接任意一个mongos
./mongo --port 27019
(3) 使用admin库,启用集群分片,创建用户
use admin;

sh.addShard("shard1/127.0.0.1:27011,127.0.0.1:27021,127.0.0.1:27031");

db.createUser( { user: "admin", pwd: "Zaq12wsx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
(4) 关闭当前mongos 连接,重连如下:
./mongo --port 27019 -u "admin" -p "Zaq12wsx" --authenticationDatabase "admin"

#设置一下chunk的大小:

use config;

#设置块大小为1M是方便实验,不然需要插入海量数据

db.setting.save({"_id":"chunksize","value":1})

#cda配置

use cda;

#启用数据库分片

sh.enableSharding("cda")

#创建集合

db.createCollection("cdaDocLibMongo");

#以" uuid "作哈希索引分片键

db.cdaDocLibMongo.createIndex({"uuid":"hashed"})

#对cdaDocLibMongo集合启用分片

sh.shardCollection( " cda.cdaDocLibMongo", { " uuid " : "hashed" } ) 

# 查看分片情况

sh.status() 

# 查看分片列表,所有分片

db.runCommand({listShards:1})  use config;

# 查询当前块大小

db.settings.find({"_id":"chunksize"})

# 修改块大小

db.settings.save( { _id:"chunksize", value: 64 } );

到此总共开启了8个服务(configserver3 、shard3 、mongos*2)

在这里插入图片描述

启动顺序一定要按照configserver、shard、mongos顺序启动

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值