mongodbスライスクラスタ


  • 概要:ビッグデータ量とスループットのデータベースはシングルマシンの性能に大きな圧力をもたらし、大量のデータクエリーはシングルマシンのCPUを消耗させ、大きなデータ量はシングルマシンの記憶圧力に対して大きく、最終的にシステムのメモリを消耗させ、圧力をディスクIOに移す.
  • の利点:1.スライスを使用すると、スライスごとに処理する必要がある要求数が減少する.2.スライスを使用して、スライスごとに格納されるデータを削減します.
  • mongodbスライスクラスタの構成:shard(スライスサーバ)、config server(構成サーバ)、route(ルーティングサーバ)
  • スライスサーバ:ストレージデータ
  • コンフィギュレーションサーバ:管理スライスサーバ
  • ルーティングサーバ:フロントエンドルーティングとして
  • mongodb 3.2のインストール:
    Openssl-develをインストールし/optに解凍
    mongoとmongodの管理が容易で、リンクを作ります
    yum install openssl-devel -y
    
    tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/
    
    mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb
    
    ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
    ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod

    4つのインスタンスのデータファイルとログファイルの作成
    mkdir -p /data/mongodb/mongodb{1,2,3,4}
    
    mkdir /data/mongodb/logs
    
    touch /data/mongodb/logs/mongodb{1,2,3,4}.log
    
    chmod -R 777 /data/mongodb/logs/*.log

    nlimit-uとulimit-nの値は20000より大きい
    ulimit -n 25000
    
    ulimit -u 25000

    サーバの構成
    cd /usr/local/mongodb/bin/ // bin   
    
    vim mongodb1.conf
    
    port=37017          //      
    dbpath=/data/mongodb/mongodb1
    logpath=/data/mongodb/logs/mongodb1.log
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    configsvr=true
    
    mongod -f /usr/local/mongodb/bin/mongodb1.conf  //    
    
    sysctl -w vm.zone_reclaim_mode=0
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    //        ,         
    

    スライスサーバ
    #mongodb2.conf
    cp -p mongodb1.conf mongodb2.conf
    vim mongodb2.conf    // mongodb2.conf    
    
    port=47017    //    47017
    dbpath=/data/mongodb/mongodb2  //    
    logpath=/data/mongodb/logs/mongodb2.log  //    
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    shardsvr=true
    
    #mongodb3.conf
    cp -p mongodb1.conf mongodb3.conf
    vim mongodb3.conf
    
    port=47018   //   47018
    dbpath=/data/mongodb/mongodb3
    logpath=/data/mongodb/logs/mongodb3.log
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    shardsvr=true
    
    #      
    mongod -f mongodb2.conf
    mongod -f mongodb3.conf
    

    ルーティングサーバの起動
    ./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.235.204:37017 --chunkSize 1   //   /usr/local/mongodb/bin 

    スライスサーバーの有効化
    mongo
    
    mongos> show dbs
    
    mongos> sh.status()  //shards   ,       
    
    mongos> sh.addShard("192.168.177.133:47017") //  47017        
    mongos> sh.addShard("192.168.177.133:47018")  //  47018        
    
    mongos> sh.status()
    

    スライス機能
    まずデータベースを追加し、コレクションにデータを作成します.
    mongos> sh.enableSharding("school")   #       
    
    mongos> db.info.createIndex({"id":1})   # info     
    
    mongos> sh.shardCollection("school.info",{"id":1})  #   
    
    mongos> sh.status()