首先我们先来了解一下Mongo集群的概念,Mongo集群有3个主要组件
ConfigServer:在集群中扮演存储整个集群的配置信息,负责配置存储,如果需要高可用的ConfigServer那么需要3个节点。
Shard:分片,存储真实的数据,每一个Shard分片都负责存储集群中的数据,例如一个集群有3个分片,然后我们定义分片规则为哈希,那么整个集群的数据就会(分割)到3个分片中的某一个分片,那么分片是特别重要的,如果集群中的一个分片全部崩溃了那么集群将不可用,所以我们要保证集群的高可用,那么我们需要一个分片配置3个节点,2个副本集一个仲裁节点,仲裁节点类似于Redis的哨兵模式,如果发现主节点挂了那么让另一个副本集进行数据存储。
Mongos:Mongos我们可以理解为整个集群的入口,类似于Kafka的Broker代理,也就是客户端,我们通过客户端连接集群进行查询。
下面是MongoDB的官方集群架构图,我们看到Mongos是一个路由,他们的信息都存储在ConfigServer中,我们通过Mongos进行添加,然后根据条件将数据进行分片到分片的副本集中
首先我们搭建两个config-server
创建两个config-server的配置文件
然后配置文件中配置端口
然后启动容器
然后进入容器初始化
如果ok为1表示成功
下面我们给每个server创建2个分片
创建挂载文件
创建配置文件
然后启动容器
进入第一个分片
进入第二个分片
创建挂载文件
然后启动Mongo
mongo添加分片组
新建数据启用分片
那么我们先来总结一下我们搭建一个高可用集群需要多少个Mongo
mongos : 3台
configserver : 3台
shard : 3片
每一片shard 分别 部署两个副本集和一个仲裁节点 : 3台
那么就是 3 + 3 + 3 3 = 15 台,我这里演示采用3台服务器
1146780169 4核16g 部署一个configserver,一个mongos,2个分片组
18261216 2核4g 部署一个configserver,一个mongos,1个分片组
1061211362 1核2g 部署一个configserver,一个mongos,不搭建分片组
由于此处服务器原因所以不是均衡分布,请根据自身实际情况搭建
我们先来搭建ConfigServer,因为我们知道搭建的话一定要高可用而且一定要权限这里mongo之间通信采用秘钥文件,所以我们先进行生成
创建挂载文件目录
写入配置文件
然后生成keyFile
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server1容器
创建挂载文件目录
写入配置文件
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server2容器
创建挂载文件目录
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server3容器
进入第一台容器
输入
如果返回ok则成功
然后我们创建用户
由于mongos是客户端,所以我们先搭建好config以及shard之后再搭建mongos。
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard1分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组1搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard2分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组2搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard3分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组3搭建完成
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos1
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos2
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos3
进入第一台mongos
先登录(使用前面设置的root用户密码)
进行配置分片信息
全部返回ok则成功
去其他两台mongos执行
mongos2
mongos3
创建用户
插入数据
openssl rand -base64 756 > mongokey
清空server1两个分片数据
清空server2两个分片数据## 一、搭建本地开发环境
1、[安装HomeBrew](>MongoDB是目前非常流行的一种NoSQL数据库,其灵活的存储方式备受开发人员青睐。本文就介绍一下如何安装并设置成Windows服务的方法。
1、安装MongoDB
Windows版本的MongoDB无需安装,只要解压就能使用了。
2、将MongoDB设置成Windows服务
这个 *** 作就是为了方便,每次开机MongoDB就自动启动了。
首先在解压后的MongoDB文件夹里面建立data和logs两个目录,看名字就知道,data存放数据,logs存放日志文件。
然后建立文本文件:mongodcfg
里面写上(注意,里面的路径要根据你的MongoDB实际路径):
logpath=E: oolsmongodb-win32-i386-264logsMongoDBlog
dbpath=E: oolsmongodb-win32-i386-264data
然后在命令行里面运行:
mongod --config E: oolsmongodb-win32-i386-264mongodcfg --install
这样就在Windows下成功建立了MongoDB的服务。
在“运行”中输入“servicesmsc”,打开“服务”管理界面。
点击列表中的“MongoDB”,在点击“启动”按钮,就将MongoDB成功启动了。你查看一下,如果数据文件大于系统内存,查询速度会下降几个数量级,因为mongodb是内存数据库。我以前测试过,1000万数据的时候没有索引情况下查询可能会几秒钟甚至更久。
这种情况,你最好给经常查询的项创建索引,有索引以后查询速度会非常非常非常的快。
另外一点是数据索引如果大于内存,速度也会下降很多。而且对于多条件查询,如果你查询的顺学和索引顺序不同,也不能使用索引。这个要慢慢摸索
如果你使用了replica set,这个会影响写入速度的,三个replica set,速度会降低到三分之一。
大概主要影响速度的就是这几点吧,如果你需求不是非常复杂,我以前测试mongodb速度方面优化好的情况下还是可以接受的。希望能帮到你执行启动 *** 作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。 你可以使用 MongoDB shell 来连接 MongoDB 服务器。你也可以使用 PHP 来连接 MongoDB。本教程我们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节我们将会介绍如何通过php 来连接MongoDB服务。 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],[,hostN[:portN]]][/[database][options]] mongodb:// 这是固定的格式,必须要指定。 username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库 host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。 portX 可选的指定端口,如果不填,默认为27017 /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。 options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)