MongoDB在单机上搭建分片副本集群(windows)
------------------------------
1.安装MongoDB
...
...
------------------------------
2.准备好文件夹


--config:配置文件夹
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20001
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20002
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20003
--shard1:分片1文件夹
mkdir F:\work\MongoDB\mongodb\data\shard37017
mkdir F:\work\MongoDB\mongodb\data\shard37018
mkdir F:\work\MongoDB\mongodb\data\shard37019
--shard2:分片2文件夹
mkdir F:\work\MongoDB\mongodb\data\shard37027
mkdir F:\work\MongoDB\mongodb\data\shard37028
mkdir F:\work\MongoDB\mongodb\data\shard37029
--logs:日志文件夹
mkdir F:\work\MongoDB\mongodb\data\mongodb\logs
------------------------------
3.创建日志文件
f:
cd F:\work\MongoDB\mongodb\data\mongodb\logs
--config servers日志
echo>configsvr_20001.log
echo>configsvr_20002.log
echo>configsvr_20003.log
--mongos servers日志
echo>mongos40004.log
--shard servers shard1分片副本集日志
echo>shard_m11_37017.log
echo>shard_m11_37027.log
echo>shard_m11_37037.log
--shard servers shard2分片副本集日志
echo>shard_m11_37018.log
echo>shard_m11_37028.log
echo>shard_m11_37038.log
------------------------------
4.启动配置进程(config servers)
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20001 --port 20001 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20001.log --logappend
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20002 --port 20002 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20002.log --logappend
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20003 --port 20003 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20003.log --logappend
------------------------------
5.启动路由进程(mongos)
F:\work\MongoDB\mongodb\bin\mongos --configdb 127.0.0.1:20001,127.0.0.1:20002,127.0.0.1:20003 --port 40000 --chunkSize 64 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\mongos40004.log --logappend
------------------------------
6.启动分片进程(shard servers)
--启动shard1副本集
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37017 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37017 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37017.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37027 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37027 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37027.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37037 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37037 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37037.log --logappend
--启动shard2副本集
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37018 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37018 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37018.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37028 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37028 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37028.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37038 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37038 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37038.log --logappend
------------------------------
7.开始设置分片副本集
--shard1副本集
a.设置第一个分片副本集,必须使用admin数据库,登录命令如下
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37017/admin
b.定义副本集配置(priority:被选举为主节点的优先级越大越高;arbiterOnly:仲裁者节点,只投票,不存储及读写)
config = { _id:"shard1",members:[
{_id:0,host:"127.0.0.1:37017",priority:1},
{_id:1,host:"127.0.0.1:37027",priority:2},
{_id:2,host:"127.0.0.1:37037",arbiterOnly:true}
]
}
c.初始化副本集命令
rs.initiate(config)
--shard2副本集
a.设置第二个分片副本集,必须使用admin数据库,登录命令如下
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37018/admin
b.定义副本集配置(priority:被选举为主节点的优先级越大越高;arbiterOnly:仲裁者节点,只投票,不存储及读写)
config = { _id:"shard2",members:[
{_id:0,host:"127.0.0.1:37018",priority:1},
{_id:1,host:"127.0.0.1:37028",priority:2},
{_id:2,host:"127.0.0.1:37038",arbiterOnly:true}
]
}
c.初始化副本集命令
rs.initiate(config)
------------------------------
8.检查下副本状态:
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37028/admin
rs.status();
------------------------------
9.设置自动分片生效
配置服务器,路由服务器,各个分片服务器,以上操作配置完毕
不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
a.连接到mongs,并切换到admin
新开命令行,输入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin
b.串联路由服务器与分配副本集命令
db.runCommand( { addshard :"shard1/127.0.0.1:37017,127.0.0.1:37027,127.0.0.1:37037"});
db.runCommand( { addshard :"shard2/127.0.0.1:37018,127.0.0.1:37028,127.0.0.1:37038"});
------------------------------
10.查看分片服务器配置
db.runCommand({listshards : 1 });
执行结果
mongos> db.runCommand({listshards : 1});
{
"shards": [
{
"_id": "shard1",
"host": "shard1/127.0.0.1:37017,127.0.0.1:37027"
},
{
"_id": "shard2",
"host": "shard2/127.0.0.1:37018,127.0.0.1:37028"
}
],
"ok": 1
}
PS:因为37037、37038是每个分片副本集的仲裁节点,所以在上面结果没有列出来。
查看均衡器,默认是打开的:
sh.getBalancerState();
------------------------------
11.如何让录入的数据自动分片
希望插入数据,数据能够自动分片,那么还需要做如下工作:
连接在mongos上,准备让指定的数据库、指定的集合分片生效。
新开命令行,输入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin
a.指定分片生效
db.runCommand( { enablesharding:"app"});--app是指定的数据库,随便指定,没有会自建,插入数据才会生效数据库
b.指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection :"app.download",key : {name: 1} } )
app:数据库
download:数据集collection,也就是表
name:表里的分片键
ex.根据name自动分片到 shard1,shard2,shard3 上面去。要这样设置是因为不是所有 mongodb 的数据库和表都需要分片!
------------------------------
12.配置片键
需要进入admin数据库里面去执行配置命令:
新开命令行,输入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin
use app
show collections
for(var i = 0;i < 10; i ++){db.download.insert({"name":i})}
--建立索引
db.download.createIndex({"name": "hashed" })
sh.shardCollection("app.download", { "name": "hashed"})
--查看状态
db.stats()
db.download.stats()
关注count信息,及shard1和shard2种的count信息即可知道分片是否成功
--查看sharding分片状态
db.printShardingStatus();
MongoDB在单机上搭建分片副本集群(windows)的更多相关文章
- MongoDB在单机上搭建分片副本集群(windows),版本二
配置可以参考前面一篇 https://www.cnblogs.com/a-horse-mosaic/p/9284010.html 副本集是一组服务器,其中有一个主服务器(primary),用于处理客户 ...
- 在 Ubuntu 上搭建 Hadoop 分布式集群 Eclipse 开发环境
一直在忙Android FrameWork,终于闲了一点,利用空余时间研究了一下Hadoop,并且在自己和同事的电脑上搭建了分布式集群,现在更新一下blog,分享自己的成果. 一 .环境 1.操作系统 ...
- mongodb3.6集群搭建:分片+副本集
mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)
1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...
- [原创]在Docker上部署mongodb分片副本集群。
一.安装docker. 请参考:http://www.cnblogs.com/hehexiaoxia/p/6150584.html 二.编写dockerfile. 1.在根目录下创建mongod的do ...
- MongoDB for OPS 03:分片 shard 集群
写在前面的话 上一节的复制集也就是主从能够解决我们高可用和数据安全性问题,但是无法解决我们的性能瓶颈问题.所以针对性能瓶颈,我们需要采用分布式架构,也就是分片集群,sharding cluster! ...
- PC(win10)上搭建 kubernetes + docker 集群环境
最近kubernetes很火,加上我又在寻找适合快速搭建测试环境的方法,kubernetes的理念很适合用于测试环境的搭建. 因此在学习的过程中写下此教程(记录)以供回顾. 0x00 环境准备 0x0 ...
- Nginx + Tomcat 在 Windows7 上搭建负载均衡集群
一.安装Tomcat和Nginx 首先安装两个apache-tomcat-8.0.41,下载地址:http://tomcat.apache.org 并安装一个nginx-1.13.0,下载地址http ...
- centos 7上搭建HDP2.3集群
centos 7上安装 cat /etc/redhat-release
随机推荐
- attention机制的实现
本文转自,http://www.jeyzhang.com/understand-attention-in-rnn.html,感谢分享! LSTM 中实现attention:https://distil ...
- matlab练习程序(演化策略ES)
还是这本书上的内容,不过我看演化计算这一章是倒着看的,这里练习的算法正好和书中介绍的顺序是相反的. 演化策略是最古老的的演化算法之一,和上一篇DE算法类似,都是基于种群的随机演化产生最优解的算法. 算 ...
- Java—IO流 文件的编码
文件的编码 package cn.test; import java.io.UnsupportedEncodingException; public class Demo15 { public sta ...
- 用Webstorm 运行React-native 工程时,出错:xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
解决方法:在 终端执行如下命令 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/ 注意:前提是你已经安装了xcode
- spring框架入门day01
struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少 --> [了解] spring ...
- CAA介绍(转)
CAA是DS公司正对于其一系列产品,eg:CATIA,ENOVIA,DELIMA,etc,进行二次开发的一个环境.与VC结合的比较紧密.CAAV4是用于Unix/Linux的,到CAAV5才移植到Wi ...
- docker nginx 反向代理
上一篇介绍了docker 安装和docker-compose配置 使用docker pull nginx:1.12.0 编写docker-compose.yml nginx: image: 17dae ...
- May 27th 2017 Week 21st Saturday
I learned the value of hard work by working hard. 只有真的努力了,才会知道努力的价值. I remember in the movie, The Da ...
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML图: IFactory: package com.cnblog.clarck ...
- Android(java)学习笔记10:同步中的死锁问题以及线程通信问题
1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...