MongoDB sharding cluster Step by Step

來源:互聯網
上載者:User

標籤:

本篇講述MongoDB的 Sharding Cluster 的詳細步驟,按著做理論上不會有什麼錯誤。

關於說著裡邊的參數、變數、和設定,沒有用到很多,只用到了關鍵的一些,其他的可以參考MongoDB的官方文檔。

後者自己google,baidu,這裡不想多講。同樣廢話不多說,直接上菜。

哦,對了Sharding Cluster裡邊一定要弄明白的三個概念, DataNode, ConfigServer, Router。

好了, 配置正式開始:

1, 配置Shard Data Node, 即我們剛才說的 Replica Set

1)自己編寫 mongo_sharding_dataNode_1.conf

檔案的內容:

bind_ip=localhost
port=27022
dbpath=D:\MongoDB\data\dbnode1
logpath=D:\MongoDB\log\node1.log
logappend=true
replSet=testsh1
shardsvr=true

2)同樣的檔案,改掉bind_ip,port,dbpath,logpath的值,做成mongo_sharding_dataNode_2.conf

這樣存資料的兩個庫就有個一個primary,一個secondary。

3)在Replica Set中還要有一個arbitrary,所以接著編寫第三個檔案:mongo_sharding_dataNode_arbit.conf

內容同上,只是bind_ip,port,dbpath,logpath不一樣而已。

上邊的配置項,和參數有不清楚的,或者想加入更多參數的,最好使用 mongod -h 去查看一下, 裡邊解釋的很清楚。

4)三個檔案編號之後使用 mongod.exe -f  mongo_sharding_dataNode_2.conf 啟動三個mongod

例如,我的是: 

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_sharding_dataNode_1.conf

5)三個Server(三個mongod)都啟起來之後,把這個三個server配置成一個 Replica Set 即讓他們成為我們的一個shard data node.

隨便登入進這個三個server中的一個, 比如我登入的是27022,

mongo.exe localhost:27022

use admin

cfg = {_id:‘testsh1‘,members:[{_id:0,host:‘localhost:27022‘,priority:2},{_id:1,host:‘localhost:27023‘,priority:1},{_id:2,host:‘localhost:27024‘,arbiterOnly:true}]}
rs.initiate(cfg)

 通過以上命令,把這三個server配置成一個Replica Set, 即一個Shard Data Node,

現在我們就已經有個了一個 Shard Data Node 了。

如果中間出了錯誤, 不要害怕,先可以找找有沒有補救的辦法,比如rs.remove("localhist:27023")    rs.reconfig(cfg)等等,這樣可以學習的耕讀。

最不怕的就是毀掉重來嘛, 不過這麼弄自己練習可以, 公司環境或生產環境,要千萬千萬萬萬萬萬小心的!!

2,配置ConfigServer

1)自己編寫 conf 檔案 mongo_configserver_1.conf 內容:

bind_ip=localhost
port=27019
dbpath=D:\MongoDB\data\confserver1
logpath=D:\MongoDB\log\confserver1.log
logappend=true
configsvr=true

注意這裡的 configsvr=true.

同樣的方式編寫另外兩個或多個 conf 檔案。

2)啟動 Config Server

mongod.exe -f mongo_configserver_1.conf

例如,我的啟動方式: 

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_configserver_2.conf

現在 Config Server 有了, Shard DataNode 有了,該有的準備都有了。

我們最終的要角色: mongos Router 該上場了。

3,配置Mongos

同樣,我們編寫mongos的設定檔mongos.conf

bind_ip=localhost
port=27030
#dbpath=D:\MongoDB\data\db  ####### 注意一下,它不需要dbpath, 可以查看 mongos -h 查看mongos的參數列表
logpath=D:\MongoDB\log\mongos.log
logappend=true
configdb=localhost:27019,localhost:27020,localhost:27021    ####看一下這個三個ip:port用逗號分隔,這是三個 ConfigServer的地址。

好了全部的靜態,需要寫到檔案裡的配置都配置完了, 啟動 mongos

mongos.exe -f mongos.conf

例如,我的啟動是: 

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongos.exe -f ..\conf\mongos.conf

如果啟動mongos沒錯的話,你應該能進入mongos

使用命令:mongo.exe localhost:27030  進入mongos,

進入mongos 後的提示應該是: mongos> 這樣子的,

4,配置 Sharding

1)加入shard

使用命令:mongos> sh.addShard("testsh1/localhost:27022")

還記得前邊那個testsh1吧, testsh1表示Replica Set的名字,當把主節點添加到shard以後,會自動找到set裡的主,備,決策節點。

所以上邊的命令就是:把testsh1這個Replica Set中的主節點加入到Shard中,讓shard自己找備節點和決策節點。

可以使用命令:mongos> db.runCommand({listshards:1}); 來看一下添加的shards, 運行結果應該類似:

mongos>
mongos> db.runCommand({listshards:1});
{
"shards" : [
{
"_id" : "testsh1",
"host" : "testsh1/localhost:27022,localhost:27024"
}
],
"ok" : 1
}
mongos>
mongos>

2)啟用資料庫分區,使用命令:

mongos>
mongos>
mongos> db.runCommand({enablesharding:"test-db"});
{ "ok" : 1 }
mongos>

啟用 test-db 的資料庫分區。

通過執行以上命令,可以讓資料庫跨shard,如果不執行這步,資料庫只會存放在一個shard。

一旦啟用資料庫分區,資料庫中不同的collection將被存放在不同的shard上,但一個collection仍舊存放在同一個shard上,要使單個collection也分區,還需單獨對collection作些操作。

3)啟用collection分區,說的清楚,明白:

使用命令:mongos> db.runCommand({shardcollection:‘test-db.usertest‘,key:{_id:1}});

表示啟用test-db這個資料庫的中 usertest 表的分區,使用 key是有索引的_id 這個列。

設定完了,可以切換到 test-db下,看看usertest表的狀態。

使用命令:

use test-db;

db.usertest.stats()

由於內容太多,不在這裡列出了。

 

文章到這裡所有的配置已經結果, 這個Mongo Shard Cluster 已經配置完成了,

可以使用 mongos 來進行, 操作了。 比如添加,刪除,查看等等。

mongos> user test-db;

mongos> db.usertest.save({name:‘xiaobing‘});

mongos> db.usertest.find();

等等一系列的操作。

ok, let‘s call it a day.

沒完沒了了,你還。

哈哈, 我很想知道如果那個mongos掛了怎麼辦?嗯,給了一個解決方案, 為了防止單點故障,一個mongos掛了怎麼辦?

看圖, 不多說了:

知道怎麼弄了吧, 這樣應該沒有單點故障了吧,完美,perfect。嘿嘿,嘿嘿

MongoDB sharding cluster Step by Step

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.