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

來源:互聯網
上載者:User

MongoDB3.0.1分區部署,國內3.0的部署文檔還不是很多(何志雄)。,mongodb3.0.1何志雄
一)、分區包括: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(),選擇某個表,執行該命令,可以看到該表的分區情況,佔用多大,資料多少。

相關文章

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.