### 实验:分片集群搭建及扩容
#### 实验目标及流程
* 目标:学习如何搭建一个两分片的分片集群
* 环境:3台Linux虚拟机器,4Core 8GB
* 步骤:
* 配置域名解析
* 准备分片目录
* 创建第一个分片复制集并初始化
* 初始化分片集群,加入第一个分片
* 创建分片表
* 加入第二个分片
#### 实验架构
```
demo1 shard1(Primary|27017) shard2(Primary|27011) Config1(27019) mongos(27017)
```
```
demo2 Secondary|27010 Secondary|27011 Config2(27019)
```
```
demo3 Secondary|27010 Secondary|27011 Config3(27019)
```

| | member1 | member2 | member3 | member4 | member5 | member6 |
|-------|---------|---------|---------|---------|---------|---------|
| shard1 | ● | | ● | | ● | |
| shard2 | | ● | | ● | | ● |
| config | ● | | ● | | ● | |
| mongos | | ● | | ● | | ● |

demo1 member1.example.com member2.example.com

demo2 member3.example.com member4.example.com

demo3 member5.example.com member6.example.com

1. 配置域名解析
在3台虚拟器上分别执行以下3条命令,注意替换实际IP地址
```
echo "192.168.1.1 demo1 member1.example.com member2.example.com" >> /etc/hosts
echo "192.168.1.2 demo2 member3.example.com member4.example.com" >> /etc/hosts
echo "192.168.1.3 demo3 member5.example.com member6.example.com" >> /etc/hosts
```
2. 准备分片目录
在各服务器上创建数据目录,我们用`/data`,请按自己需要修改为其他目录:
- 在member1/member3/member5上执行以下命令:
mkdir -p /data/shard1/
mkdir -p /data/config/
_ 在member2/member4/member6上执行以下命令:
mkdir -p /data/shard2/
mkdir -p /data/mongos/
3. 创建第一个分片用的复制集
在member1/member3/member5上执行以下命令
```
mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath
/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1
```
4. 初始化第一个分片复制集
```
mongo --host member1.example.com:27010
rs.initiate({
_id : "shard1",
"members": [
{
"_id": 0,
"host": "member1.example.com:27010"
},
{
"_id": 1,
"host": "member3.example.com:27010"
},
{
"_id": 2,
"host": "member5.example.com:27010"
},
]
})
```
5. 创建config server复制集
在member1/member3/member5上执行以下命令
```
mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath
/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1
```
6. 初始化config server复制集
```
mongo --host member1.example.com:27010
rs.initiate({
_id : "shard1",
"members": [
{
"_id": 0,
"host": "member1.example.com:27010"
},
{
"_id": 1,
"host": "member3.example.com:27010"
},
{
"_id": 2,
"host": "member5.example.com:27010"
},
]
})
```
7. 在第一台机器上搭建mongos
```
# mongos --bind_ip 0.0.0.0 --logpath /data/mongos/mongos.log --port 27017 --fork
-- configdb config/member1.example.com:27019,member3.example.com:27019,member5.example.com:27019
# 连接到mongos,添加分片
# mongo --host member1.example.com:27017
mongos>
sh.addShard("shard1/member1.example.com:27010,member3.example.com:27010,member5.example.com:27010");
```
8. 创建分片表
```
# 连接到mongos,创建分片集合
# mongo --host member1.example.com:27017
mongos > sh.status();
mongos > sh.enableSharding("foo");
mongos > sh.shardCollection("foo.bar", {_id:'hashed'});
mongos > sh.status();
插入测试数据
use foo
for (var i = 0; i < 10000; i++) {
db.bar.insert({i:i});
}
```
9. 创建第2个分片复制集
在 member2/member4/member6上执行以下命令
```
mongod --bind_id 0.0.0.0 --replSet shard2 --dbpath /data/shard2
--logpath /data/shard2/mongod.log --port 27011 --fork --shardsvr --wiredTigerCacheSizeGB 1
```
10. 初始化第二个分片的复制集
```
# mongo --host member2.example.com:27011
rs.initiate({
_id : "shard2",
"members": [
{
"_id": 0,
"host": "member2.example.com:27011"
},
{
"_id": 1,
"host": "member4.example.com:27011"
},
{
"_id": 2,
"host": "member6.example.com:27011"
},
]
})
```
11. 加入第2个分片
```
# 连接到mongos,添加分片
# mongo --host member1.example.com:27017
mongos>
sh.addShard("shard2/member2.example.com:27011,member4.example.com:27011,member6.example.com:27011");
mongos>sh.status()
```

MongoDB分片集群搭建及扩容的更多相关文章

  1. MongoDB 分片集群搭建

    一.概述 分片是一种在多台机器上分配数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作.有两种解决系统增长的方法:垂直扩展和水平扩展. 垂直扩展涉及增加单个服务器的容量,例如使用 ...

  2. MongoDB 分片集群实战

    背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁 ...

  3. 分布式文档存储数据库之MongoDB分片集群

    前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...

  4. Windows 搭建MongoDB分片集群(一)

    一.角色说明 要构建一个MongoDB分片集群,需要三个角色: shard server  即存储实际数据得分片,每个shard 可以是一个Mongod实例,也可以是一组mongod实例构成得Repl ...

  5. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  6. Windows 搭建MongoDB分片集群(二)

    在本篇博客中我们主要讲描述分片集群的搭建过程.配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程.第二步就是启动一个mongos与集群通信.下面我们一步步来描述集群的搭建过程 ...

  7. MongoDB分片集群原理、搭建及测试详解

    随着技术的发展,目前数据库系统对于海量数据的存储和高效访问海量数据要求越来越高,MongoDB分片机制就是为了解决海量数据的存储和高效海量数据访问而生. MongoDB分片集群由mongos路由进程( ...

  8. 网易云MongoDB分片集群(Sharding)服务已上线

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB sharding cluster(分片集群)是MongoDB提供的数据在线水平扩展方案,包括 ...

  9. [ MongoDB ] 分片集群及测试

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量. ...

随机推荐

  1. Linux学习 - 帮助命令

    一.获取帮助信息man(manual) 1 功能 获得命令或配置文件的帮助信息 2 语法 man  [1.5]  [命令或配置文件] 1 命令的帮助 (可用 whatis 代替) 5 配置文件的帮助 ...

  2. OC-ARC,类扩展,block

    总结 标号 主题 内容 一 autorelease autorelease基本概念/自动释放池/autorelease基本使用 二 autorelease注意事项 注意点/应用场景 三 ARC 什么是 ...

  3. SpringMVC(1):SpringMVC入门

    一,MVC 概述 MVC:模型,视图,控制器,是一种软件设计规范,本质是将业务逻辑,数据,显示,分离的方式来编写代码:前后端分离 Model:数据模型,提供要展示的数据,一般我们都会把这两个分离开来. ...

  4. LVS nat模型+dr模型

    nat模型 在 rs1 和 rs2  安装httpd  并配置测试页,启动 [root@rs1 ~]# yum install httpd -y[root@rs1 ~]# echo "thi ...

  5. Hystrix断路器中的服务熔断与服务降级

    一.Hystrix断路器 微服务架构特点就是多服务,多数据源,支撑系统应用.这样导致微服务之间存在依赖关系.如果其中一个服务故障,可能导致系统宕机,这就是所谓的雪崩效应. 1.为什么需要断路器 服务雪 ...

  6. centos7 docker 修改Nginx文件

    1.docker 安装 nginx : docker安装Nginx还是很简单的,可以参考百度文章 ,或者参照docker安装mysql :https://www.cnblogs.com/jonrain ...

  7. pop和push等使用方法,every和some、join

    push  在最前面添加一个元素 pop  移除最后一个元素 shift  移除第一个元素 unshift  放入一个元素,且排在最前 arr.splice(2,2)//移除从指定下标 slice(2 ...

  8. Netty 编解码奥秘

    Netty中编解码 Netty 的解码器有很多种,比如基于长度的,基于分割符的,私有协议的.但是,总体的思路都是一致的. 拆包思路:当数据满足了 解码条件时,将其拆开.放到数组.然后发送到业务 han ...

  9. Linux服务加入systemctl|service管理

    一.加入systemctl 1.添加 vim /usr/lib/systemd/system/user_timejob.service # copy to /usr/lib/systemd/syste ...

  10. JavaWeb的三大作用域

    三大作用域描述 名称 类型 描述 request HttpServletRequest 将数据放在请求作用域中,在一次请求中实现数据的共享,比如请求转发 session HttpSession 将数据 ...