博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB 的分片技术
阅读量:5974 次
发布时间:2019-06-19

本文共 5175 字,大约阅读时间需要 17 分钟。

hot3.png

    在MongoDB中分片技术 也就是集群。需要1台配置服务器配置各个节点的配置信息,1台路由服务器来知道每一台节点都在哪个地方并给用户提供各个节点数据的访问功能,还有多台节点服务器,存储节点数据。

    当前我有三台机器192.168.0.114,192.168.0.115,192.168.0.116,规划如下:

   搭建配置服务器:192.168.0.114

   搭建路由服务器:192.168.0.114

   搭建3个节点:192.168.0.114,192.168.0.115,192.168.0.116

(192.168.0.114 既做配置服务器,又做路由服务器,同时还做一个节点)

1    搭建配置服务器

      配置服务器参数

[root@dghost var]# cat /etc/mong_config1.conf dbpath=/var/config1--指定配置路径logpath=/var/log/mongodbs/log1.log--指定日志路径port=28001--指定配置端口logappend=true--指定打开节点开关fork=true--指定后台运行

当前这里我们搭建3个配置,其他两个如下:

[root@dghost var]# cat /etc/mong_config2.conf dbpath=/var/config2logpath=/var/log/mongodbs/log2.logport=28002logappend=truefork=trueconfigsvr=true
[root@dghost var]# cat /etc/mong_config3.conf dbpath=/var/config3logpath=/var/log/mongodbs/log3.logport=28003logappend=truefork=trueconfigsvr=true

启动这3个配置

[root@dghost var]# mongod -f /etc/mong_config1.conf about to fork child process, waiting until server is ready for connections.forked process: 2360child process started successfully, parent exiting[root@dghost var]# mongod -f /etc/mong_config2.conf about to fork child process, waiting until server is ready for connections.forked process: 2374child process started successfully, parent exiting[root@dghost var]# mongod -f /etc/mong_config3.conf about to fork child process, waiting until server is ready for connections.forked process: 2388child process started successfully, parent exiting[root@dghost var]# ps -ef|grep mongroot      2360     1  0 15:19 ?        00:00:00 mongod -f /etc/mong_config1.confroot      2374     1  1 15:19 ?        00:00:00 mongod -f /etc/mong_config2.confroot      2388     1  2 15:19 ?        00:00:00 mongod -f /etc/mong_config3.confroot      2401  2022  0 15:19 pts/0    00:00:00 grep mong

2    搭建路由服务器

    路由服务器要配置所有的节点都在哪

[root@dghost var]# cat /etc/mong_rount.conf port=28000--这个端口是路由端口configdb=192.168.0.114:28001,192.168.0.114:28002,192.168.0.114:28003--指定所有节点的IP和配置端口logpath=/var/log/mongodbs/mongos.log--指定路由的日志logappend=truefork=true

    启动路由服务器

[root@dghost var]# mongos -f /etc/mong_rount.conf about to fork child process, waiting until server is ready for connections.forked process: 2406child process started successfully, parent exiting[root@dghost var]# ps -ef|grep mongroot      2360     1  0 15:19 ?        00:00:01 mongod -f /etc/mong_config1.confroot      2374     1  0 15:19 ?        00:00:01 mongod -f /etc/mong_config2.confroot      2388     1  0 15:19 ?        00:00:01 mongod -f /etc/mong_config3.confroot      2406     1  0 15:22 ?        00:00:00 mongos -f /etc/mong_rount.confroot      2466  2022  0 15:22 pts/0    00:00:00 grep mong

到现在我们在192.168.0.114 上搭建了3个配置,1个路由。所有供又4个进程。

3    搭建所有的分片节点

[root@dghost var]# mkdir /data/mongodb -p# 先建立一个节点存储数据的路径[root@dghost var]# cat /data/mongodb/mongo1.conf dbpath=/data/mongodblogpath=/data/mongodb/mongo1.logfork=trueport=27020shardsvr=true# 配置好节点启动参数[root@dghost var]# mongod -f /data/mongodb/mongo1.conf about to fork child process, waiting until server is ready for connections.forked process: 2499child process started successfully, parent exiting#节点1 启动成功,启动的节点都这样做

节点搭建好之后做分片

[root@dghost var]# mongo 192.168.0.114:28000MongoDB shell version: 2.6.4connecting to: 192.168.0.114:28000/test#登陆路由服务器mongos> show dbsadmin   (empty)config  0.016GBmongos> use admin# 进入admin库mongos> db.runCommand({addshard:"192.168.0.114:27020",allowLocal:true}){ "shardAdded" : "shard0000", "ok" : 1 }#添加节点成功mongos> db.runCommand({addshard:"192.168.0.115:27020"}){ "shardAdded" : "shard0001", "ok" : 1 }#再加一个节点mongos> use configswitched to db configmongos> db.shards.find(){ "_id" : "shard0000", "host" : "192.168.0.114:27020" }{ "_id" : "shard0001", "host" : "192.168.0.115:27020" }# 检查已经添加的连个节点switched to db adminmongos> db.runCommand({"enablesharding":"test_database"}){ "ok" : 1 }# 在admin 下需要指定哪个库需要分片mongos> db.runCommand({"shardcollection":"test_database.test_table","key":{"_id":1}}){ "collectionsharded" : "test_database.test_table", "ok" : 1 }# 继续指定哪个表需要分片mongos> db.databases.find(){ "_id" : "admin", "partitioned" : false, "primary" : "config" }{ "_id" : "test_database", "partitioned" : true, "primary" : "shard0000" }# 库test_database 已经被设置未分片成功了mongos> db.chunks.find(){ "_id" : "test_database.test_table-_id_MinKey", "lastmod" : Timestamp(1, 0), "lastmodEpoch" : ObjectId("58ff0371b44f90194e6a262e"), "ns" : "test_database.test_table", "min" : { "_id" : { "$minKey" : 1 } }, "max" : { "_id" : { "$maxKey" : 1 } }, "shard" : "shard0000" }# 这个也可以检查mongos> sh.status()--- Sharding Status ---   sharding version: {	"_id" : 1,	"version" : 4,	"minCompatibleVersion" : 4,	"currentVersion" : 5,	"clusterId" : ObjectId("58fef935b44f90194e6a2496")}  shards:	{  "_id" : "shard0000",  "host" : "192.168.0.114:27020" }	{  "_id" : "shard0001",  "host" : "192.168.0.115:27020" }  databases:	{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }	{  "_id" : "test_database",  "partitioned" : true,  "primary" : "shard0000" }		test_database.test_table			shard key: { "_id" : 1 }			chunks:				shard0000	1			{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0) # 这个也可以检查

后面可以插入大量数据并检查,看是不是数据已经分片了

转载于:https://my.oschina.net/wangzilong/blog/886922

你可能感兴趣的文章
ASP.NET Core 2 学习笔记(三)中间件
查看>>
转:Mosquitto用户认证配置
查看>>
SpringBoot上传文件到本服务器 目录与jar包同级
查看>>
python开发_difflib字符串比较
查看>>
被解放的姜戈01 初试天涯
查看>>
三极管工作区在Spectre中的表示
查看>>
HT for Web的HTML5树组件延迟加载技术实现
查看>>
ASP.NET MVC 3 Razor Nested foreach with if statements
查看>>
【Mysql】命令行
查看>>
Asterisk 安装与配置
查看>>
利用日志记录所有LINQ的增,删,改解决方案
查看>>
实例讲解PostSharp(一)
查看>>
graylog 客户端的安装配置
查看>>
CentOS6.4_X86_64 安装Drupal-7.31必须成功版!
查看>>
驱动学习之驱动和应用的接口
查看>>
hbase region split源码分析
查看>>
MySQL备份之分库分表备份脚本
查看>>
Java 与 Netty 实现高性能高并发
查看>>
SurfControl人工智能新突破 领跑反垃圾邮件
查看>>
一个动态ACL的案例
查看>>