本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法和裝置。
背景技術(shù):
隨著數(shù)據(jù)量存儲(chǔ)的大量增加,用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫也需要不斷的擴(kuò)容。那么,面對(duì)各個(gè)數(shù)據(jù)庫系統(tǒng)的擴(kuò)容/縮容,進(jìn)行人工處理的話,會(huì)導(dǎo)致效率低下,人工成本高,數(shù)據(jù)庫資源得不到充分利用,還會(huì)影響數(shù)據(jù)庫系統(tǒng)整體運(yùn)行的穩(wěn)定性。所以,急需一種可以實(shí)現(xiàn)數(shù)據(jù)庫自動(dòng)化擴(kuò)容的方法或裝置,來克服上述問題。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法和相應(yīng)的裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法,包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端;
接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息,根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,并將新的分片加入Mongos集群中。
可選地,所述接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息包括:
在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
可選地,所述Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù);
所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
可選地,所述根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù)包括:
根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息;
根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
可選地,所述數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端包括:
根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
可選地,該方法進(jìn)一步包括:
啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
可選地,該方法進(jìn)一步包括:
接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;
將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
可選地,該方法進(jìn)一步包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;
其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
可選地,所述分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫包括:
所述業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;所述分片下線客戶端掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。
可選地,該方法進(jìn)一步包括:
在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端;
接收指定分片不再可用的信息,根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將所述分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將所述分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的所述指定分片中的數(shù)據(jù)遷移到新的分片。
可選地,該方法進(jìn)一步包括:
當(dāng)不可用的所述指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除所述不可用的指定分片。
根據(jù)本發(fā)明的另一方面,提供了一種實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置,包括:
客戶端部署單元,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端;
需求接收單元,適于接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息;
擴(kuò)容處理單元,適于根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中。
可選地,所述需求接收單元,適于在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
可選地,所述Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù);
所述擴(kuò)容處理單元,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
可選地,所述擴(kuò)容處理單元,適于根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息;根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
可選地,所述擴(kuò)容處理單元,適于根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
可選地,所述擴(kuò)容處理單元,進(jìn)一步適于啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
可選地,所述擴(kuò)容處理單元,進(jìn)一步適于接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
可選地,所述客戶端部署單元,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;
其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
可選地,所述業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;所述分片下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。
可選地,所述客戶端部署單元,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端;
所述需求接收單元,進(jìn)一步適于接收指定分片不再可用的信息;
所述擴(kuò)容處理單元,進(jìn)一步適于根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將所述分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將所述分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的所述指定分片的數(shù)據(jù)遷移到新的分片。
可選地,所述擴(kuò)容處理單元,進(jìn)一步適于當(dāng)不可用的所述指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除所述不可用的指定分片。
根據(jù)本發(fā)明的技術(shù)方案,數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上都部署有初始化Mongos集群分片的客戶端,當(dāng)接收到業(yè)務(wù)方的Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息后,將業(yè)務(wù)擴(kuò)容需求信息生成擴(kuò)容業(yè)務(wù),并選擇一定數(shù)量的可用的服務(wù)器,將擴(kuò)容任務(wù)發(fā)送給選擇的服務(wù)器上的初始化Mongos集群分片的客戶端,該客戶端就會(huì)根據(jù)擴(kuò)容任務(wù)進(jìn)行其所在的服務(wù)器進(jìn)行新的分片的初始化,完成Mongos集群的擴(kuò)容??梢?,本發(fā)明能根據(jù)業(yè)務(wù)擴(kuò)容需求自動(dòng)完成數(shù)據(jù)庫的擴(kuò)容,提高數(shù)據(jù)庫擴(kuò)容效率,在滿足業(yè)務(wù)需求的情況下,保證數(shù)據(jù)庫系統(tǒng)運(yùn)行的穩(wěn)定性。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法的流程示意圖;
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法的流程示意圖;如圖1所示,該方法包括:
步驟S110,在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端。
Mongos集群是一種分布式存儲(chǔ)架構(gòu)的數(shù)據(jù)庫集群,適合巨量數(shù)據(jù)的存儲(chǔ)。Mongos集群中包括若干個(gè)路由節(jié)點(diǎn)、若干個(gè)分片節(jié)點(diǎn)以及若干元數(shù)據(jù)節(jié)點(diǎn)。其中,路由節(jié)點(diǎn)用于將業(yè)務(wù)方的需求指向相應(yīng)的分片中,元數(shù)據(jù)中記錄所存儲(chǔ)的數(shù)據(jù)在各分片中位置,分片節(jié)點(diǎn)用于存儲(chǔ)大量的數(shù)據(jù)。當(dāng)用戶進(jìn)行數(shù)據(jù)查詢時(shí),可通過元數(shù)據(jù)節(jié)點(diǎn)中相應(yīng)數(shù)據(jù)的存儲(chǔ)位置進(jìn)行相應(yīng)數(shù)據(jù)的查詢。當(dāng)面對(duì)更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過增加集群中的分片進(jìn)行整個(gè)Mongos集群的擴(kuò)容。
為了實(shí)現(xiàn)Mongos集群的自動(dòng)擴(kuò)容,需要在數(shù)據(jù)庫系統(tǒng)中的每個(gè)服務(wù)器上都部署一個(gè)初始化Mongos集群分片的客戶端,該初始化Mongos集群分片的客戶端是針對(duì)Mongos集群分片的初始化的客戶端,以完成業(yè)務(wù)需求中的對(duì)Mongos集群分片的擴(kuò)容。
步驟S120,接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息,根據(jù)業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù)。其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,并將新的分片加入Mongos集群中。
當(dāng)業(yè)務(wù)方有Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過相應(yīng)的需求接口提供需求信息。這里的需求接口可以是以一個(gè)云平臺(tái)的形式,云平臺(tái)提供有業(yè)務(wù)需求編輯界面,業(yè)務(wù)方將業(yè)務(wù)需求相應(yīng)的信息編輯后提交即可。
當(dāng)通過需求入口接收到業(yè)務(wù)擴(kuò)容需求信息時(shí),根據(jù)相應(yīng)的業(yè)務(wù)需求信息生成相應(yīng)的Mongos集群擴(kuò)容任務(wù),以便服務(wù)器根據(jù)Mongos集群擴(kuò)容任務(wù)進(jìn)行相應(yīng)的初始化分片的擴(kuò)容操作。
步驟S130,從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端。
這里從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,一方面是根據(jù)各個(gè)服務(wù)器自身資源的可利用率和是否可用進(jìn)行選擇可以用來部署該業(yè)務(wù)的服務(wù)器,以減少資源浪費(fèi);另一方面,也需要根據(jù)業(yè)務(wù)需求信息選擇部署該業(yè)務(wù)的服務(wù)器的數(shù)量,以滿足業(yè)務(wù)需求。例如,業(yè)務(wù)需求需要增加10個(gè)分片,但是每個(gè)服務(wù)器可用的空間只能增加2個(gè)分片,那么就需要5個(gè)可用的服務(wù)器進(jìn)行該業(yè)務(wù)的擴(kuò)容。
當(dāng)選擇好可用的一定數(shù)量的服務(wù)器后,將Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端。
當(dāng)所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端接收到Mongos集群擴(kuò)容任務(wù)后,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,并將新的分片加入Mongos集群中。
這里的非系統(tǒng)數(shù)據(jù)庫是服務(wù)器中非自帶,是為了保證用戶可以使用,需要在新建的分片中創(chuàng)建一個(gè)非系統(tǒng)數(shù)據(jù)庫,但是將已有的數(shù)據(jù)遷移到新的分片中時(shí),這個(gè)非系統(tǒng)數(shù)據(jù)庫是多余的,所以在進(jìn)行新的分片初始化的時(shí)候,需要將該分片中的非系統(tǒng)數(shù)據(jù)庫進(jìn)行刪除,然后再將新的分片加入到Mongos集群中,最終完成Mongos集群的擴(kuò)容。
因?yàn)樾枰o每個(gè)選擇的服務(wù)器發(fā)送Mongos集群擴(kuò)容任務(wù),所以,一個(gè)業(yè)務(wù)需求的Mongos集群擴(kuò)容任務(wù)的個(gè)數(shù)與選擇的服務(wù)器的數(shù)量是一樣的,然后將該數(shù)量的數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上。
可見,本發(fā)明能根據(jù)業(yè)務(wù)擴(kuò)容需求自動(dòng)完成數(shù)據(jù)庫的擴(kuò)容,提高數(shù)據(jù)庫擴(kuò)容效率,在滿足業(yè)務(wù)需求的情況下,保證數(shù)據(jù)庫系統(tǒng)運(yùn)行的穩(wěn)定性。
在本發(fā)明的一個(gè)實(shí)施例中,步驟S110中的接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息包括:在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
當(dāng)業(yè)務(wù)方有更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過指定的云平臺(tái)上提供的需求接口進(jìn)行需求信息的提供。例如,云平臺(tái)提供一個(gè)網(wǎng)頁,業(yè)務(wù)方在該網(wǎng)頁上進(jìn)行相應(yīng)業(yè)務(wù)需求的信息編輯。業(yè)務(wù)方編輯好后,進(jìn)行提交,那么其業(yè)務(wù)需求就會(huì)通過這個(gè)云平臺(tái)的需求接口發(fā)送到后端進(jìn)行Mongos集群擴(kuò)容的處理操作。
在本發(fā)明的一個(gè)實(shí)施例中,步驟S120中的Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù);步驟S130中的從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
業(yè)務(wù)方提交更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求后,為了完成需求的處理,需要根據(jù)業(yè)務(wù)擴(kuò)容需求生成相應(yīng)的擴(kuò)容任務(wù),且該任務(wù)中包含有修所需的服務(wù)器的數(shù)量,以便進(jìn)行可用的服務(wù)器的選擇;還包括有擴(kuò)容的Mongos集群分片的相關(guān)參數(shù),例如:需要的磁盤空間等。
當(dāng)擴(kuò)容任務(wù)生成后,就會(huì)根據(jù)擴(kuò)容任務(wù)中包含的所需的服務(wù)器的數(shù)量進(jìn)行選擇,選擇服務(wù)器的時(shí)候,除了數(shù)量和相關(guān)參數(shù)上要滿足業(yè)務(wù)擴(kuò)容的需求,例如,數(shù)據(jù)庫部署任務(wù)中所需服務(wù)器的數(shù)量為5臺(tái),那么選擇的時(shí)候需要選擇5臺(tái)可用的服務(wù)器;還要根據(jù)各個(gè)服務(wù)器自身的情況進(jìn)行選擇,例如服務(wù)器自身資源的可利用率、是否可用以及數(shù)據(jù)庫中業(yè)務(wù)的重要性進(jìn)行選擇,以減少服務(wù)器資源的浪費(fèi)。綜合兩方面考慮后,才能最終選擇相應(yīng)數(shù)量的服務(wù)器。
因?yàn)樵贛ongos集群擴(kuò)容時(shí),增加的分片也可能是主從式數(shù)據(jù)庫形式的,主從式數(shù)據(jù)庫包含有一個(gè)主數(shù)據(jù)庫和一個(gè)或者多個(gè)從數(shù)據(jù)庫,實(shí)現(xiàn)了數(shù)據(jù)庫讀寫功能的分離。主數(shù)據(jù)庫負(fù)責(zé)寫入數(shù)據(jù)的操作,從數(shù)據(jù)庫負(fù)責(zé)對(duì)主數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行備份以及負(fù)責(zé)數(shù)據(jù)查詢等操作。為了實(shí)現(xiàn)主從式數(shù)據(jù)庫的擴(kuò)容,在本發(fā)明的一個(gè)實(shí)施例中,步驟S120中的根據(jù)業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù)包括:根據(jù)業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,例如,是主數(shù)據(jù)庫還是從數(shù)據(jù)庫;根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
例如,擴(kuò)容時(shí)選擇4個(gè)服務(wù)器,需要1個(gè)主數(shù)據(jù)庫和3個(gè)從數(shù)據(jù)庫,那么就會(huì)生成1個(gè)主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)和相應(yīng)的3個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)。
具體地,數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端包括:根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
這里的對(duì)應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù),是隨機(jī)發(fā)送到所選擇的服務(wù)器上,也就是說每個(gè)選擇的服務(wù)器會(huì)接收到一個(gè)對(duì)應(yīng)角色信息的Mongos集群擴(kuò)容任務(wù),但是具體是哪個(gè)角色的Mongos集群擴(kuò)容任務(wù)是不確定的。也就是說,任務(wù)的發(fā)送是隨機(jī)分發(fā)的,不限定某個(gè)Mongos集群擴(kuò)容任務(wù)必須分發(fā)給一個(gè)指定的服務(wù)器,只要保證分發(fā)后,選擇的每個(gè)服務(wù)器均被分發(fā)了一個(gè)Mongos集群擴(kuò)容任務(wù)即可。例如,確定的服務(wù)器的數(shù)量是3,那么就需要選擇三個(gè)服務(wù)器,分別是服務(wù)器1、服務(wù)器2、服務(wù)器3,最終會(huì)生成1個(gè)主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)和相應(yīng)的2個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù),進(jìn)行任務(wù)發(fā)送的時(shí)候,主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)可以分發(fā)給服務(wù)器1上的初始化Mongos集群分片的客戶端,可以分發(fā)給服務(wù)器2上的初始化Mongos集群分片的客戶端、也可以分發(fā)給服務(wù)器3上的初始化Mongos集群分片的客戶端;另外2個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)可以分發(fā)給服務(wù)器1上的初始化Mongos集群分片的客戶端,可以分發(fā)給服務(wù)器2上的初始化Mongos集群分片的客戶端、也可以分發(fā)給服務(wù)器3上的初始化Mongos集群分片的客戶端,最終分發(fā)后保證服務(wù)器1、服務(wù)器2和服務(wù)器3都有Mongos集群擴(kuò)容任務(wù)。
在一個(gè)具體的例子中,需要在4個(gè)服務(wù)器進(jìn)行擴(kuò)容,其中一個(gè)是主數(shù)據(jù)庫,另外三個(gè)是從數(shù)據(jù)庫。Mongos集群擴(kuò)容任務(wù)生成后,其中一個(gè)Mongos集群擴(kuò)容任務(wù)中包含的參數(shù)信息為:P1=mdm,P2=30G,P3=200G。其中,P1代表數(shù)據(jù)庫角色,P2代表內(nèi)存空間,P3代表磁盤空間。當(dāng)被選中的其中一個(gè)服務(wù)器的初始化Mongos集群分片的客戶端接收到該Mongos集群擴(kuò)容任務(wù)后,通過該任務(wù)中的參數(shù)信息,就會(huì)在其服務(wù)器上建立一個(gè)主數(shù)據(jù)庫,該數(shù)據(jù)庫有30G內(nèi)存,200G的磁盤空間。
當(dāng)Mongos架構(gòu)的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)寫入的時(shí)候,不排除會(huì)出現(xiàn)大量數(shù)據(jù)存儲(chǔ)在同一個(gè)分片中,而其他分片中的數(shù)據(jù)量很少的情況,為了避免這種情況出現(xiàn),Mongos架構(gòu)中會(huì)有一個(gè)數(shù)據(jù)均衡的功能,將存儲(chǔ)數(shù)據(jù)較多的分片中的數(shù)據(jù)挪出一部分存儲(chǔ)到其它相對(duì)空閑的分片中,達(dá)到所有分片中的數(shù)據(jù)量均衡的效果。所以,在進(jìn)行Mongos集群擴(kuò)容后,在本發(fā)明的一個(gè)實(shí)施例中,圖1所示的方法進(jìn)一步包括:?jiǎn)?dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
Mongos集群中每個(gè)分片中又分成若干個(gè)數(shù)據(jù)塊(也可稱chunck或桶),啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù),也就是說在加入的新的分片中創(chuàng)建數(shù)據(jù)塊,將數(shù)據(jù)遷移到數(shù)據(jù)塊中。例如,原始Mongos集群有4個(gè)分片,每個(gè)分片中有6個(gè)數(shù)據(jù)塊的數(shù)據(jù)量,Mongos集群擴(kuò)容后,Mongos集群新增加了2個(gè)分片,變成6個(gè)分片,那么啟動(dòng)數(shù)據(jù)均衡器后,就將新增加的2個(gè)分片中分別遷移4遷移4個(gè)數(shù)據(jù)塊的量,最終使得每個(gè)分片中都有4個(gè)數(shù)據(jù)塊的數(shù)據(jù)量。
當(dāng)Mongos集群擴(kuò)容好后,在本發(fā)明的一個(gè)實(shí)施例中,圖1所示的方法進(jìn)一步包括:接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
業(yè)務(wù)擴(kuò)容是針對(duì)更多業(yè)務(wù)量的情況,當(dāng)Mongos集群不再需要擴(kuò)容后,為了減少數(shù)據(jù)庫資源的浪費(fèi),需要將擴(kuò)容后的分片進(jìn)行下線處理,在本發(fā)明的一個(gè)實(shí)施例中,圖1所示的方法進(jìn)一步包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。當(dāng)業(yè)務(wù)擴(kuò)容的需求結(jié)束后,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
在進(jìn)行分片的數(shù)據(jù)庫下線處理的時(shí)候,如果業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的數(shù)據(jù)庫過期時(shí)間,Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的數(shù)據(jù)庫過期時(shí)間,那么,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫包括:業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;分片下線客戶端掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,在業(yè)務(wù)方提出業(yè)務(wù)擴(kuò)容需求的時(shí)候,預(yù)先設(shè)定一個(gè)擴(kuò)容的分片的數(shù)據(jù)庫的過期時(shí)間是10天,那么當(dāng)該業(yè)務(wù)的擴(kuò)容分片的數(shù)據(jù)庫使用10天后,服務(wù)器中的分片下線客戶端確定出該擴(kuò)容的分片的數(shù)據(jù)庫已經(jīng)到達(dá)過期時(shí)間10天,就會(huì)對(duì)該分片的數(shù)據(jù)庫進(jìn)行下線處理。
在進(jìn)行分片的數(shù)據(jù)庫下線處理的時(shí)候,需要下線的分片的數(shù)據(jù)庫不一定是新擴(kuò)容的分片的數(shù)據(jù)庫,也可以對(duì)該業(yè)務(wù)的整個(gè)Mongos集群的數(shù)據(jù)庫整體分析后,確定需要下線的分片的數(shù)據(jù)庫。在這種情況下,確定需要下線的分片的數(shù)據(jù)庫的方法是:分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,設(shè)定預(yù)設(shè)值為100,那么在一段時(shí)間內(nèi)都被訪問數(shù)量低于100次的分片的數(shù)據(jù)庫就可以視為是需要下線的分片的數(shù)據(jù)庫。
在Mongos集群的分片的使用過程中,不可避免會(huì)出現(xiàn)分片出現(xiàn)問題,不再可用的情況,如果沒有相應(yīng)的應(yīng)對(duì)措施,該出現(xiàn)問題的分片中的數(shù)據(jù)就會(huì)丟失。為了防止數(shù)據(jù)的丟失,需要進(jìn)行部署分片遷移客戶端,以進(jìn)行數(shù)據(jù)的遷移。在本發(fā)明的一個(gè)實(shí)施例中,該方法進(jìn)一步包括:在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端。
當(dāng)出現(xiàn)分片不再可用的情況時(shí),該客戶端會(huì)接收指定分片不再可用的信息,根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端,其中選擇服務(wù)器的依據(jù)上一已有詳細(xì)說明,在此不再贅述。
所選擇的各服務(wù)器上的分片遷移客戶端接收到分片遷移任務(wù)后,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的指定分片中的數(shù)據(jù)遷移到新的分片。
因?yàn)樾枰w移數(shù)據(jù)的分片已經(jīng)不再可用的狀態(tài),所以,為了防止資源的浪費(fèi),上述方法進(jìn)一步包括:當(dāng)不可用的指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除不可用的指定分片。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置的結(jié)構(gòu)示意圖。如圖2所示,該實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置200包括:
客戶端部署單元210,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端。
Mongos集群是一種分布式存儲(chǔ)架構(gòu)的數(shù)據(jù)庫集群,適合巨量數(shù)據(jù)的存儲(chǔ)。Mongos集群中包括若干個(gè)路由節(jié)點(diǎn)、若干個(gè)分片節(jié)點(diǎn)以及若干元數(shù)據(jù)節(jié)點(diǎn)。其中,路由節(jié)點(diǎn)用于將業(yè)務(wù)方的需求指向相應(yīng)的分片中,元數(shù)據(jù)中記錄所存儲(chǔ)的數(shù)據(jù)在各分片中位置,分片節(jié)點(diǎn)用于存儲(chǔ)大量的數(shù)據(jù)。當(dāng)用戶進(jìn)行數(shù)據(jù)查詢時(shí),可通過元數(shù)據(jù)節(jié)點(diǎn)中相應(yīng)數(shù)據(jù)的存儲(chǔ)位置進(jìn)行相應(yīng)數(shù)據(jù)的查詢。當(dāng)面對(duì)更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過增加集群中的分片進(jìn)行整個(gè)Mongos集群的擴(kuò)容。
為了實(shí)現(xiàn)Mongos集群的自動(dòng)擴(kuò)容,需要在數(shù)據(jù)庫系統(tǒng)中的每個(gè)服務(wù)器上都部署一個(gè)初始化Mongos集群分片的客戶端,該初始化Mongos集群分片的客戶端是針對(duì)Mongos集群分片的初始化的客戶端,以完成業(yè)務(wù)需求中的對(duì)Mongos集群分片的擴(kuò)容。
需求接收單元220,適于接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
當(dāng)業(yè)務(wù)方有Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過相應(yīng)的需求接口提供需求信息。這里的需求接口可以是以一個(gè)云平臺(tái)的形式,云平臺(tái)提供有業(yè)務(wù)需求編輯界面,業(yè)務(wù)方將業(yè)務(wù)需求相應(yīng)的信息編輯后提交即可。
當(dāng)通過需求入口接收到業(yè)務(wù)擴(kuò)容需求信息時(shí),根據(jù)相應(yīng)的業(yè)務(wù)需求信息生成相應(yīng)的Mongos集群擴(kuò)容任務(wù),以便服務(wù)器根據(jù)Mongos集群擴(kuò)容任務(wù)進(jìn)行相應(yīng)的初始化分片的擴(kuò)容操作。
擴(kuò)容處理單元230,適于根據(jù)業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端。其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,并將新的分片加入Mongos集群中。
這里從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,一方面是根據(jù)各個(gè)服務(wù)器自身資源的可利用率和是否可用進(jìn)行選擇可以用來部署該業(yè)務(wù)的服務(wù)器,以減少資源浪費(fèi);另一方面,也需要根據(jù)業(yè)務(wù)需求信息選擇部署該業(yè)務(wù)的服務(wù)器的數(shù)量,以滿足業(yè)務(wù)需求。例如,業(yè)務(wù)需求需要增加10個(gè)分片,但是每個(gè)服務(wù)器可用的空間只能增加2個(gè)分片,那么就需要5個(gè)可用的服務(wù)器進(jìn)行該業(yè)務(wù)的擴(kuò)容。
當(dāng)選擇好可用的一定數(shù)量的服務(wù)器后,將Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端。
當(dāng)所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端接收到Mongos集群擴(kuò)容任務(wù)后,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中。
這里的非系統(tǒng)數(shù)據(jù)庫是服務(wù)器中非自帶,是為了保證用戶可以使用,需要在新建的分片中創(chuàng)建一個(gè)非系統(tǒng)數(shù)據(jù)庫,但是將已有的數(shù)據(jù)遷移到新的分片中時(shí),這個(gè)非系統(tǒng)數(shù)據(jù)庫是多余的,所以在進(jìn)行新的分片初始化的時(shí)候,需要將該分片中的非系統(tǒng)數(shù)據(jù)庫進(jìn)行刪除,然后再將新的分片加入到Mongos集群中,最終完成Mongos集群的擴(kuò)容。
因?yàn)樾枰o每個(gè)選擇的服務(wù)器發(fā)送Mongos集群擴(kuò)容任務(wù),所以,一個(gè)業(yè)務(wù)需求的Mongos集群擴(kuò)容任務(wù)的個(gè)數(shù)與選擇的服務(wù)器的數(shù)量是一樣的,然后將該數(shù)量的數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上。
可見,本發(fā)明能根據(jù)業(yè)務(wù)擴(kuò)容需求自動(dòng)完成數(shù)據(jù)庫的擴(kuò)容,提高數(shù)據(jù)庫擴(kuò)容效率,在滿足業(yè)務(wù)需求的情況下,保證數(shù)據(jù)庫系統(tǒng)運(yùn)行的穩(wěn)定性。
在本發(fā)明的一個(gè)實(shí)施例中,需求接收單元220,適于在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
當(dāng)業(yè)務(wù)方有更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求時(shí),可以通過指定的云平臺(tái)上提供的需求接口進(jìn)行需求信息的提供。例如,云平臺(tái)提供一個(gè)網(wǎng)頁,業(yè)務(wù)方在該網(wǎng)頁上進(jìn)行相應(yīng)業(yè)務(wù)需求的信息編輯。業(yè)務(wù)方編輯好后,進(jìn)行提交,那么其業(yè)務(wù)需求就會(huì)通過這個(gè)云平臺(tái)的需求接口發(fā)送到后端進(jìn)行Mongos集群擴(kuò)容的處理操作。
在本發(fā)明的一個(gè)實(shí)施例中,Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù)。
擴(kuò)容處理單元230,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
業(yè)務(wù)方提交更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求后,為了完成需求的處理,需要根據(jù)業(yè)務(wù)擴(kuò)容需求生成相應(yīng)的擴(kuò)容任務(wù),且該任務(wù)中包含有修所需的服務(wù)器的數(shù)量,以便進(jìn)行可用的服務(wù)器的選擇;還包括有擴(kuò)容的Mongos集群分片的相關(guān)參數(shù),例如:需要的磁盤空間等。
當(dāng)擴(kuò)容任務(wù)生成后,就會(huì)根據(jù)擴(kuò)容任務(wù)中包含的所需的服務(wù)器的數(shù)量進(jìn)行選擇,選擇服務(wù)器的時(shí)候,除了數(shù)量和相關(guān)參數(shù)上要滿足業(yè)務(wù)擴(kuò)容的需求,例如,數(shù)據(jù)庫部署任務(wù)中所需服務(wù)器的數(shù)量為5臺(tái),那么選擇的時(shí)候需要選擇5臺(tái)可用的服務(wù)器;還要根據(jù)各個(gè)服務(wù)器自身的情況進(jìn)行選擇,例如服務(wù)器自身資源的可利用率、是否可用以及數(shù)據(jù)庫中業(yè)務(wù)的重要性進(jìn)行選擇,以減少服務(wù)器資源的浪費(fèi)。綜合兩方面考慮后,才能最終選擇相應(yīng)數(shù)量的服務(wù)器。
因?yàn)樵贛ongos集群擴(kuò)容時(shí),增加的分片也可能是主從式數(shù)據(jù)庫形式的,主從式數(shù)據(jù)庫包含有一個(gè)主數(shù)據(jù)庫和一個(gè)或者多個(gè)從數(shù)據(jù)庫,實(shí)現(xiàn)了數(shù)據(jù)庫讀寫功能的分離。主數(shù)據(jù)庫負(fù)責(zé)寫入數(shù)據(jù)的操作,從數(shù)據(jù)庫負(fù)責(zé)對(duì)主數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行備份以及負(fù)責(zé)數(shù)據(jù)查詢等操作。為了實(shí)現(xiàn)主從式數(shù)據(jù)庫的擴(kuò)容,在本發(fā)明的一個(gè)實(shí)施例中,擴(kuò)容處理單元230,適于根據(jù)業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,例如,是主數(shù)據(jù)庫還是從數(shù)據(jù)庫;根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
例如,擴(kuò)容時(shí)選擇4個(gè)服務(wù)器,需要1個(gè)主數(shù)據(jù)庫和3個(gè)從數(shù)據(jù)庫,那么就會(huì)生成1個(gè)主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)和相應(yīng)的3個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)。
具體地,擴(kuò)容處理單元230,適于根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
這里的對(duì)應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù),是隨機(jī)發(fā)送到所選擇的服務(wù)器上,也就是說每個(gè)選擇的服務(wù)器會(huì)接收到一個(gè)對(duì)應(yīng)角色信息的Mongos集群擴(kuò)容任務(wù),但是具體是哪個(gè)角色的Mongos集群擴(kuò)容任務(wù)是不確定的。也就是說,任務(wù)的發(fā)送是隨機(jī)分發(fā)的,不限定某個(gè)Mongos集群擴(kuò)容任務(wù)必須分發(fā)給一個(gè)指定的服務(wù)器,只要保證分發(fā)后,選擇的每個(gè)服務(wù)器均被分發(fā)了一個(gè)Mongos集群擴(kuò)容任務(wù)即可。例如,確定的服務(wù)器的數(shù)量是3,那么就需要選擇三個(gè)服務(wù)器,分別是服務(wù)器1、服務(wù)器2、服務(wù)器3,最終會(huì)生成1個(gè)主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)和相應(yīng)的2個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù),進(jìn)行任務(wù)發(fā)送的時(shí)候,主數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)可以分發(fā)給服務(wù)器1上的初始化Mongos集群分片的客戶端,可以分發(fā)給服務(wù)器2上的初始化Mongos集群分片的客戶端、也可以分發(fā)給服務(wù)器3上的初始化Mongos集群分片的客戶端;另外2個(gè)從數(shù)據(jù)庫的Mongos集群擴(kuò)容任務(wù)可以分發(fā)給服務(wù)器1上的初始化Mongos集群分片的客戶端,可以分發(fā)給服務(wù)器2上的初始化Mongos集群分片的客戶端、也可以分發(fā)給服務(wù)器3上的初始化Mongos集群分片的客戶端,最終分發(fā)后保證服務(wù)器1、服務(wù)器2和服務(wù)器3都有Mongos集群擴(kuò)容任務(wù)。
在一個(gè)具體的例子中,需要在4個(gè)服務(wù)器進(jìn)行擴(kuò)容,其中一個(gè)是主數(shù)據(jù)庫,另外三個(gè)是從數(shù)據(jù)庫。Mongos集群擴(kuò)容任務(wù)生成后,其中一個(gè)Mongos集群擴(kuò)容任務(wù)中包含的參數(shù)信息為:P1=mdm,P2=30G,P3=200G。其中,P1代表數(shù)據(jù)庫角色,P2代表內(nèi)存空間,P3代表磁盤空間。當(dāng)被選中的其中一個(gè)服務(wù)器的初始化Mongos集群分片的客戶端接收到該Mongos集群擴(kuò)容任務(wù)后,通過該任務(wù)中的參數(shù)信息,就會(huì)在其服務(wù)器上建立一個(gè)主數(shù)據(jù)庫,該數(shù)據(jù)庫有30G內(nèi)存,200G的磁盤空間。
當(dāng)Mongos架構(gòu)的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)寫入的時(shí)候,不排除會(huì)出現(xiàn)大量數(shù)據(jù)存儲(chǔ)在同一個(gè)分片中,而其他分片中的數(shù)據(jù)量很少的情況,為了避免這種情況出現(xiàn),Mongos架構(gòu)中會(huì)有一個(gè)數(shù)據(jù)均衡的功能,將存儲(chǔ)數(shù)據(jù)較多的分片中的數(shù)據(jù)挪出一部分存儲(chǔ)到其它相對(duì)空閑的分片中,達(dá)到所有分片中的數(shù)據(jù)量均衡的效果。所以,在進(jìn)行Mongos集群擴(kuò)容后,在本發(fā)明的一個(gè)實(shí)施例中,擴(kuò)容處理單元230,進(jìn)一步適于啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
Mongos集群中每個(gè)分片中又分成若干個(gè)數(shù)據(jù)塊(也可稱chunck或桶),啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù),也就是說在加入的新的分片中創(chuàng)建數(shù)據(jù)塊,將數(shù)據(jù)遷移到數(shù)據(jù)塊中。例如,原始Mongos集群有4個(gè)分片,每個(gè)分片中有6個(gè)數(shù)據(jù)塊的數(shù)據(jù)量,Mongos集群擴(kuò)容后,Mongos集群新增加了2個(gè)分片,變成6個(gè)分片,那么啟動(dòng)數(shù)據(jù)均衡器后,就將新增加的2個(gè)分片中分別遷移4遷移4個(gè)數(shù)據(jù)塊的量,最終使得每個(gè)分片中都有4個(gè)數(shù)據(jù)塊的數(shù)據(jù)量。
當(dāng)Mongos集群擴(kuò)容好后,在本發(fā)明的一個(gè)實(shí)施例中,擴(kuò)容處理單元230,進(jìn)一步適于接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
業(yè)務(wù)擴(kuò)容是針對(duì)更多業(yè)務(wù)量的情況,當(dāng)Mongos集群不再需要擴(kuò)容后,為了減少數(shù)據(jù)庫資源的浪費(fèi),需要將擴(kuò)容后的分片進(jìn)行下線處理,在本發(fā)明的一個(gè)實(shí)施例中,客戶端部署單元210,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。當(dāng)業(yè)務(wù)擴(kuò)容的需求結(jié)束后,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
在進(jìn)行分片的數(shù)據(jù)庫下線處理的時(shí)候,如果業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的數(shù)據(jù)庫過期時(shí)間,Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的數(shù)據(jù)庫過期時(shí)間,那么,業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;分片下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,在業(yè)務(wù)方提出業(yè)務(wù)擴(kuò)容需求的時(shí)候,預(yù)先設(shè)定一個(gè)擴(kuò)容的分片的數(shù)據(jù)庫的過期時(shí)間是10天,那么當(dāng)該業(yè)務(wù)的擴(kuò)容分片的數(shù)據(jù)庫使用10天后,服務(wù)器中的分片下線客戶端確定出該擴(kuò)容的分片的數(shù)據(jù)庫已經(jīng)到達(dá)過期時(shí)間10天,就會(huì)對(duì)該分片的數(shù)據(jù)庫進(jìn)行下線處理。
在進(jìn)行分片的數(shù)據(jù)庫下線處理的時(shí)候,需要下線的分片的數(shù)據(jù)庫不一定是新擴(kuò)容的分片的數(shù)據(jù)庫,也可以對(duì)該業(yè)務(wù)的整個(gè)Mongos集群的數(shù)據(jù)庫整體分析后,確定需要下線的分片的數(shù)據(jù)庫。在這種情況下,確定需要下線的分片的數(shù)據(jù)庫的方法是:分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,設(shè)定預(yù)設(shè)值為100,那么在一段時(shí)間內(nèi)都被訪問數(shù)量低于100次的分片的數(shù)據(jù)庫就可以視為是需要下線的分片的數(shù)據(jù)庫。
在Mongos集群的分片的使用過程中,不可避免會(huì)出現(xiàn)分片出現(xiàn)問題,不再可用的情況,如果沒有相應(yīng)的應(yīng)對(duì)措施,該出現(xiàn)問題的分片中的數(shù)據(jù)就會(huì)丟失。為了防止數(shù)據(jù)的丟失,需要進(jìn)行部署分片遷移客戶端,以進(jìn)行數(shù)據(jù)的遷移。在本發(fā)明的一個(gè)實(shí)施例中,客戶端部署單元210,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端。
需求接收單元220,進(jìn)一步適于當(dāng)出現(xiàn)分片不再可用的情況時(shí),接收指定分片不再可用的信息。
擴(kuò)容處理單元230,進(jìn)一步適于根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端,其中選擇服務(wù)器的依據(jù)上一已有詳細(xì)說明,在此不再贅述。
所選擇的各服務(wù)器上的分片遷移客戶端接收到分片遷移任務(wù)后,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的指定分片的數(shù)據(jù)遷移到新的分片。
因?yàn)樾枰w移數(shù)據(jù)的分片已經(jīng)不再可用的狀態(tài),所以,為了防止資源的浪費(fèi),擴(kuò)容處理單元230,進(jìn)一步適于當(dāng)不可用的指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除不可用的指定分片。
綜上所述,根據(jù)本發(fā)明的技術(shù)方案,數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上都部署有初始化Mongos集群分片的客戶端,當(dāng)接收到業(yè)務(wù)方的Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息后,將業(yè)務(wù)擴(kuò)容需求信息生成擴(kuò)容業(yè)務(wù),并選擇一定數(shù)量的可用的服務(wù)器,將擴(kuò)容任務(wù)發(fā)送給選擇的服務(wù)器上的初始化Mongos集群分片的客戶端,該客戶端就會(huì)根據(jù)擴(kuò)容任務(wù)進(jìn)行其所在的服務(wù)器進(jìn)行新的分片的初始化,完成Mongos集群的擴(kuò)容??梢?,本發(fā)明能根據(jù)業(yè)務(wù)擴(kuò)容需求自動(dòng)完成數(shù)據(jù)庫的擴(kuò)容,提高數(shù)據(jù)庫擴(kuò)容效率,在滿足業(yè)務(wù)需求的情況下,保證數(shù)據(jù)庫系統(tǒng)運(yùn)行的穩(wěn)定性。
需要說明的是:
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬裝置或者其它設(shè)備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了A1、一種實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的方法,包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端;
接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息,根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,并將新的分片加入Mongos集群中。
A2、如A1所述的方法,其中,所述接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息包括:
在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
A3、如A1所述的方法,其中,
所述Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù);
所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
A4、如A1所述的方法,其中,所述根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù)包括:
根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息;
根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
A5、如A4所述的方法,其中,所述數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端包括:
根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
A6、如A1所述的方法,其中,該方法進(jìn)一步包括:
啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
A7、如A1所述的方法,其中,該方法進(jìn)一步包括:
接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;
將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
A8、如A1所述的方法,其中,該方法進(jìn)一步包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;
其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
A9、如A8所述的方法,其中,所述分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫包括:
所述業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;所述分片下線客戶端掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。
A10、如A1所述的方法,其中,該方法進(jìn)一步包括:
在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端;
接收指定分片不再可用的信息,根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將所述分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將所述分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的所述指定分片中的數(shù)據(jù)遷移到新的分片。
A11、如權(quán)A10所述的方法,其中,該方法進(jìn)一步包括:
當(dāng)不可用的所述指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除所述不可用的指定分片。
本發(fā)明還公開了B12、一種實(shí)現(xiàn)Mongos集群自動(dòng)化擴(kuò)容的裝置,包括:
客戶端部署單元,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署初始化Mongos集群分片的客戶端;
需求接收單元,適于接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息;
擴(kuò)容處理單元,適于根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息生成Mongos集群擴(kuò)容任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述Mongos集群擴(kuò)容任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的Mongos集群擴(kuò)容任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中。
B13、如B12所述的裝置,其中,
所述需求接收單元,適于在指定的云平臺(tái)上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用更多Mongos集群資源的業(yè)務(wù)擴(kuò)容需求信息。
B14、如B12所述的裝置,其中,
所述Mongos集群擴(kuò)容任務(wù)中包括:所需服務(wù)器的數(shù)量和部署Mongos集群分片的相關(guān)參數(shù);
所述擴(kuò)容處理單元,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
B15、如B12所述的裝置,其中,
所述擴(kuò)容處理單元,適于根據(jù)所述業(yè)務(wù)擴(kuò)容需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息;根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫在分片中的角色信息,生成分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)。
B16、如B15所述的裝置,其中,
所述擴(kuò)容處理單元,適于根據(jù)確定的所需服務(wù)器數(shù)據(jù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)據(jù)量的服務(wù)器,并將分別對(duì)應(yīng)所述角色信息的所確定數(shù)量的Mongos集群擴(kuò)容任務(wù)隨機(jī)一一對(duì)應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的初始化Mongos集群分片的客戶端。
B17、如B12所述的裝置,其中,
所述擴(kuò)容處理單元,進(jìn)一步適于啟動(dòng)Mongos集群的數(shù)據(jù)遷移操作,向加入的新的分片中遷移數(shù)據(jù)。
B18、如B12所述的裝置,其中,
所述擴(kuò)容處理單元,進(jìn)一步適于接收所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)擴(kuò)容需求信息的業(yè)務(wù)方。
B19、如B12所述的裝置,其中,
所述客戶端部署單元,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署Mongos集群的分片下線客戶端;
其中,分片下線客戶端確定所在服務(wù)器上的需要下線的分片的數(shù)據(jù)庫,并對(duì)所確定的需要下線的分片的數(shù)據(jù)庫進(jìn)行下線處理。
B20、如B19所述的裝置,其中,
所述業(yè)務(wù)擴(kuò)容需求信息中包含擴(kuò)容分片的過期時(shí)間,以及Mongos集群擴(kuò)容任務(wù)中也包含擴(kuò)容分片的過期時(shí)間;所述分片下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴(kuò)容分片的過期時(shí)間,當(dāng)擴(kuò)容分片的過期時(shí)間到達(dá)時(shí)確定擴(kuò)容部署的相應(yīng)分片為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述分片下線客戶端獲取所在服務(wù)器上部署的分片的訪問信息,將在最近的一段時(shí)間內(nèi)訪問量低于預(yù)設(shè)值的分片確定為需要下線的分片,該需要下線的分片包含的數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。
B21、如B12所述的裝置,其中,
所述客戶端部署單元,進(jìn)一步適于在數(shù)據(jù)庫系統(tǒng)的各服務(wù)器上分別部署Mongos集群的分片遷移客戶端;
所述需求接收單元,進(jìn)一步適于接收指定分片不再可用的信息;
所述擴(kuò)容處理單元,進(jìn)一步適于根據(jù)該信息生成分片新建任務(wù)和分片遷移任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,將所述分片新建任務(wù)分發(fā)給所選擇的各服務(wù)器上的初始化Mongos集群分片的客戶端,以及將所述分片遷移任務(wù)分發(fā)給所選擇的各服務(wù)器上的分片遷移客戶端;
其中,初始化Mongos集群分片的客戶端根據(jù)所接收的分片新建任務(wù)在所在服務(wù)器上初始化新的分片,刪除新的分片中的非系統(tǒng)庫,將新的分片加入Mongos集群中;分片遷移客戶端將不可用的所述指定分片的數(shù)據(jù)遷移到新的分片。
B22、如B21所述的裝置,其中,
所述擴(kuò)容處理單元,進(jìn)一步適于當(dāng)不可用的所述指定分片中的數(shù)據(jù)遷移完畢后,從Mongos集群刪除所述不可用的指定分片。