### 实验:分片集群搭建及扩容
#### 实验目标及流程
* 目标:学习如何搭建一个两分片的分片集群
* 环境: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. ReactiveCocoa操作方法-秩序

    doNext:      执行Next之前,会先执行这个Block doCompleted:      执行sendCompleted之前,会先执行这个Block - (void)doNext { [ ...

  2. Mysql的索引调优详解:如何去创建索引以及避免索引失效

    在正式介绍Mysql调优之前,先补充mysql的两种引擎 mysql逻辑分层 InnoDB:事务优先(适合高并发操作,行锁) MyISAM:性能优先(表锁) 查看使用的引擎: show variabl ...

  3. zabbix之源码安装

    #:官网地址 https://www.zabbix.com/documentation/4.0/zh/manual/installation/install #:解压并创建用户 root@ubuntu ...

  4. 一、手把手教你docker搭建fastDFS文件上传下载服务器

    在搭建fastDFS文件上传下载服务器之前,你需要准备的有一个可连接的linux服务器,并且该linux服务器上已经安装了docker,若还有没安装docker的,先百度自行安装docker. 1.执 ...

  5. 【Linux】【Services】任务计划、周期性任务执行

    Linux任务计划.周期性任务执行       未来的某时间点执行一次某任务:at, batch     周期性运行某任务:crontab         执行结果:会通过邮件发送给用户        ...

  6. 阿里云esc 安装 docker

    1. 更新 yum 到最新: yum update (用 root 用户登录,无需加 sudo,如果不是,需要加,即  yum update ) 2. 安装软件包:yum-util(提供 yum-co ...

  7. Spring Boot的异步任务、定时任务和邮件任务

    一.异步任务 1.启动类添加注解@EnableAsync,开启异步任务注解功能: 2.需要异步执行的方法上添加@Async注解. 二.定时任务 1.启动类添加注解@EnableScheduling,开 ...

  8. 【MySQL】排名函数

    https://www.cnblogs.com/shizhijie/p/9366247.html 排名函数 主要有rank和dense_rank两种 区别: rank在排名的时候,排名的键一样的时候是 ...

  9. Abp Vnext 替换Redis的实现为csredis

    Host项目安装csredis的nuget包和data protect包并 移除 Microsoft.Extensions.Caching.StackExchangeRedis Microsoft.A ...

  10. MySQL如何把varchar类型字段转换成int类型进行倒叙排序

    SELECT * FROM sheet2 t1 WHERE t1.`金额`+'0' ORDER BY t1.`金额` DESC;