您的位置:首页 > 数据库 > Mongodb

安装部署MONGODB分片集群

2014-04-10 11:21 1101 查看

3台物理服务器(openstack-instances)

主机 ip 端口信息
mongo1 10.0.1.3 mongod shard11:27017 mongod config:20000 mongos1:30000
mongo2 10.0.1.4 mongod shard12:27017 mongod config:20000 mongos1:30000
mongo3 10.0.1.5 mongod shard13:27017 mongod config:20000 mongos1:30000
下载mongodb软件:http://www.mongodb.org/downloads 我下载的是最新版本:mongodb-linux-x86_64-2.4.8 解压下载包!解压到/mongodb/mongodb-linux-x86_64-2.4.8目录下 # tar -zxvf mongodb-linux-x86_64-2.4.8.tgz

1.创建数据目录

mongo1: mkdir -p /mongodb/data/shard11 mongo2: mkdir -p /mongodb/data/shard12 mongo3: mkdir -p /mongodb/data/shard13

2.配置relica sets

mongo1: # cd /mongodb/mongodb-linux-x86_64-2.4.8/bin # ./mongod –shardsvr –replSet shard1 –port 27017 –dbpath/mongodb/data/shard11 –oplogSize 100 –logpath/mongodb/data/shard11.log –logappend –fork mongo2: # cd /mongodb/mongodb-linux-x86_64-2.4.8/bin # ./mongod –shardsvr –replSet shard1 –port 27017 –dbpath /mongodb/data/shard12 –oplogSize 100 –logpath/mongodb/data/shard12.log –logappend –fork mongo3: # cd /mongodb/mongodb-linux-x86_64-2.4.8/bin # ./mongod –shardsvr –replSet shard1 –port 27017 –dbpath /mongodb/data/shard13 –oplogSize 100 –logpath/mongodb/data/shard13.log –logappend –fork

3.初始化replica set

mongo1: # ./mongo > config = {_id: ’shard1′, members: [
{_id: 0, host: '10.0.1.3:27017'},
{_id: 1, host: '10.0.1.4:27017'},
{_id: 2, host: '10.0.1.5:27017'}]
} > rs.initiate(config);

4.配置3台config server

mongo1: # mkdir -p /mongodb/data/config
# ./mongod –configsvr –dbpath /mongodb/data/config –port 20000 –logpath /mongodb/data/config.log –logappend –fork ######备注config server也需要dbpath####### mongo2: # mkdir -p /mongodb/data/config
# ./mongod –configsvr –dbpath /mongodb/data/config –port 20000 –logpath /mongodb/data/config.log –logappend –fork mongo3: # mkdir -p /mongodb/data/config # ./mongod –configsvr –dbpath /mongodb/data/config –port 20000 –logpath /mongodb/data/config.log –logappend –fork 5.配置mongos server mongo1: # ./mongos –configdb 10.0.1.3:20000,10.0.1.4:20000,10.0.1.5:20000 –port 30000 –chunkSize 5 –logpath /mongodb/data/mongos.log –logappend –fork ######备注mongs不需要dbpath##### mongo2: # ./mongos –configdb 10.0.1.3:20000,10.0.1.4:20000,10.0.1.5:20000 –port 30000 –chunkSize 5 –logpath /mongodb/data/mongos.log –logappend –fork mongo3: # ./mongos –configdb 10.0.1.3:20000,10.0.1.4:20000,10.0.1.5:20000 –port 30000 –chunkSize 5 –logpath /mongodb/data/mongos.log –logappend –fork 6.配置分片集群 mongo1: # ./mongo 10.0.1.3:30000/admin >db admin 加入shards >db.runCommand( { addshard : “shard1/10.0.1.3:27017,10.0.1.4:27017,10.0.1.5:27017″,name:”s1″,maxsize:20480} ); { "shardAdded" : "s1", "ok" : 1 } 列出shards >db.runCommand( { listshards : 1 } ) 激活数据库分片 > db.runCommand( { enablesharding : “<dbname>” } ); 注:dbname不是现在已存在的数据库; 通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作

Collecton分片

要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:
> 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. 本文出自 “西伯利亚·狼” 博客,请务必保留此出处http://kernal.blog.51cto.com/8136890/1540518
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: