MongoDB的副本集及分片综合应用

目录

分片介绍

副本集介绍

MongoDB副本集部署(windows)

环境准备

启动实例(服务)

语法:

示例: 

主节点:

从节点1(以管理员身份启动):

从节点2: 

配置副本集

维持服务不要关闭,进入任何一个节点内:

进行配置:

1.切换到admin数据库

2.配置集群:

3.使得配置生效 

​编辑 从节点配置

1、刚刚配置好的副本集中的从节点是无法进行数据库操作的:

2、要先进行从节点永久化设置:

3、或者使用(推荐使用):

副本集验证

1、在主节点中增加数据

2、在从节点上验证:

MongoDB数据库分片

环境准备

启动分片服务

启动分片服务1

--shardsvr为分片声明 

​编辑​

启动分片服务2

​编辑​进入分片1 初始化分片集

​编辑​

​编辑​ 进入分片2 初始化分片集

配置启动 Config Server

启动Config1: 

启动Config2:

​编辑​

 配置路由服务器Route Process

配置分片sharding,添加分片索引

​编辑​ 查看分片集

 MongoDB分片测试

robo 3T查看分片集

最后


分片介绍


在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。

当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

副本集介绍


副本集就是为了解决mongodb的可靠性, MongoDB复制是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。 复制还允许您从硬件故障和服务中断中恢复数据。

MongoDB副本集部署(windows)


环境准备

本教程演示mongodb4.4.24 副本集部署(一主两从,伪分布式)

节点配置
主节点localhost:27017
从节点1localhost:27018
从节点2localhost:27019

启动实例(服务)

语法:

bin>mongod -port 端口号  -dbpath 数据路径 -logpath 日志路径 -replSet 副本集名称 

示例: 

>mongod -port 27018 -dbpath D:\MongoDB1\data -logpath D:\MongoDB1\log\mongo1.log -replSet rs0  

主节点:

从节点1(以管理员身份启动):

从节点2: 

以上三个节点启动的都是一次性服务,所以窗口不要关闭!

配置副本集

维持服务不要关闭,进入任何一个节点内:

进行配置:
1.切换到admin数据库

use admin

2.配置集群:

 

config={_id:"rs0",members:[
... {_id:0,host:"localhost:27017","priority":3},
... {_id:1,host:"localhost:27018","priority":2},
... {_id:2,host:"localhost:27019","priority":1}]}

说明:第一个“_id”为副本集名称,“priority”为优先级,数字越大,优先级越高。 

3.使得配置生效 

rs.initiate(config)

生效后可能会出现节点显示错误:
(明明是主节点,但却显示从节点) 

只需要查看副本集状态即可更正:

 rs.status()

 从节点配置

1、刚刚配置好的副本集中的从节点是无法进行数据库操作的:

2、要先进行从节点永久化设置:

3、或者使用(推荐使用):

副本集验证

1、在主节点中增加数据

2、在从节点上验证:

说明副本集群部署成功。

MongoDB数据库分片


环境准备

分片节点IP:端口数据库路径日志路径
1shard1(主)localhost:4006D:\mongodb\shard1\dbD:\mongodb\shard1\log
1shard2(副)localhost:4007D:\mongodb\shard2\dbD:\mongodb\shard2\log
2shard3(副)localhost:4008D:\mongodb\shard3\dbD:\mongodb\shard3\log
2shard4(副)localhost:4009D:\mongodb\shard4\dbD:\mongodb\shard4\log

1.每一个分片都应该安装MongDB实例,和前面的主从复制类似,也需要将bin文件复制到每个分片中,并且创建db文件以及log文件存放数据和日志数据

启动分片服务

1.首先关闭之前打开的数据库服务

启动分片服务1

2.然后进入要分片的数据库bin目录中,启动cmd

D:\shard1\bin>mongod --shardsvr --replSet shard1 -port 4006 -dbpath D:\shard1\shard11\data -logpath D:\shard1\shard11\log\shard11.log

--shardsvr为分片声明 

不要关闭此窗口,最小化即可

1.再次进入要分片的数据库bin目录中,启动cmd

D:\shard1\bin>mongod --shardsvr --replSet shard1 -port 4007 -dbpath D:\shard1\shard12\data -logpath D:\shard1\shard12\log\shard12.log

启动分片服务2

2.再再进入要分片的数据库bin目录中,启动cmd

D:\shard2\bin>mongod --shardsvr --replSet shard2 -port 4008 -dbpath D:\shard2\shard21\data -logpath D:\shard2\shard21\log\shard21.log

​ 3.再再再次进入要分片的数据库bin目录中,启动cmd

D:\shard2\bin>mongod --shardsvr --replSet shard2 -port 4009 -dbpath D:\shard2\shard22\data -logpath D:\shard2\shard22\log\shard22.log

​进入分片1 初始化分片集

进行配置:
1.切换到admin数据库

2.配置集群:

config={_id:"shard1",members:[{_id:0,host:"localhost:4006",priority:2},{_id:1,host:"localhost:4007",priority:1}]}

​ 进入分片2 初始化分片集

1.切换到admin数据库

2.配置集群:

config={_id:"shard2",members:[{_id:0,host:"localhost:4008",priority:2},{_id:1,host:"localhost:4009",priority:1}]}

rs.initiate(config)

配置启动 Config Server

值得注意的是:在MongDB 3版本config服务必须配置为从副本集,所以直接用前面配置哦偶好了的副本启动即可

1.老样子,每个文件夹添加data和log

config实例端口号数据库路径日志路径
config14002D:\mongodb\config1\dbD:\mongodb\config1\log
config24003D:\mongodb\config2\dbD:\mongodb\config2\log

三个实例共三个cmd窗口

启动Config1: 

1.进入要分片的数据库bin目录中

D:\config\bin>mongod --configsvr --replSet confset -port 4002 -dbpath D:\config\config1\data -logpath D:\config\config1\log\conf1.log

2.-configsvr这里我们完全可以像启动普通mongodb服务一样启动,不需要添加一-shardsvr和0configsvr 参数。因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。 三个实例共三个cmd窗口[一次性启动服务,不要关闭cmd窗口,最小化即可] 

启动Config2:

 D:\config\bin>mongod --configsvr --replSet confset -port 4003 -dbpath D:\config\config2\data -logpath D:\config\config2\log\conf2.log

 配置路由服务器Route Process

1.可以创建专门的文件夹存故日志

 

 2.在进入要分片的数据库bin目录中启动cmd

D:\MongDB2\bin>mongos --configdb confset/localhost:4002,localhost:4003 -logpath D:\mongos\log\mongos.log -port 4000

3.mongos: mongos就是一个路由服务器,它会根据管理员设置的"片键"将数据分摊到自己管理的 mongod集群,数据和片的对应关系以及相应的配置信息保存在"config服务器”上。 

配置分片sharding,添加分片索引

1.bin目录下使用MongoDB Shel登录到mongos,添加Shard节点

 mongos> sh.addShard("shard1/localhost:4006,localhost:4007")

mongos> sh.addShard("shard2/localhost:4008,localhost:4009") 

​ 查看分片集

 db.getSiblingDB("config").shards.find()

 MongoDB分片测试

1.登入4000端口

2.切换到admin数据库

3.配置集群:

指定要分片的数据库

mongos> sh.enableSharding("test") 

​ 4.指定数据库里需要分片的集合和片键,片键根据实际情况选择

mongos> sh.shardCollection("test.c2",{"id":1})//1表示范围分片,“hashed”表示哈希分片

​ 5.如果集合已经包含数据,则必须在分片集合之前创建一个支持分片键的素引,如果集合为空,则 mongodb将创建素引。

6.向test库里的c2集合插入10000条数据

mongos> for(var i=1; i<=10000;i==) db.c2.save({id:i,"test1":"testval"+i})

#查看c2信息

mongos> sh.status()

 这里可能是数据量太少了,出来的结果并不是我想像的那样,根据官方说明,单调变化的键上进行分 片,考虑使用哈希分片。

robo 3T查看分片集

robo 3T链接4000端口进行查看

也可以连接两个shard端口查看分片情况 

最后

重新打开mongodb服务,即可像原来一样使用,但是数据存储方式和原来已经不一样了,变成了分布 式的分片存储。

tips:


  • 电脑版本比较高,所以的cmd需要使用管理员身份运行
  • 启动服务均为一次性服务,关闭cmd即为关闭服务,所以在未完成前,请勿关闭
  • 实例均未添加至系统环境变量,请在bin目录下启动
  • 虽然窗口很多,操作不太友好,但是在win系統下,还是多有耐心一点,linux会简单一些,详情 看书上。
  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值