您的位置:首页 > 其它

[置顶] MongDB集群搭建

2015-11-03 11:33 363 查看
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上通过预设的端口启动实例

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

./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上写入了一条。分片结果不是很理想。我个人认为是因为由于片键选择的标准问题。以后分片的标准要选择一个分片均匀的片键。好了,剩余问题以后再说,今天先说到这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: