MongoDB学习笔记(十一 ):集群-分片模式

MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。 


在以下情况下需要运用分片: 
1.服务器的磁盘不够用。 
2.单个Mongod不能满足写数据的性能需求。 
3.单个Mongod内存不够用,需要将大数据放入内存中提高性能。 

 

 


Shard Server: mongod实例,用于存储实际的数据块,实际生产环境中一个Shard Server角色可由几台机器组个一个Replica Set承担,防止主机单点故障。 

Config Server: mongod实例,存储了整个Cluster Metadata,其中包括Chunk信息。 

Route Server: mongos实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。 
范例:

 



1.启动数据节点

1. ./mongod --fork --dbpath ../data/set1/ --logpath ../log/set1.log --replSet test #192.168.4.43./mongod --fork --dbpath ../data/set2/ --logpath ../log/set2.log --replSet test #192.168.4.44./mongod --fork --dbpath ../data/set3/ --logpath ../log/set3.log --replSet test #192.168.4.45 决策 不存储数据

2.启动配置节点

1. ./mongod --configsvr --dbpath ../config/set1/ --port 20001 --fork --logpath ../log/conf1.log #192.168.4.30./mongod --configsvr --dbpath ../config/set2/ --port 20002 --fork --logpath ../log/conf2.log #192.168.4.31

3.启动路由节点

1. ./mongos --configdb 192.168.4.30:20001,192.168.4.31:20002 --port 27017 --fork --logpath ../log/root.log #192.168.4.29

这里我们没有用配置文件的方式启动,其中的参数意义大家应该都明白。一般来说一个数据节点对应一个配置节点,仲裁节非必须的。点则不需要对应的配置节点。注意在启动路由节点时,要将配置节点地址写入到启动命令里。 

4.配置Replica Set

1. ./mongo 192.168.4.43:27017   #ip和port是某个节点的地址>use admin>cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.4.43:27017',priority:2}, {_id:1,host:'192.168.4.44:27017',priority:1}, {_id:2,host:'192.168.4.45:27017',arbiterOnly:true}] };>rs.initiate(cfg)             #使配置生效

5.配置Sharding

1. ./mongo 192.168.4.29:27017   #这里必须连接路由节点>sh.addShard("test/192.168.4.43:27017") #test表示replica set的名字 当把主节点添加到shard以后,会自动找到set里的主,备,决策节点>db.runCommand({enableSharding:"diameter_test"})    #diameter_test is database name>db.runCommand( { shardCollection: "diameter_test.dcca_dccr_test",key:{"__avpSessionId":1}})

第一个命令很容易理解,第二个命令是对需要进行Sharding的数据库进行配置,第三个命令是对需要进行Sharding的Collection进行配置,这里的dcca_dccr_test即为Collection的名字。另外还有个key,这个是比较关键的东西,对于查询效率会有很大的影响 

到这里Sharding也已经搭建完成了,以上只是最简单的搭建方式,其中某些配置仍然使用的是默认配置。如果设置不当,会导致效率异常低下,所以建议大家多看看官方文档再进行默认配置的修改。

猜你喜欢

转载自jorwen-fang.iteye.com/blog/2031754