### 实验:分片集群搭建及扩容
#### 实验目标及流程
* 目标:学习如何搭建一个两分片的分片集群
* 环境: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. MyBatis(1):实现MyBatis程序

    一,MyBatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. Element-ui 中对表单进行验证

    Element-ui 中对表单(Form)绑定的对象中的对象属性进行校验 如果是直接绑定属性,是可以的,但是绑定对象中的属性就需要特别处理,需要在rules中添加双引号 " "或者 ...

  3. spring cloud 通过 ribbon 实现客户端请求的负载均衡(入门级)

    项目结构 环境: idea:2020.1 版 jdk:8 maven:3.6.2 1. 搭建项目 ( 1 )父工程:spring_cloud_demo_parent pom 文件 <?xml v ...

  4. Python循环控制

    一.比较符 和算术操作符一样,布尔操作符也有操作顺序.在所有算术和比较操作符求值后,Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符. 二.if控制 if name ...

  5. Kerboros 认证

    转:Kerberos介绍(全)

  6. &pwn1_sctf_2016 &ciscn_2019_n_1 &ciscn_2019_c_1 &ciscn_2019_en_2&

    在做buu题目的时候,发现在最上面有几道被各位师傅打到1分的题,强迫症逼迫我去做那几道题. 这里来试着去解决这些题...讲真的,我感觉自己刷题真的少,即使是很简单的栈题目,我还是能学习到新的东西.这里 ...

  7. CF420A Start Up 题解

    Content 给定一个长度为 \(n\) 的字符串,求这个字符串整个反转过来后是否和原字符串一样. 数据范围:\(1\leqslant n\leqslant 10^5\). Solution 众所周 ...

  8. Linq中常用语法

    using System;using System.Collections.Generic;using System.ComponentModel.Design;using System.Linq;u ...

  9. C++实现反射---RTTR库的使用

    使用过C#或者Java 的童鞋,应该对这些语言提供的反射机制有所了解.所谓反射,在我看来就是在只知道一个类的名字(字符串形式)的情况下,自动创建出具体的类实例,并且能够枚举该类型拥有的属性.方法等信息 ...

  10. DKT模型及其TensorFlow实现(Deep knowledge tracing with Tensorflow)

    今年2月15日,谷歌举办了首届TensorFlow Dev Summit,并且发布了TensorFlow 1.0 正式版. 3月18号,上海的谷歌开发者社区(GDG)组织了针对峰会的专场回顾活动.本文 ...