mongodb 分布式配置

一、副本集(replSet)

    在普通的主从关系的部署模式已经满足不了需求,所以推介副本集形式,好处之一是在主节点down了以后可以自动地在众多的secondary的节点中推选出主节点,实现自动切换。

    

    配置方式如下:

  1.  创建rs.conf启动配置文件
    port = 27017
    dbpath = /data/db
    logpath = /log/log.log
    fork = true
    replSet = test
     主要的参数设置
  2. 启动mongodb
    ./mongod -f rs.conf
     
  3. 任意进入一个副本集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(分片服务器实际的储存数据的服务器)

 

    配置方式:

  1.   配置config-server方式跟普通的mongodb一样设置port,fork,dbpath,logpath
  2.   配置mongos-server不需要配置dbpath,需要配置configdb指向(1)中配置的host:port
  3.   配置shard跟普通的mongodb实例一样同(1)
  4.   登录mongos进行分片的指向,
    use admin;
    db.runCommand({"addshard":"192.168.13.213:10000"}) 
     将192.168.13.213:10000作为分片加入
  5.   加入完shards,开始配置进行分片的DB以及Collection
    #shard db
    db.runCommand( { enablesharding : "shard" } );
     
    #shard collections
    db.runCommand( { shardcollection : "shard.test", key : { name : 1 } } )
     key是指明进行分片的字段,改字段必须是已经作了索引,而且联合index进行分片
  6. 移除shard
    db.runCommand({removeshard:"192.168.13.213:10002"});
     但是移除的shard是某个db的primary的话需要movePrimary
    db.runCommand({ movePrimary : "shard", to : "shard0002" });
     
  7. 一些管理命令
    db.printShardingStatus();
     查看分片的情况
    use config;
    db.shards.find();
     可以使用config库来查看一些配置记录

你可能感兴趣的:(mongodb)