分片 分片是指將數據拆分,將其分散存放在不同的機器上的過程。不需要強大的計算機就可以存儲更多的數據,處理更大的負載。 MongoDB支持自動分片。允許創建一個包含許多臺機器(分片)的集群,將數據子集分散在集群中,每個分片維護著一個數據集合的子集。 復制是讓多臺服務器都擁有同樣的數據副本;而每一個分片都有其他分片擁有的不同的數據子集。
分片可以增加可用RAM,增加可用磁盤空間,減輕單臺服務器的負載,處理單個Mongod無法承受的吞吐量。 少量分片的系統與未分片的系統相比,通常延遲更大,吞吐量可能會更小。至少應該創建3個或以上的分片。
mongos(路由服務器)維護一個內容列表,指明每個分片包含哪些數據內容,然后將請求轉發給相應的分片。應用程序只需要連接到路由服務器,就可以像使用單機服務器一樣進行正常請求。每個分片對請求的響應都會發送給路由服務器,再將所有響應合并一起,返回應用程序。
配置服務器 它是普通的mongod服務器,它不是副本集成員,保存著集群的配置信息:集群中有哪些分片,分片的是哪些集合,以及數據的分布。 配置服務器保存著集群和分片的元數據。 首先建立配置服務器,因為mongos需要從配置服務器獲取配置信息,因此配置服務器應該先與mongos進程啟動。 根據最新mongodb-3.4版本,在生產環境至少配置3臺配置服務器,并且將這三臺配置服務器作為副本集,同一個主機上端口號自定義,不同主機可以相同: 配置服務器一:
配置服務器二:
配置服務器三:
其中,–configsvr 并非必選項。指定mongod為新的配置服務器,將mongod的默認監聽端口改為27019,默認的數據目錄改為/data/configdb而已。但是可以使用–port 和–dbpath 修改這兩項配置。
Mongos進程 mongos進程需要知道配置服務器的地址,必須使用–configdb選項,使用 配置副本集 的名字;將端口號自定義,不然報錯:
默認情況下,mongos運行在27017端口,并不需要指定數據目錄–dbpath,因為mongos本身并不保存數據,它會在啟動時從配置服務器加載集群數據。
添加分片 將副本集轉換為分片。啟動副本集各個成員服務器:
啟動mongos,將這些副本集添加到mongos中:(未完待續)
新聞熱點
疑難解答