(10)MongoDBの断片

  断片のシェアは、データ内の異なるノードで異なっています。もう少し複雑な単純にコピーするよりも設定してください。そのデータ記憶ノードとルーティングノードmongos、中央ノード構成configsvrに加えて、configsvrデータは、メタ情報を格納し、格納されていない、すなわち、そのシート上のデータの情報。最初のクエリデータmongosがconfigsvr見てみると、ノード上のデータを尋ねます。

  フラグメントは、4つの要素があります。

  (1)N個のノードを有し、N> = 2

  (2)configsvrメタ情報を保持しています

  (3)mongosは、ルーティングを行う開始するには

  (4)良好なデータの断片化のルール(configsvrを保護するように設定ルール)を設定します

アクセスされるデータを以下に示します。

次のように単純なスライスが記録ステップを共有します: 

(1)は、4つの確立は、フリーのMongoDBにおけるサービスプロファイル、場所を開始します。

  smongodb1.conf

DBPATH = / VAR / smongodb / mdata17 
ログパス = / VAR / smongodb / MLOG / mongolog17.log    
smallfiles = 
logappend = 
bind_ip = 0.00.0 
フォーク = 
ポート = 27017
コードの表示

  smongodb2.conf

ログ・パス= / VAR / smongodb / MLOG / mongolog18.log    
smallfiles = 
logappend = 
bind_ip = 0.00.0 
フォーク = 
ポート = 27018
コードの表示

  smongodbConfigsvr.conf

DBPATH = / VAR / smongodb / mdata20 
ログパス = / VAR / smongodb / MLOG / mongolog20.log    
smallfiles = 
logappend = 
bind_ip = 0.00.0 
フォーク = 
configsvr = 
ポート = 27020
コードの表示

  smongodb.conf

ログ・パス= / VAR / smongodb / MLOG / mongolog30.log    
logappend = 
bind_ip = 0.00.0 
フォーク = 
ポート = 30000 
てConfigDB = 192.16831.15127020
コードの表示

(2)シーケンスの次の操作を実行

  クリア履歴データ  

  RM -rfは/ var / smongodb /

  データログ保存パスを作成します。

  ます。mkdir -p / VAR / smongodb / mdata17の/ var / smongodb / mdata18の/ var / smongodb / mdata20の/ var / smongodb / Mlogs

  27017,27018サービスポート(2つのインスタンス)を起動します

  / usr / local / mongodb245 / binに/のmongod -f /usr/local/mongodb245/smongodb1.conf

  / usr / local / mongodb245 / binに/のmongod -f /usr/local/mongodb245/smongodb2.conf

  configsvrサービスを開始

  / usr / local / mongodb245 / binに/のmongod -f /usr/local/mongodb245/smongodbConfigsvr.conf

  ルーティングサービスを開始Mongos

  / usr / local / mongodb245 / binに/ mongos -f /usr/local/mongodb245/smongodb.conf

  二枚のノード増加

  / usr / local / mongodb245 / binに/モンゴ--port 30000

  sh.addShard( '192.168.31.151:27017')

  sh.addShard( '192.168.31.151:27018')

  以上の動作を実行した後、ステップを構築することは、ルートノードにログインステータス断片を表示することができ、完了しました。

  30000ルーティングノードクライアント--portは/ usr / local / mongodb245 /ビン/モンゴが記録後の状態、実行sh.status()表示断片

 見ることができるノードに対応する192.168.31.151.27017断片であるshard0000、ノードに対応する192.168.31.151.27018スライスであるshard0001。管理データベースのスライスを設定します。ないフラグメンテーションルール構成は、それが達成され、断片化データできないように次のように、テストは次のとおりです。

mongos> db.goods.insert({名:' 電動歯ブラシ1 ' })
mongos > db.goods.insert({名:' 電動歯ブラシ2 ' })
mongos > db.goods.insert({名:電動歯ブラシ3 ' })
mongos > db.goods.insert({名:' 電動歯ブラシ4 ' })
コードの表示

 次のように何sh.statsu()の実装では、データ、および無ライブラリショップを照会することはできません27018ノードにログインし、データを照会することができ、この時間は27017ノードログイン、ショットは以下のとおりです。

赤い部分に分配におけるボックス:false説明フラグメンテーションがルールデータを設定されていない、一次:shard0000好ましいエリアデータを挿入すると言うことであるshard0000ので、データは192.168.31.151.27017サービスによって書かれました。設定以下の断片化規則:

mongos> db.goods.remove({});  試験のために、すべてのデータを消去します

mongos> sh.enableSharding(「店」)フラグメントライブラリが指定されているお店

mongos> sh.shardCollection( 'shop.goods'、{goods_id:1});店の商品データベーステーブルに割り当てられた断片フィールドgoods_idを断片

次のように完)(再びルール、実行sh.statsuを指定し、ショットは以下のとおりです。

あなたはgoods_idれる真、シャードキーに分割ショップライブラリーを見ることができます。フィールドは,,システムがフィールドに割り当てられたデータの部分がキーピースキー・フィールドと呼ばれるフィールドの値を計算するために使用する、コレクションの重要な部分であるMongoDBの各片に散乱した平均絶対のレベルから文書の単品ではなく、 N一つの文書は、1つのブロックが優先順位が、用紙上に配置され、「チャンク」に形成されている場合(3> =)、フィルム上の別のチャンクがする他のシートよりも大きなチャンク差におけるこのチャンクオンチップ、MongoDBのチャンク単位でシート保持との間のデータのバランスを。単にデータに格納された複数のオンチップチャンク、チャンクが存在することを意味します。デフォルトのチャンクサイズは64Mですが、それを変更することができます。300000は現在、1Mのチャンクの大きさをテストするために、ビュー・データ片を格納されたデータに続いて挿入されます

mongos> db.settings.find();
{ "_id": "チャンク"、 "値":64}

mongos> db.settings.save({_id:'chunksize',value:'1'});
mongos> db.settings.find();
{ "_id" : "chunksize", "value" : "1" }

mongos> for(var i=1;i<=300000;i++){ db.goods.insert({goods_id:i,goods_name:'aaaaaaaaaaaaa sddddddddddd fsddddddddddd fgggggggggggggggg hhhhhhhhhhhhhhh kkkkkkkkkkkkkk'});}

mongos> db.goods.find().count();
300000

登录27017

> db.goods.find().count();
3891

登录27018

> db.goods.find().count();
296109

两个片上都写入了数据,说明分片成功,再看一下截图 sh.status(); 

图中可以清楚的看到shard0000片有2个chunk,shard0001片有3个chuck,根据goods_id的范围可以看到数据是怎样在不同片上分布的。

  这样配置有个问题,由于数据优先往某个片上插入,不同片上 chunk 的量会不同,导致失衡,为求平衡shard的实例之间有chunk来回移动的现象。这样增加了服务器之间的IO。下一篇解决这个问题。

おすすめ

転載: www.cnblogs.com/javasl/p/11297296.html