学习mangodb的资料 - Windows搭建MongoDB分片以及复制集
2017-09-19 16:12
771 查看
MongoDB实现复制集
http://blog.csdn.net/liuguangrong/article/details/52301790
MongoDB实现分片复制集
http://blog.csdn.net/liuguangrong/article/details/52383953
mongodb 3.4 集群搭建升级版 五台集群 <另一个例子,还没看>
http://www.ityouknow.com/mongodb/2017/08/16/install-mongodb-cluster.html
mongodb replica set shard 分片 高可用 集群 <例子,还没看>
http://blog.51yip.com/nosql/1647.html
【MongoDB总结】写给想学习MongoDB的小伙伴们
http://blog.csdn.net/sxb0841901116/article/category/2549001
http://blog.csdn.net/u010167215/article/details/50504975
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
mongodb:3.4
es:5.6.0
下面步骤试验过ok
Windows搭建MongoDB分片以及复制集:
http://blog.csdn.net/zlp1992/article/details/77053462
原作者原创 2017年08月10日 15:26:20
本文主要介绍如何在windows部署MongoDB的复制集以及分片,在搭建过程中主要参考了http://blog.csdn.net/sxb0841901116/article/category/2549001对MongoDB分片和复制集的介绍与搭建,但自己在搭建过程中又碰到了一些问题,因此记录一下。
自己是在一台window机器部署整套,包含了一个分片Shard,分片包含了三个复制集(1个primary,2个secondary),一个路由server,两个配置server,最终架构图如下:
从图中可以看到,集群包括几个部分:
分片服务器:存储数据的地方,可以有多个分片,每个分片又可以有多个复制集
配置服务器:保存分片数据与服务器映射等数据,可以配置成复制集,避免单点故障
路由服务器:与client打交道,先查询配置服务器,找到数据所属的分片再获取数据返回给client
client:客户端应用程序,不关心mongo是否使用了分片与复制集,只需与路由服务器交互
首先安装好MongoDB,我的安装目录为:
安装之前,先创建好所需的目录,由于我只部署了一个分片(rs-a),分片包含三个复制集,2个配置服务器复制集、一个路由服务器,因此对应的数据目录如下:
同时创建log日志目录:
下面开始部署
1. 配置分片复制集
- 创建实例
命令行窗口进入bin目录下,使用如下命令(三个命令行窗口)
2
3
这里
上面只是创建了三个可以分片和使用复制集的服务器,我们需要对其初始化设置复制集中的primary和secondary
- 初始化,配置Primary和Secondary复制集
接着再开一个窗口,连接其中的一个服务器,使用命令:
查看对应情况
此时,我们还需要把另外两个加入进来,成为Secondary,使用命令
此时,带有分片的复制集便建立完成,同样可以使用
注意,MongDB默认Secondary是不支持读写操作的,要使Secondary能支持读,需要连接到Secondary的mongod,使用
2. 配置Config Server 复制集
这里需要将Config Server配置为复制集,即使复制集只包含一个mongo实例,如果你采用
这是因为Mongo3.4及以上要求Config Server为复制集,具体问题可见https://stackoverflow.com/questions/42392923/unable-to-launch-mongos
因此我这里将Config Server配置为包含2个实例的复制集,开两个窗口,运行如下命令:
2
这里,复制集名称为
3. 配置路由服务器 router server
一开始当我使用
原来,
因此按如下方式启动mongos
我之前配置的config server的复制集名称为
4. 添加创建的分片
将我们前面创建的分片添加进去,使用命令
使用
5. 开启数据库的分片
为了在数据库中使用分片,我们要使用sh.enableSharding()开启数据库的分片
可以看到数据库
总结如下:
1. 配置分片复制集
mongod --port 3000 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-0" --logpath "C:\newsavedata\mangodata\log\rs-a-0.log"
mongod --port 3001 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-1" --logpath "C:\newsavedata\mangodata\log\rs-a-1.log"
mongod --port 3002 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-2" --logpath "C:\newsavedata\mangodata\log\rs-a-2.log"
# --install --serviceName "mongodb"
mongo --port 3000
rs.initiate()
rs.add("computerName:3001")
rs.add("computerName:3002")
2. 配置Config Server 复制集
mongod.exe --port 27019 --configsvr --replSet rs-conf --dbpath "C:\newsavedata\mangodata\data\config0" --logpath "C:\newsavedata\mangodata\log\config0.log"
mongod.exe --port 27020 --configsvr --replSet rs-conf --dbpath "C:\newsavedata\mangodata\data\config1" --logpath "C:\newsavedata\mangodata\log\config1.log"
mongo --port 27019
rs.initiate()
rs.add("computerName:27020")
3. 配置路由服务器 router server
mongos --configdb rs-conf/computerName:27019,computerName:27020 --logpath "C:\newsavedata\mangodata\log\mongos.log" --port 27018
4. 添加创建的分片
将我们前面创建的分片添加进去,使用命令 mongo --port 27018 登录mongos,使用sh.addShard添加分片
sh.addShard("rs-a/computerName:3000,computerName:3001,computerName:3002")
5. 开启数据库的分片
为了在数据库中使用分片,我们要使用sh.enableSharding()开启数据库的分片
sh.enableSharding("test")
6. 在mongo client端链接mongo server端的路由server
mongo --port 27018
//在mongo的路由server上执行数据库的增删改查操作
7. 在新命令行窗口,执行如下命令,启动mongo-connector
//注意,此处的端口号指定为mongo的路由server的端口号
mongo-connector -m 127.0.0.1:27018 -t 127.0.0.1:9200 -d elastic2_doc_manager
Logging to mongo-connector.log
//当主节点3000挂掉,从节点3001变成PRIMARY时,如果要手动重新切回来,需要执行下面命令
mongo --port 3001
//主动切换比较简单,通过在主库上执行rs.stepDown()方法即可
rs.stepDown()
//mongodb 复制集主节点切换方法
1。冻结其中的一个从节点,使其不参与到与primary 的内部选举工作
进入客户端,执行(单位:秒)
rs.freeze(30);
2.对原主节点进行降级
进入客户端,执行下面代码 (单位:秒)
rs.stepDown(15);
3.经过冻结和降级之后查看复制集状态
rs.status();
复制集顺利切换
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
http://blog.csdn.net/liuguangrong/article/details/52301790
MongoDB实现分片复制集
http://blog.csdn.net/liuguangrong/article/details/52383953
mongodb 3.4 集群搭建升级版 五台集群 <另一个例子,还没看>
http://www.ityouknow.com/mongodb/2017/08/16/install-mongodb-cluster.html
mongodb replica set shard 分片 高可用 集群 <例子,还没看>
http://blog.51yip.com/nosql/1647.html
【MongoDB总结】写给想学习MongoDB的小伙伴们
http://blog.csdn.net/sxb0841901116/article/category/2549001
Elasticsearch+Mongodb 用mongo-connector 实时更新
http://blog.csdn.net/u010167215/article/details/50504975》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
mongodb:3.4
es:5.6.0
下面步骤试验过ok
Windows搭建MongoDB分片以及复制集:
http://blog.csdn.net/zlp1992/article/details/77053462
原作者原创 2017年08月10日 15:26:20
本文主要介绍如何在windows部署MongoDB的复制集以及分片,在搭建过程中主要参考了http://blog.csdn.net/sxb0841901116/article/category/2549001对MongoDB分片和复制集的介绍与搭建,但自己在搭建过程中又碰到了一些问题,因此记录一下。
自己是在一台window机器部署整套,包含了一个分片Shard,分片包含了三个复制集(1个primary,2个secondary),一个路由server,两个配置server,最终架构图如下:
从图中可以看到,集群包括几个部分:
分片服务器:存储数据的地方,可以有多个分片,每个分片又可以有多个复制集
配置服务器:保存分片数据与服务器映射等数据,可以配置成复制集,避免单点故障
路由服务器:与client打交道,先查询配置服务器,找到数据所属的分片再获取数据返回给client
client:客户端应用程序,不关心mongo是否使用了分片与复制集,只需与路由服务器交互
首先安装好MongoDB,我的安装目录为:
D:\software\MongoDB\Server\3.4\bin
安装之前,先创建好所需的目录,由于我只部署了一个分片(rs-a),分片包含三个复制集,2个配置服务器复制集、一个路由服务器,因此对应的数据目录如下:
同时创建log日志目录:
D:\software\MongoDB\data\log1
下面开始部署
1. 配置分片复制集
- 创建实例
命令行窗口进入bin目录下,使用如下命令(三个命令行窗口)
mongod --port 3000 --shardsvr --replSet rs-a --dbpath "D:\software\MongoDB\data\data\rs-a-0" --logpath "D:\software\MongoDB\data\log\rs-a-0.log" mongod --port 3001 --shardsvr --replSet rs-a --dbpath "D:\software\MongoDB\data\data\rs-a-1" --logpath "D:\software\MongoDB\data\log\rs-a-1.log" mongod --port 3002 --shardsvr --replSet rs-a --dbpath "D:\software\MongoDB\data\data\rs-a-2" --logpath "D:\software\MongoDB\data\log\rs-a-2.log"1
2
3
这里
--shardsvr要求使用分片,
--replSet要是使用复制集,复制集名称为
rs-a,这是我们便创建了包含三个复制集的一个分片,注意复制集名字要一致,同时
--logpath的参数要求是一个文件 而不是目录
上面只是创建了三个可以分片和使用复制集的服务器,我们需要对其初始化设置复制集中的primary和secondary
- 初始化,配置Primary和Secondary复制集
接着再开一个窗口,连接其中的一个服务器,使用命令:
mongo --port 3000,连接后使用命令
rs.initiate()初始化,过一会儿,此实例便成为了Primary,可以使用
rs.isMaster()和
rs.status()查看对应情况,如下:
查看对应情况
此时,我们还需要把另外两个加入进来,成为Secondary,使用命令
rs.add("host:port"),我的电脑名为 “HIH-D-11698”
此时,带有分片的复制集便建立完成,同样可以使用
rs.status()查看信息
注意,MongDB默认Secondary是不支持读写操作的,要使Secondary能支持读,需要连接到Secondary的mongod,使用
db.getMongo().setSlaveOk()将其设为从服务器,但此时他还是不支持写操作
2. 配置Config Server 复制集
这里需要将Config Server配置为复制集,即使复制集只包含一个mongo实例,如果你采用
mongod --configsvr --port 27010命令将配置服务器作为
standalone mongod process,当你配置路由服务器Mongos的时候
mongos --configdb localhost:27010 --port 27011就会报错
BadValue: configdb supports only replica set connection string1
这是因为Mongo3.4及以上要求Config Server为复制集,具体问题可见https://stackoverflow.com/questions/42392923/unable-to-launch-mongos
因此我这里将Config Server配置为包含2个实例的复制集,开两个窗口,运行如下命令:
mongod --port 27019 --configsvr --replSet rs-conf --dbpath "D:\software\MongoDB\data\data\config0" --logpath "D:\software\MongoDB\data\log\config0.log" mongod --port 27020 --configsvr --replSet rs-conf --dbpath "D:\software\MongoDB\data\data\config1" --logpath "D:\software\MongoDB\data\log\config1.log"1
2
这里,复制集名称为
rs-conf,同样我们需要按照前述配置分片复制集那样使用
rs.initiate()等命令进行配置,这里就省略了
3. 配置路由服务器 router server
一开始当我使用
mongos --configdb HIH-D-11698:27019,HIH-D-11698:27020 --port 27018,报错,
--configdb后面表示的是配置服务器地址,
--port表示mongos的端口,但是这样报错
FailedToParse: invalid url [HIH-D-11698:27019,HIH-D-11698:27020]1
原来,
mongos 要求config server是复制集并且在前面加上复制集的名称,参见https://stackoverflow.com/questions/38467269/mongodb-query-router-setup-issue-with-config-file
因此按如下方式启动mongos
我之前配置的config server的复制集名称为
rs-conf
4. 添加创建的分片
将我们前面创建的分片添加进去,使用命令
mongo --port 27018登录mongos,使用
sh.addShard添加分片
使用
sh.status()查看分片信息
5. 开启数据库的分片
为了在数据库中使用分片,我们要使用sh.enableSharding()开启数据库的分片
可以看到数据库
test开启了分片
总结如下:
1. 配置分片复制集
mongod --port 3000 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-0" --logpath "C:\newsavedata\mangodata\log\rs-a-0.log"
mongod --port 3001 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-1" --logpath "C:\newsavedata\mangodata\log\rs-a-1.log"
mongod --port 3002 --shardsvr --replSet rs-a --dbpath "C:\newsavedata\mangodata\data\rs-a-2" --logpath "C:\newsavedata\mangodata\log\rs-a-2.log"
# --install --serviceName "mongodb"
mongo --port 3000
rs.initiate()
rs.add("computerName:3001")
rs.add("computerName:3002")
2. 配置Config Server 复制集
mongod.exe --port 27019 --configsvr --replSet rs-conf --dbpath "C:\newsavedata\mangodata\data\config0" --logpath "C:\newsavedata\mangodata\log\config0.log"
mongod.exe --port 27020 --configsvr --replSet rs-conf --dbpath "C:\newsavedata\mangodata\data\config1" --logpath "C:\newsavedata\mangodata\log\config1.log"
mongo --port 27019
rs.initiate()
rs.add("computerName:27020")
3. 配置路由服务器 router server
mongos --configdb rs-conf/computerName:27019,computerName:27020 --logpath "C:\newsavedata\mangodata\log\mongos.log" --port 27018
4. 添加创建的分片
将我们前面创建的分片添加进去,使用命令 mongo --port 27018 登录mongos,使用sh.addShard添加分片
sh.addShard("rs-a/computerName:3000,computerName:3001,computerName:3002")
5. 开启数据库的分片
为了在数据库中使用分片,我们要使用sh.enableSharding()开启数据库的分片
sh.enableSharding("test")
6. 在mongo client端链接mongo server端的路由server
mongo --port 27018
//在mongo的路由server上执行数据库的增删改查操作
7. 在新命令行窗口,执行如下命令,启动mongo-connector
//注意,此处的端口号指定为mongo的路由server的端口号
mongo-connector -m 127.0.0.1:27018 -t 127.0.0.1:9200 -d elastic2_doc_manager
Logging to mongo-connector.log
//当主节点3000挂掉,从节点3001变成PRIMARY时,如果要手动重新切回来,需要执行下面命令
mongo --port 3001
//主动切换比较简单,通过在主库上执行rs.stepDown()方法即可
rs.stepDown()
//mongodb 复制集主节点切换方法
1。冻结其中的一个从节点,使其不参与到与primary 的内部选举工作
进入客户端,执行(单位:秒)
rs.freeze(30);
2.对原主节点进行降级
进入客户端,执行下面代码 (单位:秒)
rs.stepDown(15);
3.经过冻结和降级之后查看复制集状态
rs.status();
复制集顺利切换
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
相关文章推荐
- Windows搭建MongoDB分片以及复制集
- 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)
- android最全学习资料及路线整理分享 (安卓视频教程 从入门到大师 android开发环境搭建 windows和MAC 安卓源码大全4000套)
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(一)
- 第一天:NodeJs Windows环境搭建、学习资料地址、注意事项总结
- MongoDB学习以及集群搭建的实践全纪录
- mongodb基础系列—主从复制具体搭建以及解说
- Windows及linux环境下PHP的搭建教程学习资料汇总
- 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(一)
- mongodb学习:复制集搭建
- 【redis学习(一)】手把手教你windows下的redis安装以及集群搭建
- MongoDB学习资料二---MongoDB主从复制介绍(转)
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(二)
- Adroid学习笔记-入门资料以及V2.3系统开发环境搭建
- 1 kinect for windows(k4w) sdk介绍与环境配置以及k4w开发的一些学习资料
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三)
- 第一天:NodeJs Windows环境搭建、学习资料地址、注意事项总结
- 【redis学习(二)】手把手教你windows下的redis安装以及集群搭建
- Windows下搭建go语言开发环境 以及 开发IDE (附下载链接)