程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> MongoDB3.0.1分片部署,國內3.0的部署文檔還不是很多(何志雄)。

MongoDB3.0.1分片部署,國內3.0的部署文檔還不是很多(何志雄)。

編輯:DB2教程

MongoDB3.0.1分片部署,國內3.0的部署文檔還不是很多(何志雄)。


一)、分片包括: 1、至少3個config服務器:存儲了數據塊對分片的映射,用於判斷數據存儲在那個片上。 2、分發路由器:1個以上的mongos,將用戶的讀、寫請求分發到分片中,該服務器被應用程序訪問,應用程序不直接訪問分片。 3、2個以上的分片,每個分片是單獨的 mongod 或者是 replica set,如果是開發、測試環境,分片可以使獨立的mongod而不一定要是副本集。
二)、分片讀寫原理: 應用程序訪問mongos(又稱為查詢路由),mongos向config服務器(又稱為配置服務器)查詢數據應該屬於哪個分片, 然後shards(分片)向具體的分片讀寫數據。 每個分片由一個副本集構成。 appDriver | mongos\(可以是多個mongos) / \ \config/config/config / \ shard(replset) shard(replset) 三)、生產環境部署注意事項: 1、3台config服務器,需要部署在不同的機器上。 2、2個或以上的復制集組成分片。 3、一個或更多的mongos,部署在應用程序所在的服務器上。
四)、部署: 4.1 IP規劃環境: 1、至少3台Config服務器(需要注意到是Config需要奇數個): 192.168.62.152:27052 192.168.62.154:27054 192.168.62.155:27055 2、至少1台Mongos服務器,商用環境建議配置多台: 192.168.62.153:27788 192.168.62.155:27799 3、不低於2個副本集分片: 分片1: 192.168.62.153:17053 192.168.62.154:17054 192.168.62.155:17055 分片2: 192.168.62.155:17155 192.168.62.153:17153 192.168.62.152:17152
【總體部署步驟描述】 1、先部署2個分片副本集,無需配置超級管理員和數據庫管理員,不要創建任何數據庫。 2、步驟3個mongoConfig服務,無需配置超級管理員和數據庫管理員。 3、部署2個Mongos路由服務, 4、在mongos服務器上使用./mongo --port 27788的本地例外登錄的方式創建超級管理員。 5、在mongos服務器上增加mongoConfig配置服務器。 6、在mongos服務器上添加數據庫管理員。 7、在mongos服務器上為數據庫創建索引(需要分片的) 6、在mongos服務器上添加2個分片及片鍵盤。
【重要】所有服務器(config/mongs/分片副本集)的mongodb-keyfile的加密串都為,目的是集群服務器之間的通訊需要IJMyg3AL15ek0FWIbIBhVAr9oK/D0DEqxtkCNoyaQyz2wOIN/IcXLLjsZPX0F+6AMM
4.2、部署配置服務器(Mongo Config:存儲集群元信息的mongod實例,生成環境至少配置3台以上的服務器,運行在不同的服務器上) 在155/154/152服務器上,重復以下2個步驟。端口可以不一樣。 安裝目錄在/soft/configMongoDB目錄下。
1)、在配置服務器上:mkdir -p /data/configdb 2)、啟動配置服務器(不需要建立管理員賬號和密碼) 如果不把mongdb命令加入到環境變量中,則到安裝包的bin目錄下執行: 在155執行: cd /soft/configMongoDB/bin ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27055 --keyFile=/soft/configMongoDB/mongodb-keyfile& 在154執行: cd /soft/configMongoDB/bin ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27054 --keyFile=/soft/configMongoDB/mongodb-keyfile& 在152執行: cd /soft/configMongoDB/bin ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27052 --keyFile=/soft/configMongoDB/mongodb-keyfile&
4.3、部署Mongos服務,用於路由客戶端操作到具體的分片上,至少部署不低於一個Mongos服務. 需要注意的是,所有mongos的配置服務器順序(192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055)必須一致,否則會報錯。 Mongos由於沒有數據節點,因此創建管理員的時候,使用 ./mongo --port 27799 在本機上執行才可以。 Mongos的超級賬戶和密碼與副本集的保持一致,創建超級用戶後執行如下命令。
在153上執行: cd /soft/mongosMongo/bin ./mongos --configdb 192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055 --port 27788 --keyFile=/soft/mongosMongo/mongodb-keyfile& 在155上執行: cd /soft/mongosMongo/bin ./mongos --configdb 192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055 --port 27799 --keyFile=/soft/mongosMongo/mongodb-keyfile&
4.4、向集群中添加分片(一個分片可以單獨的monod服務,或者一個副本集,在生產環境中應該使用副本集,進行讀寫分離,故障失效轉移) 本案例使用2個副本集,實現分片。 副本集的部署,請參考上文,需要注意的是如果在1-2台機器上部署整個環境,每個Mogod實例的數據目錄不要在同一個地方。 在副本集中,只需要在master機器建立超級管理員(估計也能省略此步驟),不需要建立具體數據庫的管理,等到加入分片成功後, 到mongos服務器上建立具體的管理員和索引。

4.4.1啟動分片副本集1,分片名稱:shard1 在153、154、155上執行: cd /soft/shardMongo/bin ./mongod -shardsvr --auth --replSet shard1 --config /soft/shardMongo/mongodb.conf 在Master機器上執行副本集 config={"_id" : "shard1","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.153:17053"},{ "_id" : 2,"host":"192.168.62.154:17054"},{"_id":3,"host":"192.168.62.155:17055"}]} rs.initiate(config) 4.4.2 啟動分片副本集2,分片名稱:shard2 在155/153/152上執行 cd /soft/shard2Mongo/bin ./mongod -shardsvr --auth --replSet shard2 --config /soft/shard2Mongo/mongodb.conf 在Master機器上執行副本集 config={"_id" : "shard2","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.155:17155"},{ "_id" : 2,"host":"192.168.62.153:17153"},{"_id":3,"host":"192.168.62.152:17152"}]} rs.initiate(config)
4.5、添加分片到Mongos。選擇選擇其中一台Mongos,連接後執行命令 ./mongo 192.168.62.153:27788 use admin db.auth("superAdmin","admin123") 4.5.1、添加分片1: sh.addShard("shard1/192.168.62.153:17053") 格式:分片名稱/該分片中的至少一台Mongod實例。 添加成功顯示:{ "shardAdded" : "shard1", "ok" : 1 } ps:如果只是純粹添加一台單機的mongd實例,直接執行sh.addShard("192.168.62.153:17053") 4.5.2、添加分片2: sh.addShard("shard2/192.168.62.155:17155") 如果提示錯誤: "can't add shard shard2/192.168.62.155:17155 because a local database 'hezx' exists in another shard1:shard1/192.168.62.153:17053,192.168.62.154:17054,192.168.62.155:17055 那麼此時需要在shard1和shard2的master上去刪除hezx數據庫,然後在添加分片成功後,在mongos服務器上上操作創建數據庫。
在另外一台mongos服務器上也和如上命令一並操作。 4.5、對某個數據庫開啟分片 sh.enableSharding("hezx")
4.6、創建片鍵(片鍵需要是索引,如果集合中有數據,需要手動敲創建索引命令,如果沒有建立索引,創建的過程中會自動建立) 原因是,片鍵要求是索引,且如果是復合索引就必須是索引的開頭。如果集合中沒有數據,此時會自動創建索引。 sh.shardCollection("hezx.message", { "to": 1 } ) 說明:為hezx庫的message集合創建以to為鍵片,可以是組合鍵。
至此,MongoDB的分片已經部署完畢。分片的相關命令如下: 1、sh.status(),查看分片的狀態。有哪些分片,哪些數據庫被分片了,片鍵是什麼。 2、db.message.stats(),選擇某個表,執行該命令,可以看到該表的分片情況,占用多大,數據多少。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved