Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258657
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 852
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-06 11:01
个人简介

不做第二个别人,永远做第一个自己。

文章分类

全部博文(78)

文章存档

2014年(60)

2013年(18)

分类: NOSQL

2014-04-10 11:21:34

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软件:
我下载的是最新版本: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不是现在已存在的数据库;
通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作

Collecton分片

要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:
> db.runCommand( { shardcollection : “”,key : });

注:
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.
阅读(794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~