Mongo集群部署(Replica Sets+Sharding)
一、环境MongoDB Sharding Cluster 包含三种角色:Shard Server: mongod 实例,用于存储实际的数据块,数据层Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息,配置层Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程 数据库,路由层。
10.14.2.20110.14.2.20210.14.2.20310.14.2.204
Shard1Shard2Shard3Shard1
Shard2Shard1Shard2Shard3
Shard3Shard3Shard1Shard2
1.节点:S1: 10.14.2.201, 10.14.2.202, 10.14.2.203, 10.14.2.204 (arbiter)
S2: 10.14.2.201, 10.14.2.202, 10.14.2.203 (arbiter), 10.14.2.204
S3: 10.14.2.201, 10.14.2.202(arbiter), 10.14.2.203, 10.14.2.204
主机端口信息
10.14.2.201mongod shard1:27017mongod shard2:27018mongod shard3:27019mongod config:30000mongs:40000
10.14.2.202mongod shard1:27017mongod shard2:27018mongod shard3:27019mongod config:30000mongs:40000
10.14.2.203mongod shard1:27017mongod shard2:27018mongod shard3:27019mongod config:30000mongs:40000
10.14.2.204mongod shard1:27017mongod shard2:27018mongod shard3:27019mongod config:30000mongs:40000
二、安装部署在所有机器上运行1、下载mongodb程序 mongodb-linux-x86_64-2.4.4.tgz2、解压mongodb-linux-x86_64-2.4.4.tgz到/export/ 目录下tar -xvf mongodb-linux-x86_64-2.4.4.tgz-C/usr/local/3、建立软连接 cd /usr/local/ ln -s mongodb-linux-x86_64-2.4.4mongodb
4、配置环境变量vim /etc/profile添加 #mongodbexport PATH=/usr/local/mongodb/bin:$PATH
source /etc/profile
5、创建目录mkdir -p /export/mongodb/data/shard1mkdir -p /export/mongodb/data/shard2mkdir -p /export/mongodb/data/shard3mkdir -p /export/mongodb/data/configmkdir -p /export/mongodb/logs/shard1mkdir -p /export/mongodb/logs/shard2mkdir -p /export/mongodb/logs/shard3mkdir -p /export/mongodb/logs/configmkdir -p /export/mongodb/logs/mongos
6、在10.14.2.201(任意一台都可以) 生成keyfile文件openssl rand -base64 753 > /export/mongodb/keyfile
7、把keyfile文件传输到其他机器上scp /export/mongodb/keyfile 10.14.2.202:/export/mongodb/scp /export/mongodb/keyfile 10.14.2.203:/export/mongodb/scp /export/mongodb/keyfile 10.14.2.204:/export/mongodb/
8、在每台机器上执行 修改keyfile权限chmod 600 /export/mongodb/keyfile
配置Replica Sets,Config Server
9、在每台机器上执行/usr/local/mongodb/bin/mongod --fork --shardsvr--port 27017 --dbpath /export/mongodb/data/shard1/ --logpath /export/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest--keyFile /export/mongodb/keyfile/usr/local/mongodb/bin/mongod --fork --shardsvr--port 27018 --dbpath /export/mongodb/data/shard2/ --logpath /export/mongodb/logs/shard2/log.log --logappend --replSet s2 --auth--rest --keyFile /export/mongodb/keyfile/usr/local/mongodb/bin/mongod --fork --shardsvr--port 27019 --dbpath /export/mongodb/data/shard3/ --logpath /export/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth--rest --keyFile /export/mongodb/keyfile/usr/local/mongodb/bin/mongod --fork --configsvr --port 30000 --dbpath /export/mongodb/data/config/ --logpath /export/mongodb/logs/config/log.log --logappend --auth --rest --keyFile /export/mongodb/keyfile
10、在10.14.2.201上执行
1)查看mongod的进程是否启动ps aux | grep mongodb | grep -v grep
2)初始化replica sets/usr/local/mongodb/bin/mongo --port 27017config = {_id: 's1', members: [
{_id: 0, host: '10.14.2.201:27017'},
{_id: 1, host: '10.14.2.202:27017'}, {_id: 2, host: '10.14.2.203:27017'},
{_id: 3, host: '10.14.2.204:27017', arbiterOnly: true}
]}
rs.initiate(config)
rs.status()
11、在10.14.2.202上执行
1)查看mongod的进程是否启动ps aux | grep mongodb | grep -v grep
2)初始化replica sets/usr/local/mongodb/bin/mongo --port27018config = {_id: 's2', members: [
{_id: 0, host: '10.14.2.201:27018'},
{_id: 1, host: '10.14.2.202:27018'}, {_id: 2, host: '10.14.2.203:27018', arbiterOnly: true },
{_id: 3, host: '10.14.2.204:27018' }
]}
rs.initiate(config)
rs.status()
12、在10.14.2.203上执行 1)查看mongod的进程是否启动ps aux | grep mongodb | grep -v grep
2)初始化replica sets/usr/local/mongodb/bin/mongo --port 27019 config = {_id: 's3', members: [
{_id: 0, host: '10.14.2.201:27019'},
{_id: 1, host: '10.14.2.202:27019', arbiterOnly: true }, {_id: 2, host: '10.14.2.203:27019' },
{_id: 3, host: '10.14.2.204:27019' }
]}
rs.initiate(config)
rs.status()
配置Mongos(在每一台机子上建立路由)13、在每台机器上执行/usr/local/mongodb/bin/mongos --fork --port 40000 --logpath/export/mongodb/logs/mongos/log.log--configdb 10.14.2.201:30000,10.14.2.202:30000,10.14.2.203:30000 --keyFile /export/mongodb/keyfile 添加分片1连接任意一台,其他无需这样操作:/usr/local/mongodb/bin/mongo --port 40000use admindb.runCommand({addshard:'s1/10.14.2.201:27017,10.14.2.202:27017,10.14.2.203:27017'})db.runCommand({addshard:'s2/10.14.2.201:27018,10.14.2.202:27018,10.14.2.203:27018' })db.runCommand({addshard:'s3/10.14.2.201:27019,10.14.2.203:27019,10.14.2.203:27019' }) db.runCommand({ listshards:1 })
通过执行以下命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作db.runCommand({enablesharding:"test"});
要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作db.runCommand( { shardcollection : "test.c1",key : {id: 1},unique : true } ) 创建测试数据use test for(var i=1;i<=200003;i++)db.c1.save({id:i,value1:"1234567890",value2:"1234567890",value3:"1234567890",value4:"1234567890"});
> db.c1.stats()\\查看数据已经分到了s1,s2,s3上{ "sharded" : true, "ns" : "test.c1", "count" : 200003, "numExtents" : 14, "size" : 25600384, "storageSize" : 40599552, "totalIndexSize" : 12182240, "indexSizes" : { "_id_" : 6540800, "id_1" : 5641440 }, "avgObjSize" : 128, "nindexes" : 2, "nchunks" : 4, "shards" : { "s1" : { "ns" : "test.c1", "count" : 194287, "size" : 24868736, "avgObjSize" : 128, "storageSize" : 37797888, "numExtents" : 8, "nindexes" : 2, "lastExtentSize" : 15290368, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 11781616, "indexSizes" : { "_id_" : 6328224, "id_1" : 5453392 }, "ok" : 1 }, "s2" : { "ns" : "test.c1", "count" : 0, "size" : 0, "storageSize" : 8192, "numExtents" : 1, "nindexes" : 2, "lastExtentSize" : 8192, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 16352, "indexSizes" : { "_id_" : 8176, "id_1" : 8176 }, "ok" : 1 }, "s3" : { "ns" : "test.c1", "count" : 5716, "size" : 731648, "avgObjSize" : 128, "storageSize" : 2793472, "numExtents" : 5, "nindexes" : 2, "lastExtentSize" : 2097152, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 384272, "indexSizes" : { "_id_" : 204400, "id_1" : 179872 }, "ok" : 1 } }, "ok" : 1}
页:
[1]