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"选项,点击"安装向导".例如以下图提示: 安装提示,逐步点击"下一步",当中偶有几处细节注意就可以. ...
随机推荐
- Lua迭代器
在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素.迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,可以通过闭包提供的机制来实现这个任务(闭包中的外部局部变量可以用 ...
- 016 ppp authentication
Press RETURN to get started! Router>en Router#config t Enter configuration commands, one pe ...
- 014 DNS
解析主机名 Router>en Password: Router#config t Enter configuration commands, one per line. End with C ...
- Websphere优化 (四个方面)举例
Websphere优化 一.简单介绍 环境 名称 版本号 server操作系统 Centos 5.6 应用server操作系统 Windows 7 Websphere版本号 WAS 7.0 数据库 O ...
- JAVA获取操作系统的信息
列出全部信息: Properties prop = System.getProperties(); prop.list(System.out); 获取某个信息: String os = prop.ge ...
- chrome.socket
chrome.socket https://chajian.baidu.com/developer/apps/socket.html#method-create 描述: 使用 chrome.socke ...
- String类的四个默认成员函数
优化版的拷贝构造函数,先创建一个暂时实例tmp,接着把tmp._ptr和this->_ptr交换,因为tmp是一个局部变量.程序执行到该函数作用域外,就会自己主动调用析构函数.释放tmp._pt ...
- .net的程序的逆向分析。
背景:碰到一个由c#写的exe,由于之前没有分析过.net的程序,记录下分析流程. 1)peid加载判断类型,可以看出没有加壳. 2)搜索c#的反编译以及调试工具. 1.NET.Reflector以及 ...
- NSoup解析处理Html
以前在做网页静态生成的时候,使用正则表达式分析提取网页链接.最近搜索了解到java有个Jsoup解析网页,对应.net有个nsoup.处理网页非常好用. Document doc = NSoupCli ...
- 【OI】单调队列
所谓单调队列,就是一个保持着某种性质的队列,通常是队列从队头到队尾,维护一种递增递减的关系. 这种队列通常用来解决一些连续区间的最值问题. 这种队列的入队要保证符合当前的性质,例如一个递增的单调序列( ...