欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb 分布式配置

程序员文章站 2024-01-13 16:49:10
...

一、副本集(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