mongo 3.4分片集群系列之二:搭建分片集群--哈希分片
这个系列大致想跟大家分享以下篇章:
2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片
3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全
4、mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域
这一篇是实践篇。
1、说说分片集群的架构
这里要搭建的分片集群架构如下:
2个mongos,1个三个成员的副本集配置服务器,2个单实例的分片。图示如下:

简单介绍一下MongoDB分片集群由以下组件组成:
2、分片前注意事项
关于分片集群的一些注意点,请参阅:mongo 3.4分片集群系列之一:浅谈分片集群 ,其中第4点,分片前考虑事项。
好啦。慎重考虑完分片前考虑事项的话,接下来就进入实践吧~~~
3、搭建哈希分片集群
下面是参照官网的 https://docs.mongodb.com/manual/tutorial/deploy-sharded-cluster-ranged-sharding/
3.1、搭建前准备:
物理环境:
我这边是用两个虚拟机模仿两台服务器的(真实服务器也按照这个方法实践,可以行得通)。
IP分别为192.168.209.155和192.168.209.156。其中,这两个IP之间必须互通。即192.168.209.155可以ping通192.168.209.156,192.168.209.156也可以ping通192.168.209.155。
配置大致如下:(此操作是建立在mongo3.4版本)
| 名称 | 主机 | 端口 | 副本集 | Data路径 | Log路径 | 配置文件路径 |
| router1 | 192.168.209.155 | 6666 | 无 | 无 | 无 | /etc/mongo_router1.conf |
| router2 | 192.168.209.156 | 6666 | 无 | 无 | 无 | /etc/mongo_router2.conf |
| config1 | 192.168.209.155 | 6000 | mongo_config | /mongo_config1/data | /mongo_config1/log | /mongo_config1/mongo_config1.conf |
| config2 | 6001 | /mongo_config2/data | /mongo_config2/log | /mongo_config2/mongo_config2.conf | ||
| config3 | 6002 | /mongo_config3/data | /mongo_config3/log | /mongo_config3/mongo_config3.conf | ||
| shard1 | 192.168.209.155 | 6100 | 无 | /mongo_shard1/data | /mongo_shard1/log | /mongo_shard1/mongo_shard1.conf |
| shard2 | 192.168.209.156 | 6100 | 无 | /mongo_shard2/data | /mongo_shard2/log | /mongo_shard2/mongo_shard2.conf |
接下来就来搭建哈希分片集群咯~~~
3.2、创建配置服务器副本集
部署具有三个成员的配置服务器副本集。
(1) mongo_config1 (在192.168.209.155上操作)
1) 创建数据路径文件夹和日志路径文件夹
# sudo mkdir –p /mongo_config1/data
# sudo mkdir –p /mongo_config1/log
2) 创建配置文件
# sudo vim /mongo_config1/mongo_config1.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
storage:
dbPath: “/mongo_config1/data”
indexBuildRetry: false
systemLog:
destination: file
path: “/mongo_config1/log/mongo_config1.log
net:
port: 6000
sharding:
clusterRole: configsvr
replication:
replSetName: mongo_config
如下图:

关于mongo3.4的配置文件YAML格式,也可以参阅我的另一篇文章mongo3.4 配置文件 注意事项
3) 启动mongod实例
# mongod --fork --config /mongo_config1/mongo_config1.conf
--fork 是以线程方式启动mongod服务
--config 指定配置文件路径
(2) mongo_config2(在192.168.209.155上操作)
1) 创建数据路径文件夹和日志路径文件夹
# sudo mkdir –p /mongo_config2/data
# sudo mkdir –p /mongo_config2/log
2) 创建配置文件
# sudo vim /mongo_config2/mongo_config2.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
storage:
dbPath: “/mongo_config2/data”
indexBuildRetry: false
systemLog:
destination: file
path: “/mongo_config2/log/mongo_config2.log
net:
port: 6001
sharding:
clusterRole: configsvr
replication:
replSetName: mongo_config
如下图:

3) 启动mongod实例
# mongod --fork --config /mongo_config2/mongo_config2.conf
--fork 是以线程方式启动mongod服务
--config 指定配置文件路径
(3) mongo_config3 (在192.168.209.155上操作)
1) 创建数据路径文件夹和日志路径文件夹
# sudo mkdir –p /mongo_config3/data
# sudo mkdir –p /mongo_config3/log
2) 创建配置文件
# sudo vim /mongo_config3/mongo_config3.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
storage:
dbPath: “/mongo_config3/data”
indexBuildRetry: false
systemLog:
destination: file
path: “/mongo_config3/log/mongo_config3.log
net:
port: 6002
sharding:
clusterRole: configsvr
replication:
replSetName: mongo_config
如下图:

3) 启动mongod实例
# mongod --fork --config /mongo_config3/mongo_config3.conf
--fork 是以线程方式启动mongod服务
--config 指定配置文件路径
(4) 初始化副本集mongo_config(在192.168.209.155上操作)
1) 连接任意一个mongod实例
# sudo mongod --port 6000
2) 初始化副本集
输入以下命令:(这里只是为了方便理解,其实命令行打成一行即可)
rs.initiate(
{
_id: "mongo_config",
configsvr: true,
members: [
{ _id : 0, host : "192.168.209.155:6000" },
{ _id : 1, host : "192.168.209.155:6001" },
{ _id : 2, host : "192.168.209.155:6002" }
]
}
)
_id:必须匹配传递给mongod 的--replSet参数。
members:是一个数组,每个副本集成员都需要一个文档。
configsvr:必须设置true。
3.3、创建分片
(1) mongo_shard1 (在192.168.209.155上操作)
1) 为mongo_shard1创建配置文件
# sudo vim /mongo_shard1/mongo_shard1.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
storage:
dbPath: “/mongo_shard1/data”
indexBuildRetry: false
systemLog:
destination: file
path: “/mongo_shard1/log/mongo_shard1.log
net:
port: 6100
sharding:
clusterRole: shardsvr
如下图:

2) 启动mongod实例
# mongod --fork --config /mongo_shard1/mongo_shard1.conf
(2) mongo_shard2(在192.168.209.156上操作)
1) 为mongo_shard2创建配置文件
# sudo vim /mongo_shard2/mongo_shard2.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
storage:
dbPath: “/mongo_shard2/data”
indexBuildRetry: false
systemLog:
destination: file
path: “/mongo_shard2/log/mongo_shard2.log
net:
port: 6101
sharding:
clusterRole: shardsvr
如下图:

2) 启动mongod实例
# mongod --fork --config /mongo_shard2/mongo_shard2.conf
3.3、创建路由
(1) mongo_router1(在192.168.209.155上操作)
1) 为mongo_router1创建配置文件
# sudo vim /etc/mongo_router1.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
net:
port: 6666
sharding:
configDB: mongo_config/192.168.209.155:6000,192.168.209.155:6001,192.168.209.155:6002
如下图:

2) 启动mongos实例
# mongos --config /etc/mongo_router1.conf
(2) mongo_router2(在192.168.209.156上操作)
1) 为mongo_router2创建配置文件
# sudo vim /etc/mongo_router2.conf
文件中的配置如下:(所有空位都是空格,不是TAB键哦,大小写是严格区分的)
net:
port: 6666
sharding:
configDB: mongo_config/192.168.209.155:6000,192.168.209.155:6001,192.168.209.155:6002
如下图:

2) 启动mongos实例
# mongos --config /etc/mongo_router2.conf
3.4、添加分片到集群
(1) 连接任意一个mongos,这里连接mongo_router1(在192.168.209.155上操作)
# mongo --port 6666
(2) 添加分片
1) 添加第一个分片mongo_shard1
sh.addShard(“192.168.209.155:6100”);
2) 添加第二个分片mongo_shard2
sh.addShard(“192.168.209.156:6100”);
3.5、为数据库启用分片(直接在3.4的窗口中运行即可)
sh.enableSharding(“databaseName”);
其中databaseName,为要分片的数据库。
3.6、使用哈希分片分片集合(直接在3.5的窗口中运行即可)
这里有两种情况,一种是空集合,另一种是有数据的集合,但对于这两种情况都建议用以下方法。
(1) 对于确定作为分片键的字段,建立哈希索引
use databaseName;
db.collectionName.createIndex(Name:”hashed”);
其中,databaseName是3.5启用的分片数据库名称;collectionName是要分片的集合;Name是作为分片键的字段。
(2) 哈希分片
sh.shardCollection(“databaseName.collectionName”,{Name:”hashed”})
其中,databaseName是3.5启用的分片数据库名称;collectionName是要分片的集合;Name是作为分片键的字段。
--------------------------------------- over ------------------------------------------------------
以上资料,大部分是参考官网的资料,在此表示感谢。
https://docs.mongodb.com/manual/tutorial/deploy-sharded-cluster-ranged-sharding/
mongo 3.4分片集群系列之二:搭建分片集群--哈希分片的更多相关文章
- mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Elasticsearch-6.7.0系列(二)ES集群安装与验证
准备3台centos7机器/虚拟机,每台都安装上elasticsearch6.7.0 ,安装过程参考我的另一篇博客<Elasticsearch-6.7.0系列(一)9200端口 .tar.gz版 ...
- 集群技术(二) MySQL集群简介与配置详解
when?why? 用MySQL集群? 减少数据中心结点压力和大数据量处理(读写分离),采用把MySQL分布,一个或多个application对应一个MySQL数据库.把几个MySQL数据库公用的数据 ...
- MongoDB学习4:MongoDB复制集机制和原理,搭建复制集
1.复制集的作用 1.1 MongoDB复制集的主要意义在于实现服务高可用 1.2 它的实现依赖于两个方面的功能: · 数据写入时将数据迅速复制到另一个独立节点上 · 在接收写入的 ...
- 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02 共识——裂脑问题及法定票数的重要性 共识是 ...
- WAS集群系列(6):集群搭建:步骤4:安装WAS升级软件
逐步点击"下一步",注意一处流程,例如以下列举: "升级软件"安装的路径设置,建议与之前的WAS及IHS安装的绝对路径同样,例如以下所看到的: 逐步点击,完毕安 ...
- WAS集群系列(3):集群搭建:步骤1:准备文件
说明:"指示轨迹"为"点选顺序",截图为点击后效果截图 环境 项目点 指标 WAS版本号 7.0 操作系统 Windows 2008 系统位数 64bit 内存 ...
- WAS集群系列(5):集群搭建:步骤3:安装IHS软件
选择"安装IBM HTTPServer"选项,点击"安装向导".例如以下图提示: 安装提示,逐步点击"下一步",当中偶有几处细节注意就可以. ...
随机推荐
- android_handler(二)
这篇记录 android 消息机制中.WorkThread 模拟向网络訪问数据,获得数据后,返回 message 发送给 MainThread ,并改动 TextView 的 text 的这种一个步骤 ...
- SVN的配置与使用方法
1.所选服务器安装包:VisualSVN-Server-2.1.3.msi. 2.客户端安装包:TortoiseSVN-1.6.2.16344-win32-svn-1.6.2.msi 一.服务器的安装 ...
- Linux 下添加 Eclipse 桌面图标
1. sudo gedit /usr/share/applications/eclipse.desktop 2. 向eclipse .desktop中添加以下内容: [Desktop Entry] ...
- Office 佳能MP259打印EXCEL线条歪曲,字迹模糊怎么办
这大概是墨盒的缘故,判断方法很简单,随便找一个文档,点击打印,属性 在维护选项卡中把清洗和打印头对齐做一遍(一般字迹模糊可以通过清洗解决,线条歪曲可以通过打印头对齐解决),如果你打印的结果是纸张边 ...
- javascript闭包具体解释
今天我们从内存结构上来解说下 javascript中的闭包概念. 闭包:是指有权訪问另外一个函数作用域中的变量的函数. 创建闭包的常见方式就是在一个函数内部创建另外一个函数. 在javascript中 ...
- easyui中点击datagrid的分页刷新按钮,数据无法更新到最新状态
原因分析:点击刷新按钮是对当前页数据进行reload,因此所传的请求参数皆为上一次加载当前页的参数即datagrid的load方法中的参数,主要是因为请求的最终时间无法更新到最新状态 解决方案:对点击 ...
- web container和spring container之间的关系
1 tomcat是一个web container,它提供java web应用的运行环境,因为它实现了好多java ee规范,比如java Servlet.JSP等,也就是说,没有它,java web应 ...
- 蓝桥 PREV-30 历届试题 波动数列 【动态规划】
历届试题 波动数列 时间限制:1.0s 内存限制:256.0MB 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. ...
- 偏差(bias)和方差(variance)及其与K折交叉验证的关系
先上图: 泛化误差可表示为偏差.方差和噪声之和 偏差(bias):学习算法的期望预测与真实结果(train set)的偏离程度(平均预测值与真实值之差),刻画算法本身的拟合能力: 方差(varianc ...
- tyvj 1013 找啊找啊找GF
题目大意: 有一个背包,里面的东西需要满足两个条件,不只是体积 求最多能装多少东西,这些东西的东西最小价值 思路: 双重背包 开两个数组,记录装的东西数量和价值 #include<iostrea ...