zoukankan      html  css  js  c++  java
  • MongoDB ReplacaSet & Sharding集群安装 配置 和 非集群情况的安装 配置 -摘自网络

    单台机器做sharding

    --单机配置集群服务(Sharding)
    --shard1_1
    mongod --install  --serviceName MongoDBServerShard1 --serviceDisplayName MongoDBServerShard1 --shardsvr --port 27017 --dbpath "G:MongoDatashard1_1" --oplogSize 100 --logpath "G:MongoDatalogshard1_1.log" --logappend    --profile=1 --slowms=5 --rest
    
    --shard2_1
    mongod --install  --serviceName MongoDBServerShard2 --serviceDisplayName MongoDBServerShard2 --shardsvr  --port 27018 --dbpath "F:MongoDatashard2_1" --oplogSize 100 --logpath "F:MongoDatalogshard2_1.log" --logappend    --profile=1 --slowms=5 --rest
    
    
    --配置config services(配置shard config)
    mongod --install  --serviceName MongoDBConfigServer --serviceDisplayName MongoDBConfigServer --configsvr --dbpath "F:MongoDataconfig" --port 20000 --logpath "F:MongoDatalogconfig.log" --logappend
    
    
    --配置mongos service
    比如在172.16.1.86机器上安装如下服务。
    mongos --install  --serviceName MongoDBMongosServer --configdb 172.16.1.86:20000 --port 30000 --chunkSize 5 --logpath "F:MongoDatalogmongos.log" --logappend
    
    db.runCommand({addshard:"172.16.1.86:27017",allowLocal:true });
    db.runCommand({addshard:"172.16.1.86:27018",allowLocal:true });
    

      

    多台机器做sharding & ReplacaSet

    http://blog.csdn.net/luonanqin/article/details/8497860

    分担读写负载
    三台服务器,如果将所有数据分为三片,每一台作为其中一片数据的写入点,其他两个节点进行拷贝,使读写压力在'一定条件'下分布在三台机器。
          
    自动故障转移
    在单点损坏条件下,可以立刻将主服务器转换到随机另外一台从属服务器的分片上。不过之前未处理的请求将会被全部抛弃。
          
    灵活配置分片 
    不设置表分片,表就不会进行分片,会完整保存在该库所在的主Shard中。可以在配置某数据库信息启用分片之后,单独设定某个表的信息在其他分片中分散存储。并设定尽量有规律的分片条件。
    
          
    动态添加删除
    可以在压力接近瓶颈的时候动态的进行分片添加,并设置该服务器为某分片写入点,分散IO压力,也可以在服务器出现异常时,进行分片数据的迁移和分片卸载。在数据库集群运作中时,添加分片,数据自动流入此分片。
    在数据库集群运作中时,删除分片,系统立即设置此分片状态 "draining" : true ,之后慢慢将此分片数据转移到其他分片。
          
    实时查看状态
    可以在数据库信息设置和信息的CRUD操作时,实时进行数据库状态、数据分片信息、数据状态的监控。
    

      

    -------------------------------------------------
    (非集群情况)
    --配置单点服务
    mongod --logpath "G:MongoDataloglog.log"  --logappend --dbpath "G:MongoDatadb" --directoryperdb   --config "E:Program FilesMongoDBServer3.0inmongod.cfg" --install
    
    
    
    
    --------------------------------------------------
    (集群情况)
    --配置集群服务(3个机器,每台都装2个shard)
    
    --shard1_1
    mongod --install  --serviceName MongoDBServerShard1 --serviceDisplayName MongoDBServerShard1 --shardsvr --replSet shard1 --port 27017 --dbpath "G:MongoDatashard1_1" --oplogSize 100 --logpath "G:MongoDatalogshard1_1.log" --logappend    --profile=1 --slowms=5 --rest
    
    --shard2_1
    mongod --install  --serviceName MongoDBServerShard2 --serviceDisplayName MongoDBServerShard2 --shardsvr --replSet shard2 --port 27018 --dbpath "F:MongoDatashard2_1" --oplogSize 100 --logpath "F:MongoDatalogshard2_1.log" --logappend    --profile=1 --slowms=5 --rest
    
    
    --在其中一台上配置Config
    config = {_id: "shard1", members: [
                              {_id: 0, host: "17.16.1.86:27017"},
                              {_id: 1, host: "17.16.1.89:27017"},
                              {_id: 2, host: "17.16.1.90:27017"}]
               }
    rs.initiate(config)
    
    
    config = {_id: "shard2", members: [
                              {_id: 0, host: "17.16.1.86:27018"},
                              {_id: 1, host: "17.16.1.89:27018"},
                              {_id: 2, host: "17.16.1.90:27018"}]
               }
    
    rs.initiate(config)
    
    rs.status()
    
    /*暂时不这么使用
    config = { _id:"shard1", members:[ 
                              {_id: 0, host: "17.16.1.86:27017",priority:2},
                              {_id: 1, host: "17.16.1.89:27017",priority:1},
                              {_id: 2, host: "17.16.1.90:27017",arbiterOnly:true}]};  
     rs.initiate(config)
    
    
    config = { _id:"shard2", members:[ 
                              {_id: 0, host: "17.16.1.86:27018",priority:2},
                              {_id: 1, host: "17.16.1.89:27018",priority:1},
                              {_id: 2, host: "17.16.1.90:27018",arbiterOnly:true}]};  
     rs.initiate(config)
    
    */
    
    
    --配置config services(配置shard config,在三台机器上)
    mongod --install  --serviceName MongoDBConfigServer --serviceDisplayName MongoDBConfigServer --configsvr --dbpath "F:MongoDataconfig" --port 20000 --logpath "F:MongoDatalogconfig.log" --logappend
    
    
    --配置mongos service(可在一台或多台机器配置)
    比如在172.16.1.86机器上安装如下服务。
    mongos --install  --serviceName MongoDBMongosServer --configdb 17.16.1.86:20000,17.16.1.89:20000,17.16.1.90:20000 --port 30000 --chunkSize 5 --logpath "F:MongoDatalogmongos.log" --logappend
    
    访问的时候mongo 17.16.1.86:30000
    
    
    
    --2个分片已经设置好,在mongos控制台的admin数据库下,执行下面的代码,添加分片。
    mongo 17.16.1.86:30000
    db.runCommand({addshard:"shard1/17.16.1.86:27017,17.16.1.89:27017,17.16.1.90:27017",name:"s1",maxsize:20480});
    db.runCommand({addshard:"shard2/17.16.1.86:27018,17.16.1.89:27018,17.16.1.90:27018",name:"s2",maxsize:20480});
    其他命令
    ————————————————————
    
    允许数据库中的内容被分片
    db.runCommand({enablesharding:"test"}) 
    
    设定表分片与分片规则,作为分片规则的key,必须为该表索引。
    db.runCommand({shardcollection:"teset.user",key:{id:1, email:1, regtime:1}})
    
    查看数据库状态
    db.stats()
    
    查看表状态
    db.tableName.stats()
     
    查看所有分片信息状态
    db.printShardingStatus();
    
    删除分片,删除分片命令执行后,mongos将不再写入该分片数据,同时会将数据迁移到其他分片,这个过程需要一段时间,此时查看db.printShardingStatus();,该分片状态为"draining" : true。
    但是由于bug,会一直处于此状态下。需要在人工确定已无数据在此分片后,在mongos中进入config数据库执行db.shards.remove({draining:true}),删除掉该分片。
    db.runCommand({removeshard : "shard1/17.16.1.86:27017,17.16.1.89:27017,17.16.1.90:27017"});
    
    使Primary降为Secondary,每一个分片,都是一组副本集,1主2从,设置时自动选举,如果不符合写入压力分散的需求,可以将该主库降级,2个从属会随机选择一个重新为主。
    rs.stepDown() 
    
    手动移动碎片
    http://www.mongodb.org/display/DOCS/Moving+Chunks


    --备份
    mongodump -h localhost:27020 -d ssr2016db -o G:MongoDatadump
    mongodump -h localhost:27020 -d ssr2016pointsdb -o G:MongoDatadump

    --恢复
    mongorestore -h localhost:30000 -d ssr2016db G:MongoDatadumpssr2016db
    mongorestore -h localhost:30000 -d ssr2016pointsdb G:MongoDatadumpssr2016pointsdb

      

  • 相关阅读:
    JQuery+Ajax+Ashx+Base64 data无法传递的问题
    用户 'IIS APPPOOL\DefaultAppPool' 登录失败。 的解决方案
    CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\4b49f661\23a749fc\App_Web_default.aspx.cdcab7d2.zii776dc.dl
    SQL 按月统计
    591  Box of Bricks
    10038 Jolly Jumpers
    113 Power of Cryptography
    10370 Above Average
    10189 Minesweeper
    136 Ugly Numbers 之“堆”的解法
  • 原文地址:https://www.cnblogs.com/haoliansheng/p/5405061.html
Copyright © 2011-2022 走看看