System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專(zhuān)利技術(shù)涉及分布式多模數(shù)據(jù)庫(kù),具體地說(shuō)是一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法。
技術(shù)介紹
1、分布式數(shù)據(jù)庫(kù)是多節(jié)點(diǎn),部署在多個(gè)服務(wù)器上的數(shù)據(jù)庫(kù)集群。相比于單機(jī)數(shù)據(jù)庫(kù),分布式數(shù)據(jù)庫(kù)可以使用多個(gè)獨(dú)立的計(jì)算機(jī)來(lái)解決單臺(tái)服務(wù)器無(wú)法處理的存儲(chǔ),計(jì)算問(wèn)題。當(dāng)數(shù)據(jù)量超過(guò)了一臺(tái)服務(wù)器的負(fù)載上限時(shí),單機(jī)數(shù)據(jù)庫(kù)只能換更高性能的服務(wù)器,而分布式數(shù)據(jù)庫(kù)可以通過(guò)水平擴(kuò)展,通過(guò)追加服務(wù)器數(shù)量來(lái)解決該問(wèn)題。
2、高可用能力指的是當(dāng)數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生異常事件導(dǎo)致宕機(jī)時(shí),數(shù)據(jù)庫(kù)仍然能夠?qū)ν馓峁┳x寫(xiě)服務(wù),不會(huì)造成數(shù)據(jù)庫(kù)不可用的情況。常見(jiàn)的分布式集群中,通過(guò)多副本模式提供高可用能力。用戶(hù)的寫(xiě)入數(shù)據(jù)會(huì)保存多份。一般來(lái)說(shuō),用戶(hù)的每份寫(xiě)入數(shù)據(jù),均會(huì)保存三份,每份數(shù)據(jù)稱(chēng)之為一個(gè)副本(replica),這三個(gè)replica自身選舉出一個(gè)領(lǐng)導(dǎo)者(leader),其余兩份稱(chēng)之為追隨者(follower),leader會(huì)對(duì)該副本持有一定的時(shí)間周期(lease),在租期持續(xù)時(shí)間,該leader也是該副本的leaseholder,同時(shí),用戶(hù)的寫(xiě)入將數(shù)據(jù)寫(xiě)入leader節(jié)點(diǎn),然后leader將數(shù)據(jù)同步給所有的follower。在這樣的結(jié)構(gòu)中,所有的讀取寫(xiě)入操作都是由leader完成的,當(dāng)leader節(jié)點(diǎn)發(fā)生問(wèn)題宕機(jī)或不可用時(shí),其他兩個(gè)follower會(huì)選舉出新的leader,然后由新的leader提供后續(xù)的讀寫(xiě)支持。
3、時(shí)序數(shù)據(jù)是按照時(shí)間順序記錄的數(shù)據(jù)集合,其一般是由各種設(shè)備按照一定時(shí)間間隔或時(shí)間戳進(jìn)行采集的數(shù)據(jù)。時(shí)序數(shù)據(jù)有一些特點(diǎn),時(shí)序數(shù)據(jù)的寫(xiě)入幾乎都是新數(shù)據(jù),同
4、在線升級(jí)與離線升級(jí)相對(duì)應(yīng),指的是在替換數(shù)據(jù)庫(kù)版本進(jìn)行升級(jí)時(shí),仍然能夠?qū)ν馓峁┓?wù)。部分分布式數(shù)據(jù)庫(kù)集群通過(guò)多副本異地容災(zāi)可以在節(jié)點(diǎn)宕機(jī)時(shí)迅速切換節(jié)點(diǎn),服務(wù)中斷時(shí)間較短,只會(huì)影響較短時(shí)間的讀寫(xiě)需求,也可以據(jù)此原理以原址升級(jí)的方式保證在線升級(jí)。具體做法是,通過(guò)有計(jì)劃地殺掉某節(jié)點(diǎn)服務(wù),由高可用來(lái)保證在線功能,同時(shí)替換數(shù)據(jù)庫(kù)二進(jìn)制版本,最后以新的二進(jìn)制版本完成重啟升級(jí)。
5、一般的分布式數(shù)據(jù)庫(kù)集群可以通過(guò)殺節(jié)點(diǎn)然后替換二進(jìn)制的形式完成升級(jí)操作,但殺節(jié)點(diǎn)后,死亡節(jié)點(diǎn)的leaseholder重新選舉期間,存在一個(gè)時(shí)間窗口期,盡管該時(shí)間窗口較短,在此期間仍會(huì)無(wú)法對(duì)外提供服務(wù)。此外,若節(jié)點(diǎn)升級(jí)的時(shí)間過(guò)長(zhǎng),會(huì)觸發(fā)副本的自動(dòng)遷移,由于節(jié)點(diǎn)死亡,集群并不知道該節(jié)點(diǎn)是異常宕機(jī)還是有計(jì)劃的升級(jí)操作,此時(shí)死亡節(jié)點(diǎn)的副本在集群角度已經(jīng)丟失,為保證高可用性,集群需要盡快補(bǔ)齊該部分?jǐn)?shù)據(jù)副本。對(duì)于包含時(shí)序數(shù)據(jù)的多模數(shù)據(jù)庫(kù)來(lái)說(shuō),由于時(shí)序數(shù)據(jù)的數(shù)據(jù)量遠(yuǎn)大于關(guān)系型數(shù)據(jù),時(shí)序數(shù)據(jù)的副本遷移會(huì)對(duì)cpu,存儲(chǔ),網(wǎng)絡(luò)造成較大的負(fù)擔(dān),在新節(jié)點(diǎn)加入后,無(wú)論是等待遷移副本完成,還是取消正在遷移的副本,都需要額外的性能開(kāi)銷(xiāo)。
技術(shù)實(shí)現(xiàn)思路
1、本專(zhuān)利技術(shù)的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,對(duì)于分布式多模數(shù)據(jù)庫(kù)不同版本之間的版本升級(jí)和二進(jìn)制替換,在升級(jí)的同時(shí)仍然能對(duì)外提供讀寫(xiě)支持,保證數(shù)據(jù)在線可用,以及升級(jí)期間避免副本遷移。
2、本專(zhuān)利技術(shù)解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
3、一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,在分布式數(shù)據(jù)庫(kù)集群中進(jìn)行數(shù)據(jù)庫(kù)版本升級(jí)時(shí),對(duì)于升級(jí)節(jié)點(diǎn),優(yōu)先將該節(jié)點(diǎn)持有的副本租約leaseholder遷移至其他節(jié)點(diǎn),保證升級(jí)期間讀寫(xiě)可用無(wú)中斷,同時(shí)禁止副本進(jìn)行遷移,直至升級(jí)完成后恢復(fù)副本遷移。
4、該方法在升級(jí)過(guò)程中,有計(jì)劃的遷移升級(jí)節(jié)點(diǎn)持有的leaseholder,阻止在遷移操作中的副本遷移,通過(guò)在進(jìn)行數(shù)據(jù)庫(kù)版本升級(jí)時(shí)先轉(zhuǎn)移該數(shù)據(jù)庫(kù)節(jié)點(diǎn)持有的所有l(wèi)easeholder,同時(shí)禁止該節(jié)點(diǎn)的副本遷移,保證在升級(jí)期間的全過(guò)程數(shù)據(jù)讀寫(xiě)可用,并減少不必要的副本遷移。
5、進(jìn)一步的,該方法的具體實(shí)現(xiàn)步驟包括:
6、s1、提供升級(jí)命令,優(yōu)先遷移升級(jí)節(jié)點(diǎn)的leaseholder到其他節(jié)點(diǎn);
7、s2、添加升級(jí)命令;對(duì)于要升級(jí)的節(jié)點(diǎn),接收到升級(jí)命令后,進(jìn)行升級(jí),并標(biāo)記節(jié)點(diǎn)為升級(jí)狀態(tài),指定時(shí)間內(nèi)禁止該節(jié)點(diǎn)持有的數(shù)據(jù)副本進(jìn)行遷移;
8、s3、更新環(huán)境配置,更換新版本二進(jìn)制及相關(guān)文件;
9、s4、啟動(dòng)新版本數(shù)據(jù)庫(kù),允許副本遷移,允許leaseholder回遷。
10、進(jìn)一步的,所述提供升級(jí)命令,優(yōu)先遷移升級(jí)節(jié)點(diǎn)的leaseholder到其他節(jié)點(diǎn),具體實(shí)現(xiàn)如下:
11、用戶(hù)手動(dòng)觸發(fā)upgrade<node_id>命令指定升級(jí)節(jié)點(diǎn);
12、節(jié)點(diǎn)狀態(tài)切換為upgrading;
13、切換數(shù)據(jù)庫(kù)二進(jìn)制版本;
14、以start+upgrade-complete命令啟動(dòng)新版本數(shù)據(jù)庫(kù);
15、完成在線升級(jí)。
16、進(jìn)一步的,所述添加升級(jí)命令,為upgrade,使用方式為:
17、database?node?upgrade--node-id$node_id--host$host
18、其中,$node_id是要進(jìn)行升級(jí)操作的節(jié)點(diǎn)id,$host是接受數(shù)據(jù)庫(kù)連接的ip與端口地址,數(shù)據(jù)庫(kù)接收到命令后,向指定的$node_id發(fā)送命令,準(zhǔn)備進(jìn)行升級(jí)操作。
19、進(jìn)一步的,對(duì)于要升級(jí)的節(jié)點(diǎn)$node_id,接收到升級(jí)命令后,查找該節(jié)點(diǎn)本身持有的所有l(wèi)easeholder,對(duì)于每個(gè)leaseholder,查詢(xún)其所有副本狀態(tài);
20、對(duì)于副本repl-1,查詢(xún)其所有副本位于節(jié)點(diǎn)1,2,3上,此時(shí)leaseholder分布于節(jié)點(diǎn)1上;查詢(xún)節(jié)點(diǎn)2,節(jié)點(diǎn)3上持有的leaseholder數(shù)量,選擇其中含有低數(shù)量leaseholder的節(jié)點(diǎn),假設(shè)該節(jié)點(diǎn)為節(jié)點(diǎn)2,構(gòu)建admintransferleaserequest,則其中包含要遷移的副本repl-1和要遷往的目標(biāo)節(jié)點(diǎn)2;
21、標(biāo)記節(jié)點(diǎn)為升級(jí)狀態(tài),指定時(shí)間內(nèi)禁止該節(jié)點(diǎn)持有的數(shù)據(jù)副本進(jìn)行遷移。
22、進(jìn)一步的,新版本數(shù)據(jù)庫(kù)需要以特殊命令方式啟動(dòng),代表該升級(jí)完成,語(yǔ)法如下:
23、database?start—upgrade-complete—host$host
24、對(duì)于啟動(dòng)參數(shù),添加了額外配置—upgrade-complete,對(duì)于啟動(dòng)的數(shù)據(jù)庫(kù)節(jié)點(diǎn),該參數(shù)代表該節(jié)點(diǎn)是在線升級(jí)的方式啟動(dòng)的,而非宕機(jī)恢復(fù)或新擴(kuò)容節(jié)點(diǎn);對(duì)于該數(shù)據(jù)庫(kù)節(jié)點(diǎn),數(shù)據(jù)庫(kù)重新做初始化操作,標(biāo)記節(jié)點(diǎn)狀態(tài)從升級(jí)狀態(tài)變更為正常節(jié)點(diǎn)狀態(tài),將節(jié)點(diǎn)重新加入集群網(wǎng)絡(luò),允許副本進(jìn)行遷移。
25、若集群存在leaseholder均衡機(jī)制,則不需要對(duì)leaseholder本文檔來(lái)自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,在分布式數(shù)據(jù)庫(kù)集群中進(jìn)行數(shù)據(jù)庫(kù)版本升級(jí)時(shí),對(duì)于升級(jí)節(jié)點(diǎn),優(yōu)先將該節(jié)點(diǎn)持有的副本租約遷移至其他節(jié)點(diǎn),保證升級(jí)期間讀寫(xiě)可用無(wú)中斷,同時(shí)禁止副本進(jìn)行遷移,直至升級(jí)完成后恢復(fù)副本遷移。
2.根據(jù)權(quán)利要求1所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,該方法的具體實(shí)現(xiàn)步驟包括:
3.根據(jù)權(quán)利要求2所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,所述提供升級(jí)命令,優(yōu)先遷移升級(jí)節(jié)點(diǎn)的leaseholder到其他節(jié)點(diǎn),具體實(shí)現(xiàn)如下:
4.根據(jù)權(quán)利要求2所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,所述添加升級(jí)命令,為upgrade,使用方式為:
5.根據(jù)權(quán)利要求4所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,對(duì)于要升級(jí)的節(jié)點(diǎn)$node_id,接收到升級(jí)命令后,查找該節(jié)點(diǎn)本身持有的所有l(wèi)easeholder,對(duì)于每個(gè)leaseholder,查詢(xún)其所有副本狀態(tài);
6.根據(jù)權(quán)利要求2或4所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,新版本數(shù)據(jù)庫(kù)以特殊命令
7.根據(jù)權(quán)利要求2所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,替換二進(jìn)制后,以新版本啟動(dòng)數(shù)據(jù)庫(kù)時(shí)進(jìn)行初始化操作。
8.根據(jù)權(quán)利要求1所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,所述分布式多模數(shù)據(jù)庫(kù)包括關(guān)系型數(shù)據(jù)庫(kù)和時(shí)序型數(shù)據(jù)庫(kù)。
9.一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)實(shí)現(xiàn)裝置,其特征在于,包括:至少一個(gè)存儲(chǔ)器和至少一個(gè)處理器;
10.一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令在被處理器執(zhí)行時(shí),能夠?qū)崿F(xiàn)權(quán)利要求1至8任一項(xiàng)所述的方法。
...【技術(shù)特征摘要】
1.一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,在分布式數(shù)據(jù)庫(kù)集群中進(jìn)行數(shù)據(jù)庫(kù)版本升級(jí)時(shí),對(duì)于升級(jí)節(jié)點(diǎn),優(yōu)先將該節(jié)點(diǎn)持有的副本租約遷移至其他節(jié)點(diǎn),保證升級(jí)期間讀寫(xiě)可用無(wú)中斷,同時(shí)禁止副本進(jìn)行遷移,直至升級(jí)完成后恢復(fù)副本遷移。
2.根據(jù)權(quán)利要求1所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,該方法的具體實(shí)現(xiàn)步驟包括:
3.根據(jù)權(quán)利要求2所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,所述提供升級(jí)命令,優(yōu)先遷移升級(jí)節(jié)點(diǎn)的leaseholder到其他節(jié)點(diǎn),具體實(shí)現(xiàn)如下:
4.根據(jù)權(quán)利要求2所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,所述添加升級(jí)命令,為upgrade,使用方式為:
5.根據(jù)權(quán)利要求4所述的一種分布式多模數(shù)據(jù)庫(kù)在線升級(jí)的方法,其特征在于,對(duì)于要升級(jí)的節(jié)點(diǎn)$node_id,接收到升級(jí)命令后,查找...
【專(zhuān)利技術(shù)屬性】
技術(shù)研發(fā)人員:樊鑫源,
申請(qǐng)(專(zhuān)利權(quán))人:上海沄熹科技有限公司,
類(lèi)型:發(fā)明
國(guó)別省市:
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。