每日一句
Medalist don't grow on trees, you have to nurture them with love, with hard work, with dedication.
金牌選手不會從天而降,你必須用熱愛、刻苦和投入來澆灌他們。
概述
分片(sharding)是一種垮多臺機(jī)器分布數(shù)據(jù)的方法,MongoDB使用分片來支持具有非常大的數(shù)據(jù)集和高吞吐量操作的部署。
分片(sharding)是指將數(shù)據(jù)拆分,將其分散存在不同的機(jī)器上的過程。有時也用分區(qū)(partitioning)來表示這個概念。將數(shù)據(jù)分散到不同的機(jī)器上,不需要功能強(qiáng)大的大型計算機(jī)就可以儲存更多的數(shù)據(jù),處理更多的負(fù)載。
具有大型數(shù)據(jù)集或高吞吐量應(yīng)用程序的數(shù)據(jù)庫系統(tǒng)可以會挑戰(zhàn)單個服務(wù)器的容量。例如,高查詢率會耗盡服務(wù)器的CPU容量。工作集大小大于系統(tǒng)的RAM會強(qiáng)調(diào)磁盤驅(qū)動器的I / O容量。
有兩種解決系統(tǒng)增長的方法:垂直擴(kuò)展和水平擴(kuò)展。
- 垂直擴(kuò)展意味著增加單個服務(wù)器的容量,例如使用更強(qiáng)大的CPU,添加更多RAM或增加存儲空間量??捎眉夹g(shù)的局限性可能會限制單個機(jī)器對于給定工作負(fù)載而言足夠強(qiáng)大。此外,基于云的提供商基于可用的硬件配置具有硬性上限。結(jié)果,垂直縮放有實際的最大值。
- 水平擴(kuò)展意味著劃分系統(tǒng)數(shù)據(jù)集并加載多個服務(wù)器,添加其他服務(wù)器以根據(jù)需要增加容量。雖然單個機(jī)器的總體速度或容量可能不高,但每臺機(jī)器處理整個工作負(fù)載的子集,可能提供比單個高速大容量服務(wù)器更高的效率。擴(kuò)展部署容量只需要根據(jù)需要添加額外的服務(wù)器,這可能比單個機(jī)器的高端硬件的總體成本更低。MongoDB支持通過分片進(jìn)行水平擴(kuò)展。
組件
MongoDB分片群集包含以下組件:
- 分片(存儲):每個分片包含分片數(shù)據(jù)的子集。每個分片都可以部署為副本集。
- Mongos(路由):mongos充當(dāng)查詢路由器,在客戶端應(yīng)用程序和分片集群之間提供接口。
- config servers:配置服務(wù)器存儲集群的元數(shù)據(jù)和配置設(shè)置。從MongoDB3.4開始,必須將配置服務(wù)器部署為副本集(CSRS)
下圖描述了分片集群中組件的交互:
MongoDB在集合級別對數(shù)據(jù)進(jìn)行分片,將集合數(shù)據(jù)分布在集群中的分片上。
實例
兩個分片節(jié)點副本集(3+3)+一個配置節(jié)點副本集(3)+兩個路由節(jié)點(2),共11個服務(wù)節(jié)點。
分片節(jié)點副本集的創(chuàng)建
所有的的配置文件都直接放到 sharded_cluster 的相應(yīng)的子目錄下面,默認(rèn)配置文件名字:mongod.conf
第一套副本集
1 準(zhǔn)備存放數(shù)據(jù)和日志的目錄
#-----------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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27018/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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. |
注意:
設(shè)置sharding.clusterRole需要mongod實例運行復(fù)制。 要將實例部署為副本集成員,請使用
replSetName設(shè)置并指定副本集的名稱。
3 新建或修改配置文件: vim /mongodb/sharded_cluster/myshardrs01_27118/mongod.conf
systemLog:
#MongoDB發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27118/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27218/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的IP
bindIp: localhost,192.168.0.2
#bindIp
#綁定的端口
port: 27218
replication:
#副本集的名稱
replSetName: myshardrs01
sharding:
#分片角色
clusterRole: shardsvr
5 啟動第一套副本集:一主一副本一仲裁
依次啟動三個mongod服務(wù):
/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 初始化副本集和創(chuàng)建主節(jié)點
使用客戶端命令連接任意一個節(jié)點,但這里盡量要連接主節(jié)點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27018
執(zhí)行命令:
# 初始化副本集
> rs.initiate()
# 查看副本集情況
myshardrs01:SECONDARY> rs.status()
# 主節(jié)點配置查看
myshardrs01:PRIMARY> rs.conf()
7 添加副本節(jié)點和仲裁節(jié)點
# 添加從節(jié)點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27118")
# 添加仲裁節(jié)點
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27218")
# 查看配置情況
myshardrs01:PRIMARY> rs.conf()
第二套副本集
1 準(zhǔn)備存放數(shù)據(jù)和日志的目錄
#-----------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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27318/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27418/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myshardrs01_27518/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的IP
bindIp: localhost,192.168.0.2
#bindIp
#綁定的端口
port: 27518
replication:
#副本集的名稱
replSetName: myshardrs01
sharding:
#分片角色
clusterRole: shardsvr
5 啟動第一套副本集:一主一副本一仲裁
依次啟動三個mongod服務(wù):
/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 初始化副本集和創(chuàng)建主節(jié)點
使用客戶端命令連接任意一個節(jié)點,但這里盡量要連接主節(jié)點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27318
執(zhí)行命令:
# 初始化副本集
> rs.initiate()
# 查看副本集情況
myshardrs01:SECONDARY> rs.status()
# 主節(jié)點配置查看
myshardrs01:PRIMARY> rs.conf()
7 添加副本節(jié)點和仲裁節(jié)點
# 添加從節(jié)點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27418")
# 添加仲裁節(jié)點
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27518")
# 查看配置情況
myshardrs01:PRIMARY> rs.conf()
配置節(jié)點副本集創(chuàng)建
1 準(zhǔn)備存放數(shù)據(jù)和日志的目錄
#-----------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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myconfigrs_27019/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myconfigrs_27119/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的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發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/myconfigrs_27219/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的IP
bindIp: localhost,192.168.0.2
#bindIp
#綁定的端口
port: 27219
replication:
#副本集的名稱
replSetName: myconfigrs
sharding:
#分片角色
clusterRole: configsvr
5 啟動第一套副本集:一主一副本一仲裁
依次啟動三個mongod服務(wù):
/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 初始化副本集和創(chuàng)建主節(jié)點
使用客戶端命令連接任意一個節(jié)點,但這里盡量要連接主節(jié)點: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27219
執(zhí)行命令:
# 初始化副本集
> rs.initiate()
# 查看副本集情況
myshardrs01:SECONDARY> rs.status()
# 主節(jié)點配置查看
myshardrs01:PRIMARY> rs.conf()
7 添加兩個副本節(jié)點
# 添加從節(jié)點
myshardrs01:PRIMARY> rs.add("180.76.159.126:27119")
myshardrs01:PRIMARY> rs.add("180.76.159.126:27219")
# 查看配置情況
myshardrs01:PRIMARY> rs.conf()
路由節(jié)點的創(chuàng)建
第一個路由節(jié)點
1 準(zhǔn)備存放數(shù)據(jù)和日志的目錄
#-----------mongos01
mkdir -p /mongodb/sharded_cluster/mymongos_27017/log
2 新建或修改配置文件:vi /mongodb/sharded_cluster/mymongos_27017/mongos.conf
systemLog:
#MongoDB發(fā)送所有日志輸出的目標(biāo)指定為文件
destination: file
#mongod或mongos應(yīng)向其發(fā)送所有診斷日志記錄信息的日志文件的路徑
path: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.log"
#當(dāng)mongos或mongod實例重新啟動時,mongos或mongod會將新條目附加到現(xiàn)有日志文件的末尾。
logAppend: true
storage:
#mongod實例存儲其數(shù)據(jù)的目錄。storage.dbPath設(shè)置僅適用于mongod。
dbPath: "/mongodb/sharded_cluster/mymongos_27017/data/db"
journal:
#啟用或禁用持久性日志以確保數(shù)據(jù)文件保持有效和可恢復(fù)。
enabled: true
processManagement:
#啟用在后臺運行mongos或mongod進(jìn)程的守護(hù)進(jìn)程模式。
fork: true
#指定用于保存mongos或mongod進(jìn)程的進(jìn)程ID的文件位置,其中mongos或mongod將寫入其PID
pidFilePath: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.pid"
net:
#服務(wù)實例綁定所有IP,有副作用,副本集初始化的時候,節(jié)點名字會自動設(shè)置為本地域名,而不是ip
#bindIpAll: true
#服務(wù)實例綁定的IP
bindIp: localhost,192.168.0.2
#bindIp
#綁定的端口
port: 27017
sharding:
#指定配置節(jié)點副本集
configDB: myconfigrs/180.76.159.126:27019,180.76.159.126:27119,180.76.159.126:27219
3 啟動mongod服務(wù):
/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
通過路由節(jié)點操作,現(xiàn)在只是連接了配置節(jié)點,還沒有連接分片數(shù)據(jù)節(jié)點,因此無法寫入業(yè)務(wù)數(shù)據(jù)。
5 在路由節(jié)點上進(jìn)行分片配置操作
添加分片: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數(shù)據(jù)庫配置sharding
sh.enableSharding("articledb")
# 查看分片狀態(tài)
sh.status()
集合分片: 對集合分片,你必須使用 sh.shardCollection() 方法指定集合和分片鍵。
語法格式:sh.shardCollection(namespace, key, unique)
參數(shù)說明:
| Parameter | Type | Description |
| namespace | string | 要(分片)共享的目標(biāo)集合的命名空間,格式: <database>.<collection> |
| key | document | 用作分片鍵的索引規(guī)范文檔。shard鍵決定MongoDB如何在shard之間分發(fā)文檔。除非集合為空,否則索引必須在shard collection命令之前存在。如果集合為空,則MongoDB在對集合進(jìn)行分片之前創(chuàng)建索引,前提是支持分片鍵的索引不存在。簡單的說:由包含字段和該字段的索引遍歷方向的文檔組成。 |
| unique | boolean | 當(dāng)值為true情況下,片鍵字段上會限制為確保是唯一索引。哈希策略片鍵不支持唯一索引。默認(rèn)是false。 |
6 分片后插入數(shù)據(jù)測試
7 增加另一個路由節(jié)點
美文佳句
電影散場,影院里的觀眾皆唏噓而去。我和太太看到最后,直到音樂的休止落下、字幕拉到最底部。我似乎不能完整記住險象環(huán)生的情節(jié),但那印度電影的唯美音樂,和雖然處于隱線卻從來沒有放棄追逐的愛情,讓我喜歡和回味。
你好,我是yltrcc,日常分享技術(shù)點滴,歡迎關(guān)注我