1. 程式人生 > 其它 >MongoDB 分片叢集

MongoDB 分片叢集

每日一句

Medalist don't grow on trees, you have to nurture them with love, with hard work, with dedication.
金牌選手不會從天而降,你必須用熱愛、刻苦和投入來澆灌他們。

概述

分片(sharding)是一種垮多臺機器分佈資料的方法,MongoDB使用分片來支援具有非常大的資料集和高吞吐量操作的部署。

分片(sharding)是指將資料拆分,將其分散存在不同的機器上的過程。有時也用分割槽(partitioning)來表示這個概念。將資料分散到不同的機器上,不需要功能強大的大型計算機就可以儲存更多的資料,處理更多的負載。

具有大型資料集或高吞吐量應用程式的資料庫系統可以會挑戰單個伺服器的容量。例如,高查詢率會耗盡伺服器的CPU容量。工作集大小大於系統的RAM會強調磁碟驅動器的I / O容量。

有兩種解決系統增長的方法:垂直擴充套件和水平擴充套件。

  • 垂直擴充套件意味著增加單個伺服器的容量,例如使用更強大的CPU,新增更多RAM或增加儲存空間量。可用技術的侷限性可能會限制單個機器對於給定工作負載而言足夠強大。此外,基於雲的提供商基於可用的硬體配置具有硬性上限。結果,垂直縮放有實際的最大值。
  • 水平擴充套件意味著劃分系統資料集並載入多個伺服器,新增其他伺服器以根據需要增加容量。雖然單個機器的總體速度或容量可能不高,但每臺機器處理整個工作負載的子集,可能提供比單個高速大容量伺服器更高的效率。擴充套件部署容量只需要根據需要新增額外的伺服器,這可能比單個機器的高階硬體的總體成本更低。MongoDB支援通過分片進行水平擴充套件。

元件

MongoDB分片群集包含以下元件:

  • 分片(儲存):每個分片包含分片資料的子集。每個分片都可以部署為副本集。
  • Mongos(路由):mongos充當查詢路由器,在客戶端應用程式和分片叢集之間提供介面。
  • config servers:配置伺服器儲存叢集的元資料和配置設定。從MongoDB3.4開始,必須將配置伺服器部署為副本集(CSRS)

下圖描述了分片叢集中元件的互動:

MongoDB在集合級別對資料進行分片,將集合資料分佈在叢集中的分片上。

例項

兩個分片節點副本集(3+3)+一個配置節點副本集(3)+兩個路由節點(2),共11個服務節點。

分片節點副本集的建立

所有的的配置檔案都直接放到 sharded_cluster 的相應的子目錄下面,預設配置檔名字:mongod.conf

第一套副本集

1 準備存放資料和日誌的目錄

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27018/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27018/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27118/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27118/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27218/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27218/data/db

2 新建或修改配置檔案:vim /mongodb/sharded_cluster/myshardrs01_27018/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27018/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27018 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

sharding.clusterRole:

Value Description
configsvr Start this instance as a config server. The instance starts on port 27019 by default.
shardsvr Start this instance as a shard. The instance starts on port 27018 by default.

注意:

設定sharding.clusterRole需要mongod例項運行復制。 要將例項部署為副本整合員,請使用

replSetName設定並指定副本集的名稱。

3 新建或修改配置檔案: vim /mongodb/sharded_cluster/myshardrs01_27118/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27118/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27118 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

4 新建或修改配置檔案: vim /mongodb/sharded_cluster/myshardrs01_27218/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27218/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27218 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

5 啟動第一套副本集:一主一副本一仲裁

依次啟動三個mongod服務:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27018/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27118/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27218/mongod.conf

6 初始化副本集和建立主節點

使用客戶端命令連線任意一個節點,但這裡儘量要連線主節點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27018

執行命令:

# 初始化副本集
> rs.initiate()

# 檢視副本集情況
myshardrs01:SECONDARY> rs.status()

# 主節點配置檢視
myshardrs01:PRIMARY> rs.conf()

7 新增副本節點和仲裁節點

# 新增從節點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27118")

# 新增仲裁節點
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27218")

# 檢視配置情況
myshardrs01:PRIMARY> rs.conf()

第二套副本集

1 準備存放資料和日誌的目錄

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27318/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27318/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27418/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27418/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27518/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27518/data/db

2 新建或修改配置檔案:vim /mongodb/sharded_cluster/myshardrs01_27318/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27318/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27318 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

3 新建或修改配置檔案: vim /mongodb/sharded_cluster/myshardrs01_27418/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27418/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27418 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

4 新建或修改配置檔案: vim /mongodb/sharded_cluster/myshardrs01_27518/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myshardrs01_27518/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27518 
replication: 
  #副本集的名稱 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

5 啟動第一套副本集:一主一副本一仲裁

依次啟動三個mongod服務:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27318/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27418/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27518/mongod.conf

6 初始化副本集和建立主節點

使用客戶端命令連線任意一個節點,但這裡儘量要連線主節點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27318

執行命令:

# 初始化副本集
> rs.initiate()

# 檢視副本集情況
myshardrs01:SECONDARY> rs.status()

# 主節點配置檢視
myshardrs01:PRIMARY> rs.conf()

7 新增副本節點和仲裁節點

# 新增從節點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27418")

# 新增仲裁節點
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27518")

# 檢視配置情況
myshardrs01:PRIMARY> rs.conf()

配置節點副本集建立

1 準備存放資料和日誌的目錄

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27019/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27019/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27119/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27119/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27219/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27219/data/db

2 新建或修改配置檔案:vim /mongodb/sharded_cluster/myconfigrs_27019/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myconfigrs_27019/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27019 
replication: 
  #副本集的名稱 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

3 新建或修改配置檔案: vim /mongodb/sharded_cluster/myconfigrs_27119/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myconfigrs_27119/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27119
replication: 
  #副本集的名稱 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

4 新建或修改配置檔案: vim /mongodb/sharded_cluster/myconfigrs_27219/mongod.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/myconfigrs_27219/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27219 
replication: 
  #副本集的名稱 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

5 啟動第一套副本集:一主一副本一仲裁

依次啟動三個mongod服務:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27019/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27119/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27219/mongod.conf

6 初始化副本集和建立主節點

使用客戶端命令連線任意一個節點,但這裡儘量要連線主節點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27219

執行命令:

# 初始化副本集
> rs.initiate()

# 檢視副本集情況
myshardrs01:SECONDARY> rs.status()

# 主節點配置檢視
myshardrs01:PRIMARY> rs.conf()

7 新增兩個副本節點

# 新增從節點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27119")
myshardrs01:PRIMARY> rs.add("180.76.159.126:27219")

# 檢視配置情況
myshardrs01:PRIMARY> rs.conf()

路由節點的建立

第一個路由節點

1 準備存放資料和日誌的目錄

#-----------mongos01
mkdir -p /mongodb/sharded_cluster/mymongos_27017/log

2 新建或修改配置檔案:vi /mongodb/sharded_cluster/mymongos_27017/mongos.conf

systemLog: 
  #MongoDB傳送所有日誌輸出的目標指定為檔案 
  destination: file
  #mongod或mongos應向其傳送所有診斷日誌記錄資訊的日誌檔案的路徑 
  path: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.log" 
  #當mongos或mongod例項重新啟動時,mongos或mongod會將新條目附加到現有日誌檔案的末尾。 
  logAppend: true 
storage: 
  #mongod例項儲存其資料的目錄。storage.dbPath設定僅適用於mongod。 
  dbPath: "/mongodb/sharded_cluster/mymongos_27017/data/db" 
  journal: 
    #啟用或禁用永續性日誌以確保資料檔案保持有效和可恢復。 
    enabled: true 
processManagement: 
  #啟用在後臺執行mongos或mongod程序的守護程序模式。 
  fork: true 
  #指定用於儲存mongos或mongod程序的程序ID的檔案位置,其中mongos或mongod將寫入其PID 
  pidFilePath: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.pid" 
net:
  #服務例項繫結所有IP,有副作用,副本集初始化的時候,節點名字會自動設定為本地域名,而不是ip 
  #bindIpAll: true 
  #服務例項繫結的IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #繫結的埠 
  port: 27017 
sharding: 
  #指定配置節點副本集 
  configDB: myconfigrs/180.76.159.126:27019,180.76.159.126:27119,180.76.159.126:27219

3 啟動mongod服務:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/mymongos_27017/mongos.conf

4 客戶端登入mongos: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27017

通過路由節點操作,現在只是連線了配置節點,還沒有連線分片資料節點,因此無法寫入業務資料。

5 在路由節點上進行分片配置操作

新增分片sh.addShard("IP:Port")

# 新增第一套副本集
sh.addShard("myshardrs01/192.168.0.2:27018,180.76.159.126:27118,180.76.159.126:2 7218")

# 新增第二套副本集
sh.addShard("myshardrs02/192.168.0.2:27318,180.76.159.126:27418,180.76.159.126:2 7518")

提示:如果新增分片失敗,需要先手動移除分片,檢查新增分片的資訊的正確性後,再次新增分片。

移除分片參考(瞭解):

use admin 
db.runCommand( { removeShard: "myshardrs02" } )

開啟分片功能: sh.enableSharding("庫名")sh.shardCollection("庫名.集合名",{"key":1})

在mongos上的articledb資料庫配置sharding

sh.enableSharding("articledb")

# 檢視分片狀態
 sh.status()

集合分片: 對集合分片,你必須使用 sh.shardCollection() 方法指定集合和分片鍵。

語法格式:sh.shardCollection(namespace, key, unique)

引數說明:

Parameter Type Description
namespace string 要(分片)共享的目標集合的名稱空間,格式: .
key document 用作分片鍵的索引規範文件。shard鍵決定MongoDB如何在shard之間分發文件。除非集合為空,否則索引必須在shard collection命令之前存在。如果集合為空,則MongoDB在對集合進行分片之前建立索引,前提是支援分片鍵的索引不存在。簡單的說:由包含欄位和該欄位的索引遍歷方向的文件組成。
unique boolean 當值為true情況下,片鍵欄位上會限制為確保是唯一索引。雜湊策略片鍵不支援唯一索引。預設是false。

6 分片後插入資料測試

7 增加另一個路由節點

美文佳句

電影散場,影院裡的觀眾皆唏噓而去。我和太太看到最後,直到音樂的休止落下、字幕拉到最底部。我似乎不能完整記住險象環生的情節,但那印度電影的唯美音樂,和雖然處於隱線卻從來沒有放棄追逐的愛情,讓我喜歡和回味。

你好,我是yltrcc,日常分享技術點滴,歡迎關注我的公眾號:ylcoder