MongoDB作为一款文档数据库,支持分片存储,scale-out,集群自动切换,下面将粗略的配置步骤总结如下:
几个重要概念:
数据库:集合——记录——游标(查询时标记序号)
sharding分片:启动shard server; 启动config server;启动route process;配置shard cluster,将指定的集合分片存储;每个shard由多个chunk组成,将多个shard server添加给指定数据库的某个集合用来做分片。提高扩展性,以及负载均衡
replica sets:指定数据保存目录;log目录;主从key文件(每个sets里的所有实例,key file 中的内容必须一致);启动实例(如果用分片,可以不用启动实例);配置初始化replica sets(主要是服务器ip,端口); 分别针对单个shard server设置sets
下面以两台物理服务器为基础
1、规划
1)server A
shard1_1:10000
shard2_1:10001
monngod config1:20000
mongs1:30000
2)server B
shard1_2:10000
shard2_2:10001
monngod config1:20000
mongs1:30000
2、创建数据目录
1)server A
mkdir -p /data/shard1_1
mkdir -p /data/shard2_1
mkdir -p /data/config
1)server B
mkdir -p /data/shard1_2
mkdir -p /data/shard2_2
mkdir -p /data/config
3、配置Replica Sets (主从)
1)在各个物理服务器上配置shard1,shard2所需要的配置参数,日志文件
2)初始化Replica Sets
3)配置config server
4、配置Router Process (前端路由)
1)/Apps/mongo/bin/mongos --congigdb
--chunkSize 1
--logpath /data/mongos.log --logappend --fork
5、配置Shard Cluster
连接到其中一台物理机的30000配置端口,并切换到admin数据库做配置
1)addshard 添加shard节点
2)enablesharding “数据库名称” 设置分片存储的数据库
3)shardcollection “数据库名称.集合名称”, key:{_id:1} 设置分片的集合名称,且必须指定shard key, 系统会自动创建索引
6、验证sharding正常工作
1)切换到指定数据库
2)添加记录
3)查看分片情况
遗留问题:
1)数据文件的目录,最终的存储空间从哪里来? 对接那种存储引擎? (底层存储提供Lun还是文件共享? )
答案:
2)chunk,shard,sets之间的关系:
答案: 每个chunk默认为200MB大小,可以在启动route process时指定大小;
每个shard可以由多个chunk组成
Mongo官方推荐一个shard为一组Replica Sets,这样可以实现每个Shard内部的aoto-failover
3)