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
随机推荐
- JSP + JavaBean + Servlet实现MVC设计模式
1.流程图: 2.代码清单 数据库脚本: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `userid` ) NOT NULL, `name` ...
- 一个程序猿试用有道云笔记VIP功能体验
熟悉我的朋友应该知道,我有一个微信公众号,叫做"汪子熙", 我会定期在上面推送技术文章. 而我绝大多数技术文章都是在每天上下班的地铁上用手机写的,然后到家后同步到电脑上,进行发表. ...
- python入门12 列表list
列表使用率较高,方法也多. 列表的定义 #coding:utf-8 #/usr/bin/python """ 2018-11-10 dinghanhua 列表 " ...
- OC static 和变量
#include <stdio.h> // 如果在不同源文件出现了同名的内部变量,那么这些变量将互不干扰 static int b; // 用static修饰的全部变量,可以称为内部变量 ...
- bzoj3816 矩阵变换
Description 给出一个 N 行 M 列的矩阵A, 保证满足以下性质: M>N. 矩阵中每个数都是 [0,N] 中的自然数. 每行中, [1,N] 中每个自然数都恰好出现一次.这意味着每 ...
- “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法
“标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 IQueryable& ...
- DSL-领域特定语言(英语:domain-specific language、DSL)
领域特定语言(英语:domain-specific language.DSL)指的是专注于某个应用程序领域的计算机语言.
- 2018.11.1 Hibernate中的Mapper关系映射文件
Customer.hbm.xml 基本的参数都在里面了 <?xml version="1.0" encoding="UTF-8"?> <!DO ...
- scope的四种作用域的使用
如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope=& ...
- Android学习笔记_71_Android 多个项目之间如何引用 项目怎样打jar包
一.将整个项目作为资源文件 1.需要将被应用的项目设置为库项目. 2.将该项目的配置文件中的四大组件清空,例如下面代码: <?xml version="1.0" encodi ...