md01    10.0.0.11
md02    10.0.0.12
md03    10.0.0.14

2、启动三台机器的mongod实例

根据Replica Set、Sharding策略部署mongod。将两个sharding组部署到三台服务器上,每个sharding组有三个replica set成员。

#Server1:

  1. mkdir -p /elain/data/mongodb/shard11
  2. mkdir -p /elain/data/mongodb/shard21
  3. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard11 --oplogSize 100 --logpath /elain/data/mongodb/shard11.log --logappend --fork --rest
  4. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard21 --oplogSize 100 --logpath /elain/data/mongodb/shard21.log --logappend --fork --rest

#Server2:

  1. mkdir -p /elain/data/mongodb/shard12/
  2. mkdir -p /elain/data/mongodb/shard22/
  3. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard12 --oplogSize 100 --logpath /elain/data/mongodb/shard12.log --logappend --fork --rest
  4. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard22 --oplogSize 100 --logpath /elain/data/mongodb/shard22.log --logappend --fork --rest

#Server3:

  1. mkdir -p /elain/data/mongodb/shard13/
  2. mkdir -p /elain/data/mongodb/shard23/
  3. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard13 --oplogSize 100 --logpath /elain/data/mongodb/shard13.log --logappend --fork --rest
  4. /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard23 --oplogSize 100 --logpath /elain/data/mongodb/shard23.log --logappend --fork --rest

3、初始化Replica Set 通过命令行初始化两组Replica Set,通过mongo连接到一个mongod

  1. /elain/apps/mongodb/bin/mongo 10.0.0.11:27017
  2. config = {_id: 'shard1', members: [
  3. {_id: 0, host: '10.0.0.11:27017'},
  4. {_id: 1, host: '10.0.0.12:27017'},
  5. {_id: 2, host: '10.0.0.14:27017'}]};
  1. rs.initiate(config);
  2. /elain/apps/mongodb/bin/mongo 10.0.0.11:27018
  3. config = {_id: 'shard2', members: [
  4. {_id: 0, host: '10.0.0.11:27018'},
  5. {_id: 1, host: '10.0.0.12:27018'},
  6. {_id: 2, host: '10.0.0.14:27018'}]};
  7. rs.initiate(config);

4、启动并配置三台Config Server

#Server1、2、3:

  1. mkdir -p /elain/data/mongodb/config/
  2. /elain/apps/mongodb/bin/mongod --configsvr --dbpath /elain/data/mongodb/config/ --port 20000 --logpath /elain/data/mongodb/config1.log --logappend --fork

5、部署并配置三台Routing Server

指定所有的config sever地址参数,chunkSize是分割数据时每块(Chunk)的单位大小

#Server1、2、3:

  1. /elain/apps/mongodb/bin/mongos --configdb 10.0.0.11:20000,10.0.0.12:20000,10.0.0.14:20000 --port 30000 --chunkSize 100 --logpath /elain/data/mongodb/mongos.log --logappend --fork

6、命令行添加分片

连接到mongs服务器,并切换到admin

  1. /elain/apps/mongodb/bin/mongo 10.0.0.11:30000/admin
  1. db.runCommand( {
  2. addshard : "shard1/10.0.0.11:27017,10.0.0.12:27017,10.0.0.14:27017",
  3. name:"shard1",
  4. maxsize:2048,
  5. allowLocal:true } );
  6. db.runCommand( {
  7. addshard : "shard2/10.0.0.11:27018,10.0.0.12:27018,10.0.0.14:27018",
  8. name:"shard2",
  9. maxsize:2048,
  10. allowLocal:true } );
  11. db.runCommand( { listshards : 1 } );

如果列出(sharding)了以上二个你加的shards,表示shards已经配置成功 #激活数据库分片

  1. db.runCommand( { enablesharding : "elain" } );

要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:

  1. db.runCommand( { shardcollection : “<namespace>”,key : <shardkeypatternobject});

注:
 a. 分片的collection系统会自动创建一个索引(也可用户提前创建好)
 b. 分片的collection只能有一个在分片key上的唯一索引,其它唯一索引不被允许
One note: a sharded collection can have only one unique index, which must exist on the shard key. No other unique indexes can exist on the collection.

  1. mongoimport -d elain -c test --type csv --headerline --file test.csv --host 10.0.0.11:30000

分片collection例子

  1. db.runCommand( { shardcollection : "elain.test",key : {id: 1} } )
  2. mongos> db.chujq.t1.stats();
  3. {
  4. "sharded" : true,
  5. "flags" : 1,
  6. "ns" : "elain.test",
  7. "count" : 4058977,
  8. "numExtents" : 34,
  9. "size" : 675039816,
  10. "storageSize" : 818757632,
  11. "totalIndexSize" : 131854352,
  12. "indexSizes" : {
  13. "_id_" : 131854352
  14. },
  15. "avgObjSize" : 166.30786919955446,
  16. "nindexes" : 1,
  17. "nchunks" : 14,
  18. "shards" : {
  19. "shard1" : {
  20. "ns" : "elain.test",
  21. "count" : 1860365,
  22. "size" : 309376352,
  23. "avgObjSize" : 166.29873815084673,
  24. "storageSize" : 408920064,
  25. "numExtents" : 16,
  26. "nindexes" : 1,
  27. "lastExtentSize" : 77955072,
  28. "paddingFactor" : 1,
  29. "flags" : 1,
  30. "totalIndexSize" : 60371584,
  31. "indexSizes" : {
  32. "_id_" : 60371584
  33. },
  34. "ok" : 1
  35. },
  36. "shard2" : {
  37. "ns" : "elain.test",
  38. "count" : 2198612,
  39. "size" : 365663464,
  40. "avgObjSize" : 166.31559547569103,
  41. "storageSize" : 409837568,
  42. "numExtents" : 18,
  43. "nindexes" : 1,
  44. "lastExtentSize" : 74846208,
  45. "paddingFactor" : 1,
  46. "flags" : 1,
  47. "totalIndexSize" : 71482768,
  48. "indexSizes" : {
  49. "_id_" : 71482768
  50. },
  51. "ok" : 1
  52. }
  53. },
  54. "ok" : 1
  55. }

删除片操作

  1. mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"});
  2. {
  3. "msg" : "draining started successfully",
  4. "state" : "started",
  5. "shard" : "shard2",
  6. "ok" : 1
  7. }

再执行,可看到removeshard的挪动进度

  1. mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"});
  2. {
  3. "msg" : "draining ongoing",
  4. "state" : "ongoing",
  5. "remaining" : {
  6. "chunks" : NumberLong(3),
  7. "dbs" : NumberLong(0)
  8. },
  9. "ok" : 1
  10. }

例:

  1. /elain/apps/mongodb/bin/mongod --config /elain/data/mongodb/shard1/shard1.properties --rest
本文转自 elain2012 51CTO博客,原文链接:http://blog.51cto.com/elain/765956

MongoDB实战系列之五:mongodb的分片配置相关推荐

  1. MongoDB实战系列之二:MongoDB的常用操作

    #以服务方式启动mongodb,要求验证 /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/ ...

  2. MongoDB实战(11)Sharding 分片(上)

    这是一种将海量的数据水平扩展的数据库集群系统数据分表存储在sharding 的各个节点 上使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群. MongoDB 的数据分块称为 chu ...

  3. 鸿蒙开发实战系列之五:鸿蒙系统原生数据库

    鸿蒙开发实战系列之一:鸿蒙开发实战系列之一:圆角 鸿蒙开发实战系列之二:鸿蒙开发实战系列之二:事件总线EventBus/RxBus 鸿蒙开发实战系列之三:鸿蒙开发实战系列之三:网络请求(原生+ Ret ...

  4. Tensorflow实战系列之五:

    打算写实例分割的实战,类似mask-rcnn. Tensorflow实战先写五个系列吧,后面新的技术再添加~~ 转载于:https://www.cnblogs.com/wmr95/p/8846887. ...

  5. 鸿蒙系统开发者如何加入,鸿蒙开发实战系列之五:鸿蒙系统原生数据库

    前言 上文介绍了ObjectBox,属于神器,但是作为一个合格的码农,上的了厅堂,下得了猪圈,神器好用,菜刀也是要会使的嘛,这篇我们就来介绍下鸿蒙系统的数据库如何使用 鸿蒙的关系型数据库是基于SQLi ...

  6. SCCM2012 R2实战系列之五:发现方法

     打开SCCM2012的控制台  点击左侧栏的"管理"选项,然后展开"层次结构配置",点击"发现方法"来配置客户端发现.  勾选" ...

  7. MongoDB Sharding分片配置

    Ps:mongod是mongodb实例,mongos被默认为为mongodb sharding的路由实例. 本文使用的mongodb版本为3.2.9,因此参考网址为:https://docs.mong ...

  8. mongodb分片配置

    #本次配置时间为 2014-11-06 软件版本为:mongodb-linux-x86_64-2.4.3.tgz linux :centos 5.9 64bit ################### ...

  9. springboot和mongoDB分片配置 集群配置

    最近在开发的过程中,遇到mongoDB与springboot集群过程中的集群及分片链接的配置,以及mongoDB通过后台的方式创建索引及联合索引,在网上搜了下没有具体的配置举例,在项目中遇到之后,就顺 ...

最新文章

  1. BZOJ4401 块的计数
  2. SAP RETAIL 特征参数文件(Characteristic Profile) I
  3. 前端开发面试题--html
  4. php postgresql多条,PHP操作Postgresql封装类与应用完整实例
  5. 根据html元素的类型设置元素的值
  6. 【java学习之路】(javaWeb【后端】篇)001.XMLTomcatHttp协议
  7. ADSL接入路由,电脑共享上网
  8. 工商企业大数据爬虫系统
  9. android soundpool 播放音效,Android使用SoundPool播放短音效
  10. while 循环语句的使用
  11. html5 canvas 涂鸦画板
  12. 推荐算法中CTR和CVR的ESMM模型pytorch实现
  13. ipv6如何测试服务器已经是ipv6协议,怎么测试域名是否支持ipv6
  14. 【机器学习】常见问题
  15. WPF Commanding Overview 的笔记
  16. 从苏宁易购2020双十一战报窥探各品牌座次排行
  17. 基于layui后台html模板免费下载
  18. MSP430X1XX系列硬件乘法器,比较器,flash讲解
  19. 2015年百度之星程序设计大赛 - 资格赛【题解】
  20. windows批量移动文件bat脚本

热门文章

  1. STM32CubeMX+LAN8720+LWIP不带操作系统实现网络通讯
  2. 基于stm32的ESP8266 WIFI 模块实验
  3. Servlet-用户登录注册案例
  4. 分析一下阿里平头哥RISC-V的开源~
  5. 不能不看!美貌与智慧并重苹果iPhone手机解析
  6. C# 如何调用以管理员身份运行的cmd命令提示符
  7. 塑料金属化服务市场调研报告-
  8. 2022秋季快手面试经历
  9. 浪潮云:国内第一个吃螃蟹的数据云
  10. 基于微信小程序的商城系统