linux 同一机器 mongodb 分片,mongodb分片操作

参考“MongoDB分布式部署之分片配置”

http://jokry.me/blog/2010/07/mongodb-distributable-slice/

实际操作了一下

具体环境:两台虚拟64位centos,分别是192.168.1.20和192.168.1.21

整个设置是在同一台机器上两组分片,每组分片在两台机器上互为主从。

config服务器运行在21上,mongos运行在20上。

具体:

#启动第一组分片主库(在192.168.1.20上执行),端口为18020

mongod -fork --logpath=/tmp/1 --pairwith 192.168.1.21:18020 --dbpath=/mongo/data1 --port 18020

#启动第一组分片从库(在192.168.1.21上执行)

mongod -fork --logpath=/tmp/1 --pairwith 192.168.1.20:18020 --dbpath=/mongo/data1 --port 18020

#启动第二组分片主库(在192.168.1.20上执行)端口为18021

mongod -fork --logpath=/tmp/2 --pairwith 192.168.1.21:18021 --dbpath=/mongo/data2 --port 18021

#启动第二组分片从库(在192.168.1.21上执行)

mongod -fork --logpath=/tmp/2 --pairwith 192.168.1.20:18021 --dbpath=/mongo/data2 --port 18021

#启动configserver,在192.168.1.20

#mongod -fork --logpath=/tmp/3 --configsvr --dbpath  /mongo/configsvr --port 18022

#启动configserver,在192.168.1.21,config server数目只能是奇数

mongod -fork --logpath=/tmp/3 --configsvr --dbpath  /mongo/configsvr --port 18022

#在192.168.1.20上执行

mongos -fork --logpath=/tmp/4 --configdb 192.168.1.21:18022

#客户端连接mongos

mongo --host 192.168.1.20

show dbs

use admin

#增加第一组分片

db.runCommand( { addshard : "192.168.1.20:18020,192.168.1.21:18020", allowLocal : true } )

#增加第二个分片

db.runCommand( { addshard : "192.168.1.20:18021,192.168.1.21:18021", allowLocal : true } )

db.runCommand({listshards:1})

config = connect("192.168.1.21:18022")

config = config.getSisterDB("config")

#新增数据库test

test= db.getSisterDB("test")

db.runCommand( { enablesharding : "test" } )

#建立分片数据集 msg,posttime 是time_t,结果由time()函数得到

db.runCommand( { shardcollection : "test.msg", key : {posttime : 1} } )

db.printShardingStatus();

然后,php或c++连接192.168.1.20就可以进行insert等操作了。因为posttime有连续性,添加记录达到

几十万条以上,可以看到data1下面的文件比较大,data2下面文件也在增长,但比data1小。比较20和21两台机器下的同名目录文件,大小是一样的。

这种操作key 没有散列,读写操作过于集中,下一步研究一下好方法,可能采用hash使key散开。然后,在每台机器上启动10个分片进程再做测试。

阅读(3171) | 评论(1) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值