mongodb 分布式配置
程序员文章站
2024-01-13 16:49:16
...
一、副本集(replSet)
在普通的主从关系的部署模式已经满足不了需求,所以推介副本集形式,好处之一是在主节点down了以后可以自动地在众多的secondary的节点中推选出主节点,实现自动切换。
配置方式如下:
- 创建rs.conf启动配置文件
port = 27017 dbpath = /data/db logpath = /log/log.log fork = true replSet = test
主要的参数设置 - 启动mongodb
./mongod -f rs.conf
- 任意进入一个副本集mongo
config={ _id:'test',members:[ {_id:0,host:"192.168.13.1:27017"}, {_id:1,host:"192.168.13.2:27017"}, {_id:2,host:"192.168.13.3:27017"} ] } rs.initiate(config)
如此便启动副本集成功
二、分片(shards)
副本集是从数据冗余来解决读写性能和容灾,但是对于读写性能来讲提升有限,并且当数据量达到一定程度时数据的存储和吞吐都会出现瓶颈,而分片恰好用数据分储来解决吞吐性能,单个分片shard可以使用Master-Slave或者使用replSet(推荐),所以对于大规模的数据储存还是推荐使用分布式shards。
服务器MongoDB实例所需要的角色config-server(配置服务器),mongos-server(片键服务器存储片键拆分相当于数据路由器),shards-server(分片服务器实际的储存数据的服务器)
配置方式:
- 配置config-server方式跟普通的mongodb一样设置port,fork,dbpath,logpath
- 配置mongos-server不需要配置dbpath,需要配置configdb指向(1)中配置的host:port
- 配置shard跟普通的mongodb实例一样同(1)
-
登录mongos进行分片的指向,
use admin; db.runCommand({"addshard":"192.168.13.213:10000"})
将192.168.13.213:10000作为分片加入 -
加入完shards,开始配置进行分片的DB以及Collection
#shard db db.runCommand( { enablesharding : "shard" } );
#shard collections db.runCommand( { shardcollection : "shard.test", key : { name : 1 } } )
key是指明进行分片的字段,改字段必须是已经作了索引,而且联合index进行分片 -
移除shard
db.runCommand({removeshard:"192.168.13.213:10002"});
但是移除的shard是某个db的primary的话需要movePrimarydb.runCommand({ movePrimary : "shard", to : "shard0002" });
-
一些管理命令
db.printShardingStatus();
查看分片的情况use config; db.shards.find();
可以使用config库来查看一些配置记录