文档章节

MongDB集群搭建

晨曦断罪
 晨曦断罪
发布于 2016/12/28 12:47
字数 1117
阅读 8
收藏 0

MongoDB集群搭建,首先决定有几台Linux服务器完成,然后分配好端口,以防后面修改时忘记,而且还要在之前进行相关配置完成这些修改。我现在是在VM上安装了三台RatHat5.0后进行搭建。
本次搭建mongodb集群,预计有一个mongos,三个config,三个副本集名称分别为Shard1,Shard2,Shard3.每个复制集里有三个节点,一个primary(主节点),一个second(从节点),一个arbiter(仲裁节点)。一共要启动一个mongos进程和12个mongod实例;

一、规划进程数,文件日志及数据存放位置,设置ip并调通(/home/mongodb)。

本机 VM
1.Mongodb 1号 IP:192.168.1.153
2.Mongodb 2号 IP:192.168.1.154
3.Mongodb 3号 IP:192.168.1.155

1号 端口 :

21000—-》配置服务器
22001—-》shard1 文件存储位置: 数据:mongodb/shard1/data 日志:mongodb/shard1/logs/shard1.log
22002—-》shard2 文件存储位置: 数据:mongodb/shard2/data 日志:mongodb/shard2/logs/shard2.log
22003—-》shard3 文件存储位置: 数据:mongodb/shard3/data 日志:mongodb/shard3/logs/shard3.log

2号 端口 :

21000—-》配置服务器
22001—-》shard1 文件存储位置: 数据:mongodb/shard1/data 日志:mongodb/shard1/logs/shard1.log
22002—-》shard2 文件存储位置: 数据:mongodb/shard2/data 日志:mongodb/shard2/logs/shard2.log
22003—-》shard3 文件存储位置: 数据:mongodb/shard3/data 日志:mongodb/shard3/logs/shard3.log

3号 端口 :

21000—-》配置服务器
22001—-》shard1 文件存储位置: 数据:mongodb/shard1/data 日志:mongodb/shard1/logs/shard1.log
22002—-》shard2 文件存储位置: 数据:mongodb/shard2/data 日志:mongodb/shard2/logs/shard2.log
22003—-》shard3 文件存储位置: 数据:mongodb/shard3/data 日志:mongodb/shard3/logs/shard3.log
20000 端口 mongos 路由

二、为每台Linux上通过预设的端口启动实例

启动配置服务器: (由于现实问题 下面的横杠均为两个横杠!!!!!)

./bin/mongod –configsvr –dbpath config/data –port 21000 –logpath config/log/config.log –fork

启动Shard1:

./bin/mongod –shardsvr –replSet shard1 –port 22001 –dbpath shard1/data –logpath shard1/log/shard1.log –fork –nojournal –oplogSize 10

启动Shard2:

./bin/mongod –shardsvr –replSet shard2 –port 22002 –dbpath shard2/data –logpath shard2/log/shard2.log –fork –nojournal –oplogSize 10

启动Shard3:

./bin/mongod –shardsvr –replSet shard3 –port 22003 –dbpath shard3/data –logpath shard3/log/shard3.log –fork –nojournal –oplogSize 10

启动mongos:

./bin/mongos –configdb 192.168.153:21000,192.168.1.154:21000,192.168.1.155:21000 –port 20000 –logpath /data/mongodbtest/mongos/log/mongos.log –fork

三、配置复制集

首先配置第一个复制集:

./bin/mongo 127.0.0.1:22001

use admin
config = { _id:”shard1”, members:[
{_id:0,host:”192.168.1.153:22001”},
{_id:1,host:”192.168.1.154:22001”},
{_id:2,host:”192.168.1.155:22001”,arbiterOnly:true}
]
}
rs.initiate(config);

配置第二个复制集:

./bin/mongo 127.0.0.1:22002

use admin
config = { _id:”shard2”, members:[
{_id:0,host:”192.168.1.153:22002”},
{_id:1,host:”192.168.1.154:22002”},
{_id:2,host:”192.168.1.155:22002”,arbiterOnly:true}
]
}
rs.initiate(config);

配置第三个复制集:

./bin/mongo 127.0.0.1:22003

use admin
config = { _id:”shard3”, members:[
{_id:0,host:”192.168.1.153:22003”},
{_id:1,host:”192.168.1.154:22003”},
{_id:2,host:”192.168.1.155:22003”,arbiterOnly:true}
]
}
rs.initiate(config);

四、配置mongos

./bin/mongo  127.0.0.1:20000

use admin
db.runCommand( { addshard : “shard1/192.168.1.153:22001,192.168.1.154:22001,192.168.1.155:22001”});
db.runCommand( { addshard : “shard2/192.168.1.153:22002,192.168.1.154:22002,192.168.1.155:22002”});
db.runCommand( { addshard : “shard3/192.168.1.153:22003,192.168.1.154:22003,192.168.1.155:22003”});
db.runCommand( { listshards : 1 } );

这里写图片描述

五、数据自动分片

db.runCommand( { enablesharding :”testdb”});

让指定的数据库打开分片功能

db.runCommand( { shardcollection : “testdb.table1”,key : {id: 1} } )

指定数据库里需要分片的集合和片键(指定id作为分片依据)

六、测试数据分片结果

for (var i = 1; i <= 100000; i++)
db.table1.save({id:i,”test1”:”testval1”});
db.table1.stats();
{
“sharded” : true,
“paddingFactorNote” : “paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.”,
“userFlags” : 1,
“capped” : false,
“ns” : “testdb.table1”,
“count” : 100000,
“numExtents” : 9,
“size” : 11200000,
“storageSize” : 22523904,
“totalIndexSize” : 6107472,
“indexSizes” : {
id” : 3278576,
“id_1” : 2828896
},
“avgObjSize” : 112,
“nindexes” : 2,
“nchunks” : 3,
“shards” : {
“shard1” : {
“ns” : “testdb.table1”,
“count” : 99991,
“size” : 11198992,
“avgObjSize” : 112,
“numExtents” : 7,
“storageSize” : 22507520,
“lastExtentSize” : 11325440,
“paddingFactor” : 1,
“paddingFactorNote” : “paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.”,
“userFlags” : 1,
“capped” : false,
“nindexes” : 2,
“totalIndexSize” : 6074768,
“indexSizes” : {
id” : 3262224,
“id_1” : 2812544
},
“ok” : 1,
“$gleStats” : {
“lastOpTime” : Timestamp(0, 0),
“electionId” : ObjectId(“56387ddcf2c57c13bbac20ab”)
}
},
“shard2” : {
“ns” : “testdb.table1”,
“count” : 1,
“size” : 112,
“avgObjSize” : 112,
“numExtents” : 1,
“storageSize” : 8192,
“lastExtentSize” : 8192,
“paddingFactor” : 1,
“paddingFactorNote” : “paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.”,
“userFlags” : 1,
“capped” : false,
“nindexes” : 2,
“totalIndexSize” : 16352,
“indexSizes” : {
id” : 8176,
“id_1” : 8176
},
“ok” : 1
},
“shard3” : {
“ns” : “testdb.table1”,
“count” : 8,
“size” : 896,
“avgObjSize” : 112,
“numExtents” : 1,
“storageSize” : 8192,
“lastExtentSize” : 8192,
“paddingFactor” : 1,
“paddingFactorNote” : “paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.”,
“userFlags” : 1,
“capped” : false,
“nindexes” : 2,
“totalIndexSize” : 16352,
“indexSizes” : {
id” : 8176,
“id_1” : 8176
},
“ok” : 1
}
},
“ok” : 1
}

七、总结

通过以上结果可以看出,我的分片结果:一共写入100000条数据,第一个shard1上写入了99991条数据,在第二个shard2上写入8条数据,在第三个shard3上写入了一条。分片结果不是很理想。我个人认为是因为由于片键选择的标准问题。以后分片的标准要选择一个分片均匀的片键。好了,剩余问题以后再说,今天先说到这里。

© 著作权归作者所有

晨曦断罪
粉丝 0
博文 16
码字总数 12398
作品 0
石家庄
程序员
私信 提问
MongDB概述

1. 什么是NoSQlNoSQL:Not Only SQL,本质也是一种数据库的技术,相对于传统数据库技术NoSQL不会遵循一些SQL的约束,比如: 2. NoSQL优点: 3. NoSQL缺点: 4. NoSql数据库分类5. Mongodb的基...

LMB520Q
2018/01/07
0
0
一份最实用的云数据库架构设计与实践指南(内含PPT)

Tips:登陆云盘:http://pan.baidu.com/s/1bo9Ni7l 即可下载5月21日DBAplus社群上海站沙龙PPT。 在这个云为先、一切皆可上云的时代,越来越多的企业已经或即将把数据库上云,5月21日,针数据...

DBAplus社群
2017/05/23
0
0
mongdb 复制集+仲裁(带权限认证)

一、环境 1、架构图 2、部署详细 10.10.17.26:27000 (primary)10.10.17.27:27000 (secondary)10.10.2.74:27000 (arbiter) 3、软件版本 mongdb :2.6.11系统:centos 6.6 二、安装配置 ...

navyaijm2012
2015/08/17
0
0
一份最实用的云数据库架构设计与实践指南(内含PPT)

在这个云为先、一切皆可上云的时代,越来越多的企业已经或即将把数据库上云,5月21日,针数据库云化过程中的诸多难题,DBAplus社群携手阿里、腾讯等四位云数据库技术大牛与一众同行伙伴再会魔...

DBAplus社群
2017/05/23
0
0
Node.js+Mongodb如何获取Json数据格式中属性的值

用Node.js搭建服务器和Mongodb数据库,在服务器端对数据库执行查询操作后返回的是Json数据,如何获取Json数据中每个属性的值?例如下图 如何获取array这个属性的值?Mongdb数据库用的是Mongo...

潘仔
2015/10/14
2.7K
3

没有更多内容

加载失败,请刷新页面

加载更多

maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
今天
8
0
Linux创建yum仓库

第一步、搞定自己的光盘 #创建文件夹 mkdir -p /media/cdrom #挂载光盘 mount /dev/cdrom /media/cdrom #编辑配置文件使其永久生效 vim /etc/fstab 第二步,编辑yun源 vim /ect yum.repos.d...

究极小怪兽zzz
今天
6
0
jar 更新部分文件

C:\Program Files (x86)\Java\jdk1.8.0_102\bin>jar -hIllegal option: hUsage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...Options: -c c......

圣洁之子
今天
9
0
OSChina 周六乱弹 —— 感谢女装红薯开办了这个网站

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @胖达panda:分享歌词: 我有一只小毛驴我从来也不骑,有一天我心血来潮骑着去赶集,我手里拿着小皮鞭我心里正得意,不知怎么哗啦啦,我摔了一...

小小编辑
今天
2.6K
13
DDD(四)

1,引言 软件开发者大多趋向于将关注点放在数据上,而不是领域上。这对于刚入门的DDD的新手而言也是如此。以我目前的思考方式,数据库依然占据主要的地位。开发一个功能,首先我就会考虑我会...

MrYuZixian
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部