知識點:mongoDB Sharding 是資料自動分區。資料自動在不同的資料服務器中遷移。遷移觸發條件有資料量大小與訪問流量。
1. 建立分區叢集分為兩個部分:一是啟動相應的mongoDB服務,二是決定怎麼切分資料。
2. 一個能夠提供服務的分區叢集主要由三部分構成:
(一)設定管理員:就是一個一般的mongoDB服務進程。它負責儲存叢集的資料與片的對應關係。配置資訊落地。
(二)路由伺服器:路由請求與轉寄結果集。路由伺服器知道對應的資料存放區在什麼位置。它緩衝設定管理員的資訊但不落地,從設定管理員同步資料。
(三)資料服務器:真正儲存資料的服務進程。它是一般的mongoDB服務進程。
3. 建立分區叢集
1. 首先啟動佈建服務進程。因為路由伺服器需要從設定管理員同步資料,因此要早路由服務進程啟動。
mongod --dbpath /exports/dbs/config --port 20000
2. 啟動路由伺服器,指定對應的設定管理員位置。路由服務進程並不需要指定資料檔案目錄,它並不儲存資料,只是緩衝佈建服務進程的資料。
mongos --port 30000 --configdb localhost:20000
3. 啟動資料服務器,這個才是真正儲存資料的mongodb進程。(剛開始先使用一個,之後再添加)
mongod --dbpath /exports/dbs/shard1 --port 27017
4. 連線路由伺服器開啟分區。並且需要指定到某個庫的某個集合。
mongo localhost:30000/admin
db.runCommand({addshard:"localhost:27017",allowLocal:true});
5. 連線路由伺服器,指定需要分區的某個庫中的某個集合。並指定分區的健。
db.runCommand({enablesharding:"foo"});
db.runCommand({shardcollection:"foo.bar",key:{_id:1}});