你的位置:首页 > 软件开发 > 数据库 > MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

发布时间:2015-10-22 12:00:10
集群的模块介绍:从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server、mongs、 shard、replica set:Config Server:用来存放集群的元数据,也就是存放所有分片的的配置数据,mongos第一次启动就需要连接confi ...

MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

  • 集群的模块介绍:

MongoDBV3.0.7版本(shard+replica)集群的搭建及验证MongoDBV3.0.7版本(shard+replica)集群的搭建及验证
  • 创建相关模块存放路径:

  • 创建configeServer目录(172.16.16.120/121/122):

#mkdir -p /db/configS/data & mkdir -p /db/configS/log (存放ConfigServer的数据、日志)
  • 创建shard2目录(172.16.16.125/126/131 ):

#mkdir -p /db/shard2/data & mkdir -p /db/shard2/log (存放shard2的数据、日志)
  • 创建shard3目录(172.16.16.126/131/124 ):

#mkdir -p /db/shard3/data & mkdir -p /db/shard3/log (存放shard3的数据、日志)
  •  模块配置及启动:

  • configServer(172.16.16.120/121/122)配置及服务启动:

编写 /usr/local/mongodb/conf/configServer.conf,将参数都放在该文件中:启动configServer:
  • mongos(172.16.16.124/125/126/131)配置及服务启动:

编写mongos.conf,将参数都放在该文件中(4台配置文件都一样):启动mongos:应保证集群中设备的时间都是一样的,否则启动mongos会报错,若不相同,可先搭建一套NTP服务器
  • shard1分片+副本集配置及服务启动(172.16.16.124/125/126 ):

#vim /usr/local/mongodb/conf/shard1.conf#!/bin/bashsystemLog:  destination: file                                    path: "/db/shard1/log/shard1.log"                #日志存储位置  logAppend: truestorage:                                           journal:                             #journal配置   enabled: true  dbPath: "/db/shard1/data"                    #数据文件存储位置  directoryPerDB: true                       #是否一个库一个文件夹    engine: wiredTiger                        #数据引擎   wiredTiger:                           #WT引擎配置   engineConfig:     cacheSizeGB: 6                       #设置为6G,默认为物理内存的一半     directoryForIndexes: true                 #是否将索引也按数据库名单独存储     journalCompressor: zlib   collectionConfig:                       #表压缩配置     blockCompressor: zlib   indexConfig:                         #索引配置     prefixCompression: truenet:                                #端口配置  port: 40001processManagement:                         #配置启动管理方式  fork: truesharding:                              #分片配置  clusterRole: shardsvrreplication:                              replSetName: shard1                       #配置副本集名称
启动shard1 mongod:
  •  shard2分片+副本集配置及服务启动(172.16.16.125/126/131 ):

#vim /usr/local/mongodb/conf/shard2.conf#!/bin/bashsystemLog:  destination: file                                    path: "/db/shard2/log/shard2.log"                #日志存储位置  logAppend: truestorage:                                           journal:                             #journal配置   enabled: true  dbPath: "/db/shard2/data"                    #数据文件存储位置  directoryPerDB: true                       #是否一个库一个文件夹    engine: wiredTiger                        #数据引擎   wiredTiger:                           #WT引擎配置   engineConfig:     cacheSizeGB: 6                       #设置为6G,默认为物理内存的一半     directoryForIndexes: true                 #是否将索引也按数据库名单独存储     journalCompressor: zlib   collectionConfig:                       #表压缩配置     blockCompressor: zlib   indexConfig:                         #索引配置     prefixCompression: truenet:                                #端口配置  port: 40002processManagement:                         #配置启动管理方式  fork: truesharding:                              #分片配置  clusterRole: shardsvrreplication:                             #oplogSizeMB:  replSetName: shard2                       #配置副本集名称
  • shard3分片+副本集配置及服务启动(172.16.16.126/131/124 ):

#vim /usr/local/mongodb/conf/shard3.conf#!/bin/bashsystemLog:  destination: file                                    path: "/db/shard3/log/shard3.log"                #日志存储位置  logAppend: truestorage:                                           journal:                             #journal配置   enabled: true  dbPath: "/db/shard3/data"                    #数据文件存储位置  directoryPerDB: true                       #是否一个库一个文件夹    engine: wiredTiger                        #数据引擎   wiredTiger:                           #WT引擎配置   engineConfig:     cacheSizeGB: 6                       #设置为6G,默认为物理内存的一半     directoryForIndexes: true                 #是否将索引也按数据库名单独存储     journalCompressor: zlib   collectionConfig:                       #表压缩配置     blockCompressor: zlib   indexConfig:                         #索引配置     prefixCompression: truenet:                                #端口配置  port: 40003processManagement:                         #配置启动管理方式  fork: truesharding:                              #分片配置  clusterRole: shardsvrreplication:                                 #oplogSizeMB:  replSetName: shard3                       #配置副本集名称
启动shara3 mongod:
  • shard4分片+副本集配置及服务启动(172.16.16.131/124/125 ):

#vim /usr/local/mongodb/conf/shard4.conf#!/bin/bashsystemLog:  destination: file                                    path: "/db/shard4/log/shard4.log"                #日志存储位置  logAppend: truestorage:                                           journal:                             #journal配置   enabled: true  dbPath: "/db/shard4/data"                    #数据文件存储位置  directoryPerDB: true                       #是否一个库一个文件夹    engine: wiredTiger                        #数据引擎   wiredTiger:                           #WT引擎配置   engineConfig:     cacheSizeGB: 6                       #设置为6G,默认为物理内存的一半     directoryForIndexes: true                 #是否将索引也按数据库名单独存储     journalCompressor: zlib   collectionConfig:                       #表压缩配置     blockCompressor: zlib   indexConfig:                         #索引配置     prefixCompression: truenet:                                #端口配置  port: 40004processManagement:                         #配置启动管理方式  fork: truesharding:                              #分片配置  clusterRole: shardsvrreplication:                               #oplogSizeMB:  replSetName: shard4                       #复制集名
启动shara4 mongod:
  • shard2的副本集配置(主节点、副本节点、仲裁节点):

bin]$ ./mongo 172.16.16.125:40002MongoDB.aspx' target='_blank'>MongoDB shell version: 3.0.7connecting to: 172.16.16.125:40002/test> use adminswitched to db admin> config = { _id:"shard2", members:[           {_id:0,host:"172.16.16.125:40002"},          {_id:1,host:"172.16.16.126:40002"},          {_id:2,host:"172.16.16.131:40002",arbiterOnly:true}]     } #以下为输出{    "_id" : "shard2",    "members" : [        {            "_id" : 0,            "host" : "172.16.16.125:40002"        },        {            "_id" : 1,            "host" : "172.16.16.126:40002"        },        {            "_id" : 2,            "host" : "172.16.16.131:40002",            "arbiterOnly" : true        }    ]}> rs.initiate(config); #初始化配置 { "ok" : 1 }
  • shard3的副本集配置(主节点、副本节点、仲裁节点):

bin]$ ./mongo 172.16.16.126:40003MongoDB shell version: 3.0.7connecting to: 172.16.16.126:40003/test> use adminswitched to db admin> config = { _id:"shard3", members:[          {_id:0,host:"172.16.16.126:40003"},           {_id:1,host:"172.16.16.131:40003"},          {_id:2,host:"172.16.16.124:40003",arbiterOnly:true}]     } #以下为输出{    "_id" : "shard3",    "members" : [        {            "_id" : 0,            "host" : "172.16.16.126:40003"        },        {            "_id" : 1,            "host" : "172.16.16.131:40003"        },        {            "_id" : 2,            "host" : "172.16.16.124:40003",            "arbiterOnly" : true        }    ]}> rs.initiate(config); #初始化配置{ "ok" : 1 } 
  •  shard4的副本集配置(主节点、副本节点、仲裁节点):

bin]$ ./mongo 172.16.16.131:40004MongoDB shell version: 3.0.7connecting to: 172.16.16.131:40004/test> use adminswitched to db admin> config = { _id:"shard4", members:[          {_id:0,host:"172.16.16.131:40004"},           {_id:1,host:"172.16.16.124:40004"},          {_id:2,host:"172.16.16.125:40004",arbiterOnly:true}]     } #以下为输出{    "_id" : "shard4",    "members" : [        {            "_id" : 0,            "host" : "172.16.16.131:40004"        },        {            "_id" : 1,            "host" : "172.16.16.124:40004"        },        {            "_id" : 2,            "host" : "172.16.16.125:40004",            "arbiterOnly" : true        }    ]}> rs.initiate(config); #初始化配置{ "ok" : 1 } 
  • 分片配置

  • 查看配置是否生效(仲裁不被列出 )

mongos> db.runCommand( { listshards : 1 } );{    "shards" : [        {            "_id" : "shard1",            "host" : "shard1/172.16.16.124:40001,172.16.16.125:40001"        },        {            "_id" : "shard2",            "host" : "shard2/172.16.16.125:40002,172.16.16.126:40002"        },        {            "_id" : "shard3",            "host" : "shard3/172.16.16.126:40003,172.16.16.131:40003"        },        {            "_id" : "shard4",            "host" : "shard4/172.16.16.124:40004,172.16.16.131:40004"        }    ],    "ok" : 1}
以上就完成了MongoDB shard+replica模式的集群搭建,接下来做业务测试。可以看出ljaidb库并没有分片,且数据都在shard1上,登录其他shard1上查看:验证shard2、shard3、shard4上都没有ljaidb这个库:
  •  指定数据库和集合进行分片:

  • 通过java或者python驱动,连接mongo集群测试:

java连接代码:
  • 测试是否自动分片:

可以看出,数据有进行分片,但是不够均匀,需要进一步研究分片的配置。

原标题:MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

关键词:MongoDB

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录