码迷,mamicode.com
首页 > 数据库 > 详细

mongodb replica set + shard 安装

时间:2015-05-28 18:30:54      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

概览 - 机器

三台mongo数据节点机器(默认端口27107,这里一台机器存了多份,故新起端口):

10.13.2.51:10001/10002/10003

10.13.2.52:10001/10002/10003

10.13.2.151:10001/10002/10003

一台mongos机器:

10.13.2.112:27107

三台config机器:

10.13.2.91:27109

10.13.2.92:27109

10.13.2.102:27109


架构:

数据分散在3台机器上,既有3个shard,而每个shard又有复制集(简单理解,主备)的配置,即是下面这样

shard1/10.13.2.151:10001,10.13.2.51:10001,10.13.2.52:10001

shard2/10.13.2.151:10002,10.13.2.51:10002,10.13.2.52:10002

shard3/10.13.2.151:10003,10.13.2.51:10003,10.13.2.52:10003


前提工作:

useradd mongodb # 建议用mongodb用户
echo never > /sys/kernel/mm/transparent_hugepage/enabled  #mongodb建议为never
echo never > /sys/kernel/mm/transparent_hugepage/defrag   #mongodb建议为never
关闭防火墙

 

创建第一个replica set

1. 三台数据节点 分别执行

1. mkdir log db db/shard1 db/shard2 db/shard3 # 创建必要的文件夹
2. bin/mongod --dbpath /home/data/mongodb/db/shard1 --port 10001 --replSet shard1 --logpath log/mongodb1.log --logappend --fork # 后台启动mongodb服务

2.连接到mongo配置replica set

1. bin/mongo 10.13.2.151:10001
2. config = {_id:"shard1", members: [  
    {_id: 0, host:"10.13.2.151:10001"},  
    {_id: 1, host:"10.13.2.51:10001"},
    {_id: 2, host:"10.13.2.52:10001"}  
    ]  
}; 
3. rs.initiate(config)


config机器部署

1. 三台config机器上分别执行

1. mkdir log configdb
2. bin/mongod --configsvr --dbpath /home/data/mongodb/configdb --logpath log/mongodb.log --logappend --fork


mongos机器部署

1. mongos机器上执行

1. mkdir log
2. bin/mongos --configdb 10.13.2.91:27019,10.13.2.92:27019,10.13.2.102:27019 --logpath log/mongodb.log --logappend --fork


往集群添加第一个shard

1. 连接mongos,加入shard1

1. bin/mongo 10.13.2.112:27017/admin
2. sh.addShard( "shard1/10.13.2.151:10001,10.13.2.51:10001,10.13.2.52:10001" )


添加第二个shard

首先创建shard2,同上“创建第一个replica set”

1. 三台数据节点 分别执行

1. bin/mongod --dbpath /home/data/mongodb/db/shard2 --port 10002 --replSet shard2 --logpath log/mongodb2.log --logappend --fork # 后台启动mongodb服务

2.连接到mongo配置replica set

1. bin/mongo 10.13.2.151:10002
2. config = {_id:"shard2", members: [  
    {_id: 0, host:"10.13.2.151:10002"},  
    {_id: 1, host:"10.13.2.51:10002"},
    {_id: 2, host:"10.13.2.52:10002"}  
    ]  
}; 
3. rs.initiate(config)

创建完后添加shard2

1. bin/mongo 10.13.2.112:27017/admin
2. sh.addShard( "shard2/10.13.2.151:10002,10.13.2.51:10002,10.13.2.52:10002" )


添加第三个shard

首先创建shard3,同上“创建第一个replica set”

1. 三台数据节点 分别执行

1. bin/mongod --dbpath /home/data/mongodb/db/shard3 --port 10003 --replSet shard3 --logpath log/mongodb3.log --logappend --fork # 后台启动mongodb服务

2.连接到mongo配置replica set

1. bin/mongo 10.13.2.151:10003
2. config = {_id:"shard2", members: [  
    {_id: 0, host:"10.13.2.151:10003"},  
    {_id: 1, host:"10.13.2.51:10003"},
    {_id: 2, host:"10.13.2.52:10003"}  
    ]  
}; 
3. rs.initiate(config)

创建完后添加shard3

1. bin/mongo 10.13.2.112:27017/admin
2. sh.addShard( "shard3/10.13.2.151:10003,10.13.2.51:10003,10.13.2.52:10003" )


以上配置完了,但还需要开启数据库和表的分片

下面以test为例

1. 连接mongos

bin/mongo 10.13.2.112:27017/admin

2.  开启数据库分片

sh.enableSharding( "test" )

3. 创建片键 - (此处片键很重要,关于数据如何分片,一般都是取本身_id作为片键,业务相关根据业务自己组合片键)

1. use test
2. db.test_collection.createIndex( { number : 1 } ) # 这里以test_collection表里的number为片键

4. 开启数据库下面的表分片

1. use test
2. sh.shardCollection( "test.test_collection", { "number" : 1 } )

5. 查看分片状态,数据平衡的情况

1. use test
2. db.stats()
3. db.printShardingStatus()


over!

mongodb replica set + shard 安装

标签:

原文地址:http://my.oschina.net/u/914655/blog/421097

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!