一種分布式數(shù)據(jù)庫的管理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種分布式數(shù)據(jù)庫的管理方法及系統(tǒng),包括:確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),其它L?1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn);將第i數(shù)據(jù)分片存儲至第m數(shù)據(jù)存儲節(jié)點(diǎn);將第i數(shù)據(jù)分片備份至第i數(shù)據(jù)分片的L?1個備份數(shù)據(jù)存儲節(jié)點(diǎn);根據(jù)第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新分布式數(shù)據(jù)庫中的拓?fù)湫畔⒉l(fā)送至分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)。該方法使得L個數(shù)據(jù)存儲節(jié)點(diǎn)之間相互備份,極大地提高了數(shù)據(jù)備份效率,節(jié)約了數(shù)據(jù)庫資源。
【專利說明】
一種分布式數(shù)據(jù)庫的管理方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種分布式數(shù)據(jù)庫的管理方法及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著辦公自動化和電子商務(wù)的飛速發(fā)展,企業(yè)對信息系統(tǒng)的依賴性越來越高,數(shù) 據(jù)庫作為信息系統(tǒng)的核心擔(dān)當(dāng)著重要的角色。
[0003] 尤其在一些對數(shù)據(jù)可靠性要求很高的行業(yè)如銀行、證券、電信等,如果發(fā)生意外停 機(jī)或數(shù)據(jù)丟失其損失會十分慘重。為此數(shù)據(jù)庫管理員應(yīng)針對具體的業(yè)務(wù)要求制定詳細(xì)的數(shù) 據(jù)庫備份與災(zāi)難恢復(fù)策略。
[0004] 對于數(shù)據(jù)庫備份的方式有很多,在現(xiàn)有技術(shù)中,主要采用的還是主備庫的形式進(jìn) 行備份的,其中主庫主要用于對于事務(wù)的讀寫等操作,而備庫主要用于備份主庫的數(shù)據(jù)以 及分擔(dān)部分交易,參照圖1,為現(xiàn)有技術(shù)中的主備庫形式的數(shù)據(jù)庫備份方法,其中主庫1指的 是主數(shù)據(jù)庫,備庫1指的是對主庫1的數(shù)據(jù)進(jìn)行完全備份的數(shù)據(jù)庫,同樣地,主庫2指的是主 數(shù)據(jù)庫,備庫2指的是對主庫2的數(shù)據(jù)進(jìn)行完全備份的數(shù)據(jù)庫,在正常情況下,對數(shù)據(jù)庫數(shù)據(jù) 的事務(wù)性操作只在主庫1和主庫2上進(jìn)行,只有當(dāng)主庫出現(xiàn)故障,才會切換到備庫上進(jìn)行事 務(wù)性操作,例如主庫1出現(xiàn)故障,則將當(dāng)前備庫1切換為主庫,然后繼續(xù)使用。
[0005] 對于現(xiàn)有技術(shù)中的主備庫進(jìn)行數(shù)據(jù)庫備份的方式,主要存在以下幾個缺陷:第一, 浪費(fèi)數(shù)據(jù)庫資源,對于N個數(shù)據(jù)庫,則需要N個數(shù)據(jù)庫來進(jìn)行備份,占用過多數(shù)據(jù)庫資源,如 果對于每個數(shù)據(jù)庫需要做M個備份,則共需要M*N個數(shù)據(jù)庫才能實(shí)現(xiàn)對N個數(shù)據(jù)庫的備份,進(jìn) 一步導(dǎo)致嚴(yán)重占用過多數(shù)據(jù)庫資源;第二,大多時候備庫是不做使用的,或者只是用于分擔(dān) 對主庫的非事務(wù)一致性讀交易,在實(shí)際應(yīng)用中約束較多,難以保證各個數(shù)據(jù)庫節(jié)點(diǎn)負(fù)載一 致,不能作為一種通用的負(fù)載均衡方案。
[0006] 綜上所述,現(xiàn)有技術(shù)中的主備庫的數(shù)據(jù)庫備份方式比較浪費(fèi)數(shù)據(jù)庫資源,且無法 保證多個備份數(shù)據(jù)庫之間的負(fù)載均衡。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明提供一種分布式數(shù)據(jù)庫的管理方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的主 備庫的數(shù)據(jù)庫備份方式比較浪費(fèi)數(shù)據(jù)庫資源,且無法保證多個備份數(shù)據(jù)庫之間的負(fù)載均衡 的技術(shù)問題。
[0008] -方面,本發(fā)明實(shí)施例提供一種分布式數(shù)據(jù)庫的管理方法,包括:
[0009] 確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫 包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為 主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù);
[0010] 將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);
[0011] 將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn);
[0012] 根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)?信息,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述 拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。
[0013]本發(fā)明實(shí)施例提供的方法,在做數(shù)據(jù)存儲時,確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中 對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L 個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn) 作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù);將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié) 點(diǎn);將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn);根據(jù)所述第i 數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)湫畔ⅲ⒏潞蟮乃?述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù) 分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。該方法將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個存儲節(jié)點(diǎn)作 為一個數(shù)據(jù)片的主存儲節(jié)點(diǎn),其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份存儲節(jié)點(diǎn),從而可以使得L 個數(shù)據(jù)庫之間相互做備份,因而不管有多少個數(shù)據(jù)分片,只需要使用L個數(shù)據(jù)存儲節(jié)點(diǎn)就可 以實(shí)現(xiàn)對每個數(shù)據(jù)分片做L-1次備份,并且每個數(shù)據(jù)存儲節(jié)點(diǎn)都既可以作為主存儲節(jié)點(diǎn),又 可以做備份存儲節(jié)點(diǎn),同時也保證了L個數(shù)據(jù)存儲節(jié)點(diǎn)之間的負(fù)載均衡,因而該方法極大地 提高了數(shù)據(jù)備份效率,節(jié)約了數(shù)據(jù)庫資源。
[0014] 可選地,所述方法還包括:
[0015] 根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中 修改所述第i數(shù)據(jù)分片;
[0016] 根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同 步f目息;
[0017] 將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié) 點(diǎn),以使所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行 更新。
[0018] 可選地,還包括:
[0019] 若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分 片同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片;
[0020] 根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù) 據(jù)分片進(jìn)行更新。
[0021] 可選地,所述方法還包括:
[0022] 若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故障數(shù)據(jù)存 儲節(jié)點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片;
[0023]針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作 為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn);
[0024] 更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所 有正常數(shù)據(jù)存儲節(jié)點(diǎn)。
[0025] 可選地,所述將所述數(shù)據(jù)分片的一個正常的備數(shù)據(jù)存儲節(jié)點(diǎn)作為所述數(shù)據(jù)分片的 主存儲數(shù)據(jù)節(jié)點(diǎn),包括:
[0026] 根據(jù)所述數(shù)據(jù)分片的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲節(jié)點(diǎn),所述候選 數(shù)據(jù)存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn);
[0027]從所述候選數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。 [0028]可選地,所述將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有正常數(shù) 據(jù)存儲節(jié)點(diǎn)之后,還包括:
[0029] 若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至 所述備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述 備份分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。
[0030] 可選地,所述方法還包括:
[0031 ]若所述分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù) 庫;
[0032] 若確定沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切 換為主分布式數(shù)據(jù)庫;
[0033] 若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份 分布式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。
[0034]另一方面,本發(fā)明實(shí)施例提供一種分布式數(shù)據(jù)庫的管理系統(tǒng),包括:
[0035]確定單元,用于確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所 述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù) 據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為 大于1的整數(shù);
[0036] 存儲單元,用于將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);
[0037] 備份單元,用于將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存 儲節(jié)點(diǎn);
[0038]更新單元,用于根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式 數(shù)據(jù)庫中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù) 存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。
[0039] 可選地,所述更新單元還用于:
[0040] 根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中 修改所述第i數(shù)據(jù)分片;
[0041] 根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同 步f目息;
[0042]將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié) 點(diǎn),以使所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行 更新。
[0043] 可選地,所述更新單元還用于:
[0044] 若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分 片同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片;
[0045] 根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù) 據(jù)分片進(jìn)行更新。
[0046] 可選地,所述系統(tǒng)還包括故障處理單元,用于:
[0047]若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故障數(shù)據(jù)存 儲節(jié)點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片;
[0048] 針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作 為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn);
[0049] 更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所 有正常數(shù)據(jù)存儲節(jié)點(diǎn)。
[0050] 可選地,所述故障處理單元還用于:
[0051] 根據(jù)所述數(shù)據(jù)分片的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲節(jié)點(diǎn),所述候選 數(shù)據(jù)存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn);
[0052] 從所述候選數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。 [0053] 可選地,所述故障處理單元,還用于:
[0054] 若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至 所述備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述 備份分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。
[0055] 可選地,所述故障處理單元,還用于:
[0056] 若所述分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù) 庫;
[0057] 若確定沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切 換為主分布式數(shù)據(jù)庫;
[0058]若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份 分布式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。
【附圖說明】
[0059] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本 領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其 他的附圖。
[0060] 圖1為現(xiàn)有技術(shù)中的主備式數(shù)據(jù)庫備份方式示意圖;
[0061 ]圖2為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理方法流程圖;
[0062] 圖3為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫示意圖;
[0063] 圖4(a)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫集群示意圖;
[0064] 圖4(b)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫集群示意圖;
[0065] 圖5(a)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫主備集群示意圖;
[0066] 圖5(b)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫主備集群示意圖;
[0067] 圖6為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理方法詳細(xì)流程圖;
[0068] 圖7為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理系統(tǒng)示意圖;
[0069] 圖8為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理系統(tǒng)示意圖。
【具體實(shí)施方式】
[0070] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn) 一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施 例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的 所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0071] 下面結(jié)合說明書附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
[0072] 如圖2所示,本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理方法,包括:
[0073]步驟201、確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布 式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲 節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的 整數(shù);
[0074]步驟202、將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);
[0075] 步驟203、將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié) 占.
[0076] 步驟204、根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫 中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié) 點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。
[0077] 本發(fā)明實(shí)施例中,數(shù)據(jù)分片是指將完整的數(shù)據(jù)按一定規(guī)律拆分成多個部分,每個 部分稱為一個數(shù)據(jù)分片,例如,一種典型的數(shù)據(jù)分片劃分方法為,將數(shù)據(jù)表中的某個字段按 一定大小區(qū)間規(guī)則區(qū)分為多個數(shù)據(jù)分片。
[0078] 在本發(fā)明實(shí)施例中,每個數(shù)據(jù)分片都由1個數(shù)據(jù)存儲節(jié)點(diǎn)負(fù)責(zé)管理,稱之為主存儲 節(jié)點(diǎn),并在L-1個數(shù)據(jù)存儲節(jié)點(diǎn)做備份,稱之為備份存儲節(jié)點(diǎn),外部對數(shù)據(jù)分片的訪問只發(fā) 生主數(shù)據(jù)存儲節(jié)點(diǎn)上。其中,數(shù)據(jù)存儲節(jié)點(diǎn)指的是一個數(shù)據(jù)庫,也可以是一個數(shù)據(jù)存儲單 元,L是一個預(yù)先設(shè)定的大于1的整數(shù),例如L取5,就表示每個數(shù)據(jù)分片存儲在一個主數(shù)據(jù)存 儲節(jié)點(diǎn),然后在另外4個數(shù)據(jù)存儲節(jié)點(diǎn)上做數(shù)據(jù)的備份,即每個數(shù)據(jù)分片都做4個備份。
[0079] 下面舉例說明本發(fā)明實(shí)施例中的分布式數(shù)據(jù)庫的結(jié)構(gòu),參照圖3,為本發(fā)明實(shí)施例 提供的一種分布式數(shù)據(jù)庫示意圖,其中,以L = 3為例進(jìn)行說明。每個數(shù)據(jù)分片都將3個數(shù)據(jù) 存儲節(jié)點(diǎn)中的一個作為主數(shù)據(jù)存儲節(jié)點(diǎn),然后在另外2個數(shù)據(jù)存儲節(jié)點(diǎn)上做數(shù)據(jù)分片的備 份。
[0080] 在圖3中,數(shù)據(jù)分片1將數(shù)據(jù)存儲節(jié)點(diǎn)1作為主數(shù)據(jù)存儲節(jié)點(diǎn),將數(shù)據(jù)存儲節(jié)點(diǎn)2和 數(shù)據(jù)存儲節(jié)點(diǎn)3作為備份數(shù)據(jù)存儲節(jié)點(diǎn);數(shù)據(jù)分片2將數(shù)據(jù)存儲節(jié)點(diǎn)2作為主數(shù)據(jù)存儲節(jié)點(diǎn), 將數(shù)據(jù)存儲節(jié)點(diǎn)1和數(shù)據(jù)存儲節(jié)點(diǎn)3作為備份數(shù)據(jù)存儲節(jié)點(diǎn);數(shù)據(jù)分片3將數(shù)據(jù)存儲節(jié)點(diǎn)3作 為主數(shù)據(jù)存儲節(jié)點(diǎn),將數(shù)據(jù)存儲節(jié)點(diǎn)1和數(shù)據(jù)存儲節(jié)點(diǎn)2作為備份數(shù)據(jù)存儲節(jié)點(diǎn)。并且對于 數(shù)據(jù)分片的修改操作只能由數(shù)據(jù)分片的主數(shù)據(jù)存儲節(jié)點(diǎn)才可以實(shí)施,例如,如果需要修改 數(shù)據(jù)分片1的數(shù)據(jù),那么只能通過數(shù)據(jù)存儲節(jié)點(diǎn)1來進(jìn)行修改,在修改完成之后,可以通過 "數(shù)據(jù)分布"功能,將修改后的數(shù)據(jù)分片1或者是將實(shí)施的修改信息(其中包含了做了哪些修 改操作)發(fā)布給除數(shù)據(jù)存儲節(jié)點(diǎn)1之外的所有數(shù)據(jù)存儲節(jié)點(diǎn),即發(fā)布給數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù) 據(jù)存儲節(jié)點(diǎn)3,然后由數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3對自身存儲的數(shù)據(jù)分片1進(jìn)行更新, 使得與數(shù)據(jù)存儲節(jié)點(diǎn)1中的數(shù)據(jù)分片1保持?jǐn)?shù)據(jù)一致。
[0081 ]另外,對于一個數(shù)據(jù)存儲節(jié)點(diǎn)中的備份數(shù)據(jù)分片,則可以通過數(shù)據(jù)存儲節(jié)點(diǎn)中的 "數(shù)據(jù)訂閱"功能接收其它數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)布過來的同步信息來進(jìn)行更新,其中,備份數(shù)據(jù) 分片指的是數(shù)據(jù)存儲節(jié)點(diǎn)中將其它數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn)的數(shù)據(jù)分片,例如, 以數(shù)據(jù)存儲節(jié)點(diǎn)1為例,其中數(shù)據(jù)分片1將數(shù)據(jù)存儲節(jié)點(diǎn)1作為主數(shù)據(jù)存儲節(jié)點(diǎn),而數(shù)據(jù)存儲 節(jié)點(diǎn)1中的數(shù)據(jù)分片2是將數(shù)據(jù)存儲節(jié)點(diǎn)2作為主數(shù)據(jù)存儲節(jié)點(diǎn),而數(shù)據(jù)存儲節(jié)點(diǎn)1只是對數(shù) 據(jù)分片2進(jìn)行備份,因此,數(shù)據(jù)分片2是數(shù)據(jù)存儲節(jié)點(diǎn)1的備份數(shù)據(jù)分片,對于數(shù)據(jù)存儲節(jié)點(diǎn) 1,如果數(shù)據(jù)存儲節(jié)點(diǎn)1接收到數(shù)據(jù)存儲節(jié)點(diǎn)2發(fā)布過來的數(shù)據(jù)分片2的同步信息,則根據(jù)同 步信息對數(shù)據(jù)存儲節(jié)點(diǎn)1中的數(shù)據(jù)分片2進(jìn)行修改。同樣地,數(shù)據(jù)存儲節(jié)點(diǎn)1中的數(shù)據(jù)分片3 也是數(shù)據(jù)存儲節(jié)點(diǎn)1的備份數(shù)據(jù)分片。
[0082] 基于上述描述,結(jié)合圖3,本發(fā)明實(shí)施例中提供的分布式數(shù)據(jù)包含L個數(shù)據(jù)存儲節(jié) 點(diǎn),其中每個數(shù)據(jù)存儲節(jié)點(diǎn)可以存儲多個數(shù)據(jù)分片,并且一個數(shù)據(jù)分片只將L個數(shù)據(jù)存儲節(jié) 點(diǎn)中的一個作為主數(shù)據(jù)存儲節(jié)點(diǎn),其它的L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),對于 一個數(shù)據(jù)分片的修改操作,只能發(fā)生在主數(shù)據(jù)存儲節(jié)點(diǎn)上,在主數(shù)據(jù)存儲節(jié)點(diǎn)對數(shù)據(jù)分片 進(jìn)行修改后,需要將修改信息發(fā)布到其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)中,以使得其它L-1個數(shù)據(jù)存 儲節(jié)點(diǎn)對修改后的數(shù)據(jù)分片進(jìn)行同步,每個數(shù)據(jù)存儲節(jié)點(diǎn)可以接收其它L-1個數(shù)據(jù)存儲節(jié) 點(diǎn)發(fā)布過來的同步信息,根據(jù)同步信息對數(shù)據(jù)分片進(jìn)行相應(yīng)修改。
[0083] 從本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫的存儲結(jié)構(gòu)可以看出,該數(shù)據(jù)備份方法,實(shí) 現(xiàn)了使用L個數(shù)據(jù)存儲節(jié)點(diǎn)就可以對每個數(shù)據(jù)分片做L-1個備份,相較于【背景技術(shù)】中提到的 主備式數(shù)據(jù)庫備份方法,可以大大減少備份數(shù)據(jù)庫的數(shù)量,以圖1為例,如果需要對兩個數(shù) 據(jù)庫(即主庫1和主庫2)進(jìn)行備份,則需要增加兩個數(shù)據(jù)庫(即增加備庫1和備庫2),然后分 別使用備庫1對主庫1進(jìn)行備份,使用備庫2對主庫2進(jìn)行備份;而如果使用本發(fā)明的方法,當(dāng) 需要對主庫1和主庫2進(jìn)行備份時,可以不需要增加數(shù)據(jù)庫,直接對主庫1和主庫2進(jìn)行相互 備份,即使用主庫2對主庫1中的數(shù)據(jù)進(jìn)行備份,然后使用主庫1對主庫2中的數(shù)據(jù)進(jìn)行備份, 從而大大減少了備份數(shù)據(jù)庫的數(shù)量。在該方法中,由于每個數(shù)據(jù)庫被用作主數(shù)據(jù)庫的同時, 也被用作備份數(shù)據(jù)庫,因而對容量提出了更高的要求,但是結(jié)合實(shí)際應(yīng)用,發(fā)現(xiàn)對于容量的 增加的成本是非常方便和低成本的,因而本發(fā)明實(shí)施例的方法相較于【背景技術(shù)】中的主備式 數(shù)據(jù)庫備份方法,具有高效、低成本、高效率等優(yōu)勢。
[0084]下面對上述步驟201~步驟204中的分布式數(shù)據(jù)庫的管理方法做詳細(xì)說明。
[0085]當(dāng)需要將數(shù)據(jù)分片進(jìn)行存儲時,在上述步驟201中,確定第i數(shù)據(jù)分片在分布式數(shù) 據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),并將所述第m數(shù)據(jù)存儲節(jié)點(diǎn)作為所述第i數(shù)據(jù)分片的主數(shù) 據(jù)存儲節(jié)點(diǎn),其中,所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù) 存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備 份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù),因此,所述第i數(shù)據(jù)分片是所有數(shù)據(jù)片中的任一數(shù)據(jù)分 片,第m數(shù)據(jù)存儲節(jié)點(diǎn)是L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)。至于第i數(shù)據(jù)分片對應(yīng)的 第m數(shù)據(jù)存儲節(jié)點(diǎn)是L個數(shù)據(jù)存儲節(jié)點(diǎn)中的哪一個,可以根據(jù)實(shí)際應(yīng)用需要而設(shè)定,例如可 以對數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行分類,建立數(shù)據(jù)分片與數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)規(guī)則,從而可以確 定一個數(shù)據(jù)分片對應(yīng)的數(shù)據(jù)存儲節(jié)點(diǎn)。
[0086]在確定了一個第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn)之后,通過 上述步驟202,將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn),以及通過在上述步驟203 中,將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn),即由第m數(shù)據(jù) 存儲節(jié)點(diǎn)在將第i數(shù)據(jù)分片存儲之后,發(fā)布同步信息到其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn),其它L-1個 數(shù)據(jù)存儲節(jié)點(diǎn)接收到同步信息之后,分別存儲所述第i數(shù)據(jù)分片。例如,參照圖3,當(dāng)將數(shù)據(jù) 分片1存儲至數(shù)據(jù)存儲節(jié)點(diǎn)1之后(數(shù)據(jù)存儲節(jié)點(diǎn)1即為數(shù)據(jù)分片1的主數(shù)據(jù)存儲節(jié)點(diǎn)),由數(shù) 據(jù)存儲節(jié)點(diǎn)1將數(shù)據(jù)分片1發(fā)布至數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3,數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù) 存儲節(jié)點(diǎn)3分別接收到到數(shù)據(jù)分片1之后,分別進(jìn)行備份,因此在數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲 節(jié)點(diǎn)3中也分別存儲了數(shù)據(jù)分片1,并且對于數(shù)據(jù)分片1的后續(xù)修改等操作只能在數(shù)據(jù)存儲 節(jié)點(diǎn)1中進(jìn)行,因?yàn)閿?shù)據(jù)存儲節(jié)點(diǎn)1是數(shù)據(jù)分片1的主數(shù)據(jù)存儲節(jié)點(diǎn),而對于數(shù)據(jù)存儲節(jié)點(diǎn)2 和數(shù)據(jù)存儲節(jié)點(diǎn)3中的數(shù)據(jù)分片1,只能進(jìn)行讀操作,不可進(jìn)行寫操作。
[0087] 在上述步驟204中,在將第i數(shù)據(jù)分片存儲至第m數(shù)據(jù)存儲節(jié)點(diǎn)之后,需要更新分布 式數(shù)據(jù)庫中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù) 據(jù)存儲節(jié)點(diǎn),使得所有的數(shù)據(jù)存儲節(jié)點(diǎn)得到更新之后的拓?fù)湫畔ⅲ渲?,所述拓?fù)湫畔⒂糜?表示數(shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。
[0088] 參照圖3所示的數(shù)據(jù)分片與數(shù)據(jù)存儲節(jié)點(diǎn)之間的關(guān)系,得到的拓?fù)湫畔⒅辽侔?如表1所述的信息,如表1所示,為拓?fù)湫畔⒈怼?br>[0090] ~表1拓?fù)湫畔⒈?br>[0091] 再比如,有5個數(shù)據(jù)存儲節(jié)點(diǎn),其中數(shù)據(jù)分片1~數(shù)據(jù)分片10將數(shù)據(jù)存儲節(jié)點(diǎn)1作為 主數(shù)據(jù)存儲節(jié)點(diǎn),數(shù)據(jù)分片11~數(shù)據(jù)分片16將數(shù)據(jù)存儲節(jié)點(diǎn)2作為主數(shù)據(jù)存儲節(jié)點(diǎn),數(shù)據(jù)分 片17~數(shù)據(jù)分片26將數(shù)據(jù)存儲節(jié)點(diǎn)3作為主數(shù)據(jù)存儲節(jié)點(diǎn),數(shù)據(jù)分片27~數(shù)據(jù)分片35將數(shù) 據(jù)存儲節(jié)點(diǎn)4作為主數(shù)據(jù)存儲節(jié)點(diǎn),數(shù)據(jù)分片36~數(shù)據(jù)分片50將數(shù)據(jù)存儲節(jié)點(diǎn)5作為主數(shù)據(jù) 存儲節(jié)點(diǎn),則對應(yīng)的拓?fù)湫畔⑷绫?所示:
[0094] 表2拓?fù)湫畔⒈?br>[0095]至此,完成了一個數(shù)據(jù)分片存儲到某個數(shù)據(jù)存儲節(jié)點(diǎn)的全部過程,并且在數(shù)據(jù)分 片存儲的同時,也實(shí)現(xiàn)了數(shù)據(jù)分片的備份,即將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作 為主數(shù)據(jù)存儲節(jié)點(diǎn),將數(shù)據(jù)分片進(jìn)行存儲,同時將數(shù)據(jù)分片發(fā)送多其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn) 進(jìn)行備份。
[0096] 在對某個數(shù)據(jù)分片進(jìn)行存儲之后,如果后面需要修改該數(shù)據(jù)分片,則是通過該數(shù) 據(jù)分片的主數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行操作,以第i數(shù)據(jù)分片為例,可選地,所述方法還包括:根據(jù)所 述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中修改所述第i數(shù) 據(jù)分片;根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同 步信息;將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié) 點(diǎn),以使所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行 更新。
[0097] 即首先根據(jù)拓?fù)湫畔⒋_定要修改的第i數(shù)據(jù)分片對應(yīng)的主數(shù)據(jù)存儲節(jié)點(diǎn)為第m數(shù) 據(jù)存儲節(jié)點(diǎn),然后根據(jù)接收到的第i數(shù)據(jù)分片修改信息在第m數(shù)據(jù)存儲節(jié)點(diǎn)中修改所述第i 數(shù)據(jù)分片,在對第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同步信息,其中第一數(shù)據(jù)分片同步 信息中包含修改的數(shù)據(jù)分片的相關(guān)信息,將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù) 據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn),第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)在接收到所述 第一數(shù)據(jù)分片同步信息,分別對存儲的第i數(shù)據(jù)分片進(jìn)行更新,從而完成了數(shù)據(jù)分片的更新 和所有數(shù)據(jù)存儲節(jié)點(diǎn)之間的數(shù)據(jù)同步。
[0098] 相對應(yīng)地,如果一個數(shù)據(jù)存儲節(jié)點(diǎn)接收到數(shù)據(jù)分片同步信息,則進(jìn)行相應(yīng)的更新, 具體地,若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分片 同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片;根據(jù)所述第二數(shù)據(jù)分片同步信 息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù)據(jù)分片進(jìn)行更新。
[0099] 即第m數(shù)據(jù)存儲節(jié)點(diǎn)如果接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分 片同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片,然后根據(jù)所述第二數(shù)據(jù)分片 同步信息,對所述待同步的數(shù)據(jù)分片進(jìn)行更新。
[0100] 通過上述方法,可以實(shí)現(xiàn)對一個數(shù)據(jù)存儲節(jié)點(diǎn)中的數(shù)據(jù)分片的修改,同時對其它 的數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行同步更新,保證了所有的數(shù)據(jù)存儲節(jié)點(diǎn)所存儲的數(shù)據(jù)分片全都是相同 的。
[0101] 在分布式數(shù)據(jù)庫中,當(dāng)其中某個存儲節(jié)點(diǎn)發(fā)生故障或者整個數(shù)據(jù)庫發(fā)生故障,如 何設(shè)置合理的處理方法是至關(guān)重要的,下面對本發(fā)明實(shí)施例提供的數(shù)據(jù)庫發(fā)生故障時的處 理方法進(jìn)行相應(yīng)的說明。
[0102] 可選地,所述方法還包括:若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障, 則確定將所述故障數(shù)據(jù)存儲節(jié)點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片;針對所述所有數(shù)據(jù) 分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作為所述數(shù)據(jù)分片的主存儲數(shù) 據(jù)節(jié)點(diǎn);更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所 有正常數(shù)據(jù)存儲節(jié)點(diǎn)。
[0103] 在本發(fā)明實(shí)施例中,任意一個數(shù)據(jù)存儲節(jié)點(diǎn)中都存儲了所有的數(shù)據(jù)分片,因此當(dāng) 一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,成為故障數(shù)據(jù)存儲節(jié)點(diǎn)時,數(shù)據(jù)是不會丟失的,因而在其它數(shù) 據(jù)存儲節(jié)點(diǎn)中都有數(shù)據(jù)的完整備份。對于某個數(shù)據(jù)存儲節(jié)點(diǎn),其中存儲的數(shù)據(jù)分片分為兩 種類型,第一種類型是將該數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn)的數(shù)據(jù)分片,可以稱之為主 數(shù)據(jù)分片,第二種類型是將該數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn)的數(shù)據(jù)分片,可以稱之 為備份數(shù)據(jù)分片。對于一個故障數(shù)據(jù)存儲節(jié)點(diǎn),需要進(jìn)行的操作是:根據(jù)拓?fù)湫畔?,確定其 中的主數(shù)據(jù)分片,然后需要為這些主數(shù)據(jù)分片重新指定主存儲節(jié)點(diǎn),因?yàn)閿?shù)據(jù)的修改等操 作只發(fā)生在主數(shù)據(jù)存儲節(jié)點(diǎn)上。
[0104] 對于故障數(shù)據(jù)存儲節(jié)點(diǎn)中的主數(shù)據(jù)分片,可以將主數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲 節(jié)點(diǎn)作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn),可選地,可通過下述方式來確定:根據(jù)所述數(shù)據(jù) 分片(即故障數(shù)據(jù)存儲節(jié)點(diǎn)中的主數(shù)據(jù)分片)的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲 節(jié)點(diǎn),所述候選數(shù)據(jù)存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn);從所述候選 數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。
[0105] 其中,一個備份數(shù)據(jù)存儲節(jié)點(diǎn)完全備份了故障存儲數(shù)據(jù)節(jié)點(diǎn)中的主數(shù)據(jù)分片,指 的是在備份數(shù)據(jù)存儲節(jié)點(diǎn)中的數(shù)據(jù)分片與故障存儲數(shù)據(jù)節(jié)點(diǎn)中的主數(shù)據(jù)分片完全相同。
[0106] 舉例來說,參照圖3,假設(shè)數(shù)據(jù)存儲節(jié)點(diǎn)1發(fā)生了故障,成為故障數(shù)據(jù)存儲節(jié)點(diǎn),現(xiàn) 在需要為其中的數(shù)據(jù)分片1重新選擇一個數(shù)據(jù)存儲節(jié)點(diǎn)作為數(shù)據(jù)分片1的主數(shù)據(jù)存儲節(jié)點(diǎn), 如果數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3中的備份數(shù)據(jù)分片1與數(shù)據(jù)存儲節(jié)點(diǎn)1中的數(shù)據(jù)分片1 完全相同,則可以將數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3都確定為候選數(shù)據(jù)存儲節(jié)點(diǎn);但是考 慮到另外一種情形,假設(shè)數(shù)據(jù)存儲節(jié)點(diǎn)1已經(jīng)完成了對數(shù)據(jù)分片1的修改,然后發(fā)送第一數(shù) 據(jù)分片同步信息到數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3中,使得數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié) 點(diǎn)3對數(shù)據(jù)分片1進(jìn)行更新,如果數(shù)據(jù)存儲節(jié)點(diǎn)2已經(jīng)完成了對數(shù)據(jù)分片1的同步,但此時數(shù) 據(jù)存儲節(jié)點(diǎn)3還沒有完成對數(shù)據(jù)分片1的同步,此時在選擇候選數(shù)據(jù)存儲節(jié)點(diǎn)時,只能夠?qū)?數(shù)據(jù)存儲節(jié)點(diǎn)2作為候選數(shù)據(jù)存儲節(jié)點(diǎn),即只能將數(shù)據(jù)存儲節(jié)點(diǎn)2作為數(shù)據(jù)分片1的新的主 數(shù)據(jù)存儲節(jié)點(diǎn)。當(dāng)然,在實(shí)際應(yīng)用中,在一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,選擇候選數(shù)據(jù)存儲節(jié) 點(diǎn)時,可以等待一段時間,等待每個備份數(shù)據(jù)存儲節(jié)點(diǎn)的數(shù)據(jù)寫入操作都完成之后,再來選 擇主數(shù)據(jù)存儲節(jié)點(diǎn),或者是設(shè)定一個等待寫入時間,在設(shè)定的等待寫入時間過后,再來選擇 主數(shù)據(jù)存儲節(jié)點(diǎn)。
[0107] 通過上述方法,可以實(shí)現(xiàn)當(dāng)一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障時,可以將其中的主數(shù)據(jù) 分片重新指定主數(shù)據(jù)存儲節(jié)點(diǎn),并且在指定主數(shù)據(jù)存儲節(jié)點(diǎn)之后,還需要更新拓?fù)湫畔ⅲ?后將拓?fù)湫畔l(fā)送到其它的所有數(shù)據(jù)存儲節(jié)點(diǎn)。
[0108] 以上是對一個分布式數(shù)據(jù)進(jìn)行管理的方法,在實(shí)際應(yīng)用中,可能還需要對一個分 布式數(shù)據(jù)庫進(jìn)行備份,即形成主分布式數(shù)據(jù)庫和備份分布式數(shù)據(jù)庫的結(jié)構(gòu),其中備份分布 式數(shù)據(jù)庫中的存儲結(jié)構(gòu)與主分布式數(shù)據(jù)庫中的存儲結(jié)構(gòu)完全相同,也采用本發(fā)明實(shí)施例中 的分布式數(shù)據(jù)庫的管理方法進(jìn)行數(shù)據(jù)管理。
[0109]因而,在對主分布式數(shù)據(jù)庫中的故障數(shù)據(jù)存儲節(jié)點(diǎn)中的主數(shù)據(jù)分片指定了主數(shù)據(jù) 存儲節(jié)點(diǎn)節(jié)點(diǎn),以及將更新后的拓?fù)湫畔l(fā)送至分布式數(shù)據(jù)庫中的所有正常數(shù)據(jù)存儲節(jié)點(diǎn) 之后,若分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至所述備 份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述備份分 布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。
[0110]從而保證了主分布式數(shù)據(jù)庫與備份分布式數(shù)據(jù)庫之間的數(shù)據(jù)同步,并且可選地, 若主分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫;若確定 沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切換為主分布式數(shù) 據(jù)庫;若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份分布 式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。
[0111] 該方式實(shí)現(xiàn)了在主分布式數(shù)據(jù)庫發(fā)生故障后,可以切換至備份分布式數(shù)據(jù)庫,從 而保證備份分布式數(shù)據(jù)庫可以及時切換為主分布式數(shù)據(jù)庫進(jìn)行使用,保證數(shù)據(jù)的正常操 作。
[0112] 本發(fā)明實(shí)施例提供的方法,在做數(shù)據(jù)存儲時,確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中 對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L 個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn) 作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù);將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié) 點(diǎn);將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn);根據(jù)所述第i 數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)湫畔?,并將更新后的?述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù) 分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。該方法將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個存儲節(jié)點(diǎn)作 為一個數(shù)據(jù)片的主存儲節(jié)點(diǎn),其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份存儲節(jié)點(diǎn),從而可以使得L 個數(shù)據(jù)庫之間相互做備份,因而不管有多少個數(shù)據(jù)分片,只需要使用L個數(shù)據(jù)存儲節(jié)點(diǎn)就可 以實(shí)現(xiàn)對每個數(shù)據(jù)分片做L-1次備份,并且每個數(shù)據(jù)存儲節(jié)點(diǎn)都既可以作為主存儲節(jié)點(diǎn),又 可以做備份存儲節(jié)點(diǎn),同時也保證了L個數(shù)據(jù)存儲節(jié)點(diǎn)之間的負(fù)載均衡,因而該方法極大地 提高了數(shù)據(jù)備份效率,節(jié)約了數(shù)據(jù)庫資源。
[0113] 下面結(jié)合圖4(a)和圖5(a),給出實(shí)際應(yīng)用中的一種分布式數(shù)據(jù)庫管理的實(shí)現(xiàn)方 式,參照圖4(a)和圖5(a),其中圖4(a)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫集群示意 圖,圖5(a)為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫主備集群示意圖。在圖4(a)中,一個分 布式數(shù)據(jù)庫集群包含以下幾個模塊:接入與計算模塊、數(shù)據(jù)存儲模塊及數(shù)據(jù)節(jié)點(diǎn)信息管理 模塊,并且在數(shù)據(jù)存儲模塊中包含L個數(shù)據(jù)存儲節(jié)點(diǎn)。
[0114] 數(shù)據(jù)存儲節(jié)點(diǎn):用于存儲數(shù)據(jù)分片,當(dāng)它負(fù)責(zé)的數(shù)據(jù)分片需要修改時或修改后,必 須將修改信息發(fā)布。數(shù)據(jù)存儲節(jié)點(diǎn)有3個功能模塊組成:
[0115] 1)、數(shù)據(jù)存儲;
[0116] 2 )、接收數(shù)據(jù)修改信息,并存儲,可以通過"數(shù)據(jù)訂閱"功能來實(shí)現(xiàn);
[0117] 3)、如果本數(shù)據(jù)存儲節(jié)點(diǎn)負(fù)責(zé)的數(shù)據(jù)分片,需要修改時或修改后,將修改信息通過 "數(shù)據(jù)發(fā)布"功能進(jìn)行發(fā)布。
[0118] 接入與計算模塊:用于外部應(yīng)用程序接入和分布式數(shù)據(jù)計算的模塊。主要功能如 下:
[0119] 1)、接受外部應(yīng)用的請求;
[0120] 2)、根據(jù)數(shù)據(jù)分片與數(shù)據(jù)存儲節(jié)點(diǎn)的分布情況,將請求分發(fā)給各數(shù)據(jù)存儲節(jié)點(diǎn)并 發(fā)處理,根據(jù)存儲節(jié)點(diǎn)的應(yīng)答信息反饋外部應(yīng)用。
[0121]數(shù)據(jù)節(jié)點(diǎn)信息管理:主要管理數(shù)據(jù)分片與數(shù)據(jù)節(jié)點(diǎn)的關(guān)系(簡稱為拓?fù)潢P(guān)系),主 要功能如下:
[0122] 1 )、維護(hù)拓?fù)潢P(guān)系,即確定每個數(shù)據(jù)存儲負(fù)責(zé)哪些數(shù)據(jù)分片;
[0123] 2)、與接入與計算模塊通信,保證各接入與計算模塊使用最新的拓?fù)潢P(guān)系;
[0124] 3)、與數(shù)據(jù)存儲節(jié)點(diǎn)通信,確保每個數(shù)據(jù)存儲節(jié)點(diǎn)必須發(fā)布且僅發(fā)布其負(fù)責(zé)的數(shù) 據(jù)分片修改信息。
[0125] 基于圖4(a)所示的分布式數(shù)據(jù)庫集群,可以對分布式數(shù)據(jù)庫集群進(jìn)行備份,得到 備份分布式數(shù)據(jù)庫集群,如圖5(a)所示,是具有主備關(guān)系的2個分布式數(shù)據(jù)庫集群。其中,分 布式數(shù)據(jù)庫集群的主備關(guān)系中要求:
[0126] 1)、數(shù)據(jù)存儲節(jié)點(diǎn)數(shù)量一致,數(shù)據(jù)存儲節(jié)點(diǎn)一一對應(yīng);
[0127] 2)、備份分布式數(shù)據(jù)庫集群需要和主分布式數(shù)據(jù)庫集群保持一致的拓?fù)潢P(guān)系(數(shù) 據(jù)發(fā)布與訂閱關(guān)系),另外,備份分布式數(shù)據(jù)庫集群中的每個數(shù)據(jù)存儲節(jié)點(diǎn)還需要從它在主 分布式數(shù)據(jù)庫集群中的對應(yīng)數(shù)據(jù)存儲點(diǎn)訂閱數(shù)據(jù);
[0128] 3)、主備分布式數(shù)據(jù)庫集群中的數(shù)據(jù)節(jié)點(diǎn)信息,負(fù)責(zé)拓?fù)湫畔⒌南嗷ネ?。主備?布式數(shù)據(jù)庫集群下,主分布式數(shù)據(jù)庫集群負(fù)責(zé)發(fā)布拓?fù)湫畔?,備分布式?shù)據(jù)庫集群負(fù)責(zé)接 收拓?fù)湫畔⒉⒃诒镜厣?,備分布式?shù)據(jù)庫集群不向主發(fā)布拓?fù)湫畔ⅲ鞣植际綌?shù)據(jù)庫集 群不接收備分布式數(shù)據(jù)庫集群的拓?fù)湫畔ⅰ?br>[0129] 下面對實(shí)際應(yīng)用中基于圖4(a)和圖5(a)所示的主備分布式數(shù)據(jù)庫集群結(jié)構(gòu)的容 災(zāi)情況的處理流程做說明。
[0130] 第一種情形、數(shù)據(jù)接入與計算模塊中的某個接入與計算節(jié)點(diǎn)發(fā)生故障
[0131] 當(dāng)數(shù)據(jù)接入與計算模塊中的某個接入與計算節(jié)點(diǎn)發(fā)生故障時,處理較為簡單,關(guān) 閉故障的接入與計算節(jié)點(diǎn)即可,由應(yīng)用負(fù)載均衡連接到其他可用的接入與計算節(jié)點(diǎn)。
[0132] 第二種情形、數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障
[0133] 處理流程如下:
[0134] 1)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"根據(jù)拓?fù)潢P(guān)系獲取存在故障的數(shù)據(jù)存儲節(jié)點(diǎn)中的主 數(shù)據(jù)分片信息,修改拓?fù)湫畔ⅲ谕負(fù)湫畔⒅袠?biāo)志對故障的數(shù)據(jù)存儲節(jié)點(diǎn)中的主數(shù)據(jù)分片 不可訪問;
[0135] 2)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"將修改后的拓?fù)湫畔⒁来伟l(fā)布給:數(shù)據(jù)接入與計算 模塊、所有的數(shù)據(jù)存儲節(jié)點(diǎn)、備份分布式數(shù)據(jù)庫集群的"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊",這三者需 要依次發(fā)布,特別是在所有數(shù)據(jù)接入與計算模塊接收完拓?fù)湫畔⒑?,才能向所有的?shù)據(jù)存 儲節(jié)點(diǎn)發(fā)布信息。通過該步驟,使得外部訪問操作不會對存在故障的數(shù)據(jù)分片產(chǎn)生數(shù)據(jù)修 改;
[0136] 3)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"選擇一個具有故障的數(shù)據(jù)存儲節(jié)點(diǎn)中的主數(shù)據(jù)分片 的備份的數(shù)據(jù)存儲節(jié)點(diǎn)作為管理者節(jié)點(diǎn),這樣形成新的拓?fù)湫畔ⅲ?br>[0137] 4)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"將新的拓?fù)湫畔l(fā)布給主分布式數(shù)據(jù)庫集群中的所 有數(shù)據(jù)存儲節(jié)點(diǎn),這樣的目的是讓,選中的數(shù)據(jù)存儲節(jié)點(diǎn)知曉負(fù)責(zé)了新的數(shù)據(jù)分片,即以后 需要發(fā)布對該數(shù)據(jù)分片修改;
[0138] 5)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"將拓?fù)湫畔l(fā)布給備份分布式數(shù)據(jù)庫集群的"數(shù)據(jù) 節(jié)點(diǎn)信息管理模塊",備份分布式數(shù)據(jù)庫集群接收到該信息后,將拓?fù)湫畔l(fā)布給備份分布 式數(shù)據(jù)庫集群的數(shù)據(jù)存儲節(jié)點(diǎn);
[0139] 6)、"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"將拓?fù)湫畔l(fā)布給接入與計算模塊,這樣外部對原 故障的數(shù)據(jù)分片的訪問,能夠通過接入與計算模塊訪問到調(diào)整后的數(shù)據(jù)存儲節(jié)點(diǎn)。
[0140]通過上述步驟,即完成了數(shù)據(jù)存儲節(jié)點(diǎn)的故障處理。
[0141]當(dāng)然,在實(shí)際應(yīng)用中,一個分布式的數(shù)據(jù)庫的結(jié)構(gòu)還可以其它形式,如圖4(b)所 示,為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫集群示意圖,在一個分布式數(shù)據(jù)庫中,包含多 個數(shù)據(jù)存儲節(jié)點(diǎn),并且以L為單位,組成多個相互備份的備份組,例如,參照圖4(b),其中數(shù) 據(jù)存儲節(jié)點(diǎn)1、數(shù)據(jù)存儲節(jié)點(diǎn)2和數(shù)據(jù)存儲節(jié)點(diǎn)3組成一個備份組,可以稱之為第一備份組, 數(shù)據(jù)存儲節(jié)點(diǎn)4、數(shù)據(jù)存儲節(jié)點(diǎn)5和數(shù)據(jù)存儲節(jié)點(diǎn)6組成一個備份組,可以稱之為第二備份 組,在第一備份組中的3個數(shù)據(jù)存儲節(jié)點(diǎn)是相互備份的,其具體的數(shù)據(jù)分片存儲方法,更新 方法以及容災(zāi)方法,與上述描述的圖4(a)中的數(shù)據(jù)分片存儲方法,更新方法以及容災(zāi)方法 相同,在此不再贅述,圖4(b)中的分布式數(shù)據(jù)庫與圖4(a)中的分布式數(shù)據(jù)庫的區(qū)別在于,圖 4(b)中的分布式數(shù)據(jù)庫中包含有多個備份組,每個備份組類似于圖4(a)中的一個分布式數(shù) 據(jù)庫,因而方便更加合理的對多種類型的數(shù)據(jù)分片按照其類型存儲至相應(yīng)的備份組中,從 而方便實(shí)際應(yīng)用中的數(shù)據(jù)庫的管理。
[0142] 與圖4(b)的分布式數(shù)據(jù)庫對應(yīng)的備份數(shù)據(jù)庫如圖5(b)所示,其中,圖5(b)為本發(fā) 明實(shí)施例提供的一種分布式數(shù)據(jù)庫主備集群示意圖,下面針對圖5(b)所示的分布式數(shù)據(jù)庫 主備集群,來說明當(dāng)某個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障時,如何進(jìn)行節(jié)點(diǎn)故障處理,假設(shè)是分布式 數(shù)據(jù)庫主集群中的數(shù)據(jù)存儲節(jié)點(diǎn)1發(fā)生故障:
[0143] 步驟1、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊隔離故障數(shù)據(jù)存儲節(jié)點(diǎn)和數(shù)據(jù)分片。
[0144] 數(shù)據(jù)節(jié)點(diǎn)信息管理模塊更新拓?fù)湫畔?,將拓?fù)湫畔⒅械墓收蠑?shù)據(jù)存儲節(jié)點(diǎn)設(shè)置為 不可用。
[0145] 步驟2、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊通知相關(guān)方。
[0146]數(shù)據(jù)節(jié)點(diǎn)信息管理模塊通知分布式數(shù)據(jù)庫主集群中接入與計算模塊中的所有接 入與計算節(jié)點(diǎn)和對應(yīng)的數(shù)據(jù)存儲節(jié)點(diǎn)(即分布式數(shù)據(jù)庫主集群中的數(shù)據(jù)存儲節(jié)點(diǎn)1和數(shù)據(jù) 存儲節(jié)點(diǎn)2)和分布式數(shù)據(jù)庫備集群,告知故障數(shù)據(jù)存儲節(jié)點(diǎn)不可用。
[0147]步驟3、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊重建拓?fù)湫畔ⅰ?br>[0148]數(shù)據(jù)節(jié)點(diǎn)信息管理模塊更新拓?fù)湫畔?,為故障?shù)據(jù)存儲節(jié)點(diǎn)中的主分?jǐn)?shù)據(jù)片選擇 一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn)。
[0149]步驟4、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊將更新后的拓?fù)湫畔⑼ㄖ獢?shù)據(jù)存儲節(jié)點(diǎn)。
[0150]數(shù)據(jù)節(jié)點(diǎn)信息管理模塊通知相關(guān)數(shù)據(jù)存儲節(jié)點(diǎn)更新拓?fù)湫畔ⅲ?fù)載新的數(shù)據(jù)分 片。
[0151]步驟5、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊將新的拓?fù)湫畔⑼ㄖ植际綌?shù)據(jù)庫備集群。
[0152]數(shù)據(jù)節(jié)點(diǎn)信息管理模塊通知分布式數(shù)據(jù)庫備集群的"數(shù)據(jù)節(jié)點(diǎn)信息管理模塊"生 效新的拓?fù)湫畔?,分布式?shù)據(jù)庫備集群需要將拓?fù)湫畔l(fā)布給分布式數(shù)據(jù)庫備集群中的相 關(guān)數(shù)據(jù)存儲節(jié)點(diǎn)和接入與計算模塊中的所有接入與計算節(jié)點(diǎn)。
[0153]步驟6、數(shù)據(jù)節(jié)點(diǎn)信息管理模塊將新的拓?fù)湫畔⑼ㄖ植际綌?shù)據(jù)庫主集群中接入 與計算模塊中的所有接入與計算節(jié)點(diǎn)。
[0154]將新的拓?fù)湫畔⑼ㄖ植际綌?shù)據(jù)庫主集群中接入與計算模塊中的所有接入與計 算節(jié)點(diǎn)。
[0155] 下面對本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理方法做詳細(xì)描述,如圖6所 示,包括:
[0156] 步驟601、確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布 式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲 節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的 整數(shù);
[0157] 步驟602、將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);
[0158] 步驟603、根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫 中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié) 點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系;
[0159] 步驟604、根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存 儲節(jié)點(diǎn)中修改所述第i數(shù)據(jù)分片;
[0160] 步驟605、根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù) 據(jù)分片同步信息;
[0161] 步驟606、將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-1個備份數(shù) 據(jù)存儲節(jié)點(diǎn),以使所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步 信息進(jìn)行更新;
[0162] 步驟607、若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第 二數(shù)據(jù)分片同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片;
[0163] 步驟608、根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待 同步的數(shù)據(jù)分片進(jìn)行更新;
[0164] 步驟609、若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故 障數(shù)據(jù)存儲節(jié)點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片;
[0165] 步驟610、針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存 儲節(jié)點(diǎn)作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn);
[0166] 步驟611、更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù) 庫中的所有正常數(shù)據(jù)存儲節(jié)點(diǎn);
[0167] 步驟612、若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫?息發(fā)送至所述備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā) 送至所述備份分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。
[0168] 其中,需要說明的是,上述步驟601~步驟603,步驟604~步驟606,步驟607~步驟 608,步驟609~步驟612,相互之間沒有嚴(yán)格的時序關(guān)系,上述步驟601~步驟603主要實(shí)現(xiàn) 對數(shù)據(jù)分片的存儲,步驟604~步驟606主要實(shí)現(xiàn)對數(shù)據(jù)分片的修改,步驟607~步驟608主 要實(shí)現(xiàn)根據(jù)接收到的其它數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)送的數(shù)據(jù)分布同步信息對本數(shù)據(jù)存儲節(jié)點(diǎn)中的 數(shù)據(jù)分片進(jìn)行同步更新,步驟步驟609~步驟612主要實(shí)現(xiàn)當(dāng)數(shù)據(jù)分片發(fā)生故障后的更新操 作。
[0169] 本發(fā)明實(shí)施例提供的方法,在做數(shù)據(jù)存儲時,確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中 對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L 個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn) 作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù);將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié) 點(diǎn);將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn);根據(jù)所述第i 數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)湫畔?,并將更新后的?述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù) 分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。該方法將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個存儲節(jié)點(diǎn)作 為一個數(shù)據(jù)片的主存儲節(jié)點(diǎn),其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份存儲節(jié)點(diǎn),從而可以使得L 個數(shù)據(jù)庫之間相互做備份,因而不管有多少個數(shù)據(jù)分片,只需要使用L個數(shù)據(jù)存儲節(jié)點(diǎn)就可 以實(shí)現(xiàn)對每個數(shù)據(jù)分片做L-1次備份,并且每個數(shù)據(jù)存儲節(jié)點(diǎn)都既可以作為主存儲節(jié)點(diǎn),又 可以做備份存儲節(jié)點(diǎn),同時也保證了L個數(shù)據(jù)存儲節(jié)點(diǎn)之間的負(fù)載均衡,因而該方法極大地 提高了數(shù)據(jù)備份效率,節(jié)約了數(shù)據(jù)庫資源。
[0170]基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供一種分布式數(shù)據(jù)庫的管理系統(tǒng),如圖7 所示,包括:
[0171]確定單元701,用于確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn), 所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個 數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L 為大于1的整數(shù);
[0172]存儲單元702,用于將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);
[0173]備份單元703,用于將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù) 存儲節(jié)點(diǎn);
[0174] 更新單元704,用于根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布 式數(shù)據(jù)庫中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù) 據(jù)存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。
[0175] 可選地,所述更新單元704還用于:
[0176] 根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中 修改所述第i數(shù)據(jù)分片;
[0177] 根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同 步f目息;
[0178]將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié) 點(diǎn),以使所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行 更新。
[0179] 可選地,所述更新單元704還用于:
[0180] 若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分 片同步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片;
[0181] 根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù) 據(jù)分片進(jìn)行更新。
[0182] 可選地,所述系統(tǒng)還包括故障處理單元705,用于:
[0183] 若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故障數(shù)據(jù)存 儲節(jié)點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片;
[0184] 針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作 為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn);
[0185] 更新所述拓?fù)湫畔ⅲ⒏潞蟮乃鐾負(fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所 有正常數(shù)據(jù)存儲節(jié)點(diǎn)。
[0186] 可選地,所述故障處理單元705還用于:
[0187] 根據(jù)所述數(shù)據(jù)分片的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲節(jié)點(diǎn),所述候選 數(shù)據(jù)存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn);
[0188] 從所述候選數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。
[0189] 可選地,所述故障處理單元705,還用于:
[0190]若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至 所述備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述 備份分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。
[0191] 可選地,所述故障處理單元705,還用于:
[0192] 若所述分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù) 庫;
[0193] 若確定沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切 換為主分布式數(shù)據(jù)庫;
[0194] 若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份 分布式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。
[0195] 本發(fā)明實(shí)施例,在做數(shù)據(jù)存儲時,確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m 數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存 儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份 數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù);將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn);將所述 第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-1個備份數(shù)據(jù)存儲節(jié)點(diǎn);根據(jù)所述第i數(shù)據(jù)分片對 應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)湫畔ⅲ⒏潞蟮乃鐾負(fù)湫畔?發(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù) 據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。本發(fā)明實(shí)施例將L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個存儲節(jié)點(diǎn)作為一 個數(shù)據(jù)片的主存儲節(jié)點(diǎn),其它L-1個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份存儲節(jié)點(diǎn),從而可以使得L個數(shù) 據(jù)庫之間相互做備份,因而不管有多少個數(shù)據(jù)分片,只需要使用L個數(shù)據(jù)存儲節(jié)點(diǎn)就可以實(shí) 現(xiàn)對每個數(shù)據(jù)分片做L-1次備份,并且每個數(shù)據(jù)存儲節(jié)點(diǎn)都既可以作為主存儲節(jié)點(diǎn),又可以 做備份存儲節(jié)點(diǎn),同時也保證了L個數(shù)據(jù)存儲節(jié)點(diǎn)之間的負(fù)載均衡,因而該方法極大地提高 了數(shù)據(jù)備份效率,節(jié)約了數(shù)據(jù)庫資源。
[0196] 參照圖8,為本發(fā)明實(shí)施例提供的一種分布式數(shù)據(jù)庫的管理系統(tǒng)示意圖,在實(shí)際應(yīng) 用中,一個分布式數(shù)據(jù)庫的管理系統(tǒng)可以包含接入與計算模塊801、數(shù)據(jù)存儲模塊802及數(shù) 據(jù)節(jié)點(diǎn)信息管理模塊803。
[0197] 其中,接入與計算模塊801可以完成確定單元701的功能,數(shù)據(jù)存儲模塊802可用于 存儲單元702、備份單元703的功能,數(shù)據(jù)節(jié)點(diǎn)信息管理模塊803可用于更新單元704、故障處 理單元705的功能,當(dāng)然,并不限于上述使用方式,也可以是接入與計算模塊801、數(shù)據(jù)存儲 模塊802及數(shù)據(jù)節(jié)點(diǎn)信息管理模塊803分別完成確定單元701、存儲單元702、備份單元703、 更新單元704及故障處理單元705的部分功能。
[0198] 本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程 圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流 程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序 指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn) 生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí) 現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的系統(tǒng)。
[0199] 這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特 定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指 令系統(tǒng)的制造品,該指令系統(tǒng)實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。
[0200] 這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計 算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實(shí)現(xiàn)的處理,從而在計算機(jī)或 其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一 個方框或多個方框中指定的功能的步驟。
[0201] 盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造 性概念,則可對這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu) 選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
[0202] 顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【主權(quán)項(xiàng)】
1. 一種分布式數(shù)據(jù)庫的管理方法,其特征在于,包括: 確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分布式數(shù)據(jù)庫包含 L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存儲節(jié)點(diǎn)作為主數(shù) 據(jù)存儲節(jié)點(diǎn),將其它L-I個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1的整數(shù); 將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn); 將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié)點(diǎn); 根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù)庫中的拓?fù)湫?息,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn);所述拓 撲信息用于表示數(shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。2. 如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中修改 所述第i數(shù)據(jù)分片; 根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同步信 息; 將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié)點(diǎn),以 使所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行更新。3. 如權(quán)利要求1所述的方法,其特征在于,還包括: 若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分片同 步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片; 根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù)據(jù)分 片進(jìn)行更新。4. 如權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故障數(shù)據(jù)存儲節(jié) 點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片; 針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作為所 述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn); 更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有正 常數(shù)據(jù)存儲節(jié)點(diǎn)。5. 如權(quán)利要求4所述的方法,其特征在于,所述將所述數(shù)據(jù)分片的一個正常的備數(shù)據(jù)存 儲節(jié)點(diǎn)作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn),包括: 根據(jù)所述數(shù)據(jù)分片的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲節(jié)點(diǎn),所述候選數(shù)據(jù) 存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn); 從所述候選數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。6. 如權(quán)利要求4所述的方法,其特征在于,所述將更新后的所述拓?fù)湫畔l(fā)送至所述分 布式數(shù)據(jù)庫中的所有正常數(shù)據(jù)存儲節(jié)點(diǎn)之后,還包括: 若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至所述 備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述備份 分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。7. 如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 若所述分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫; 若確定沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切換為 主分布式數(shù)據(jù)庫; 若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份分布 式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。8. -種分布式數(shù)據(jù)庫的管理系統(tǒng),其特征在于,包括: 確定單元,用于確定第i數(shù)據(jù)分片在分布式數(shù)據(jù)庫中對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),所述分 布式數(shù)據(jù)庫包含L個數(shù)據(jù)存儲節(jié)點(diǎn),一個數(shù)據(jù)分片將所述L個數(shù)據(jù)存儲節(jié)點(diǎn)中的一個數(shù)據(jù)存 儲節(jié)點(diǎn)作為主數(shù)據(jù)存儲節(jié)點(diǎn),將其它L-I個數(shù)據(jù)存儲節(jié)點(diǎn)作為備份數(shù)據(jù)存儲節(jié)點(diǎn),L為大于1 的整數(shù); 存儲單元,用于將所述第i數(shù)據(jù)分片存儲至所述第m數(shù)據(jù)存儲節(jié)點(diǎn); 備份單元,用于將所述第i數(shù)據(jù)分片備份至所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié) 占 . 更新單元,用于根據(jù)所述第i數(shù)據(jù)分片對應(yīng)的第m數(shù)據(jù)存儲節(jié)點(diǎn),更新所述分布式數(shù)據(jù) 庫中的拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲 節(jié)點(diǎn);所述拓?fù)湫畔⒂糜诒硎緮?shù)據(jù)分片與主數(shù)據(jù)存儲節(jié)點(diǎn)之間的對應(yīng)關(guān)系。9. 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述更新單元還用于: 根據(jù)所述拓?fù)湫畔⒑徒邮盏降牡趇數(shù)據(jù)分片修改信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中修改 所述第i數(shù)據(jù)分片; 根據(jù)所述第i數(shù)據(jù)分片修改信息對所述第i數(shù)據(jù)分片修改后,生成第一數(shù)據(jù)分片同步信 息; 將所述第一數(shù)據(jù)分片同步信息發(fā)送至所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié)點(diǎn),以 使所述第i數(shù)據(jù)分片的L-I個備份數(shù)據(jù)存儲節(jié)點(diǎn)根據(jù)所述第一數(shù)據(jù)分片同步信息進(jìn)行更新。10. 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述更新單元還用于: 若所述第m數(shù)據(jù)存儲節(jié)點(diǎn)接收到第二數(shù)據(jù)分片同步信息,則根據(jù)所述第二數(shù)據(jù)分片同 步信息,確定所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中待同步的數(shù)據(jù)分片; 根據(jù)所述第二數(shù)據(jù)分片同步信息,在所述第m數(shù)據(jù)存儲節(jié)點(diǎn)中對所述待同步的數(shù)據(jù)分 片進(jìn)行更新。11. 如權(quán)利要求8至10任一項(xiàng)所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括故障處理單元, 用于: 若所述分布式數(shù)據(jù)庫中的一個數(shù)據(jù)存儲節(jié)點(diǎn)發(fā)生故障,則確定將所述故障數(shù)據(jù)存儲節(jié) 點(diǎn)作為主存儲數(shù)據(jù)節(jié)點(diǎn)的所有數(shù)據(jù)分片; 針對所述所有數(shù)據(jù)分片中的每一個,將所述數(shù)據(jù)分片的一個備份數(shù)據(jù)存儲節(jié)點(diǎn)作為所 述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn); 更新所述拓?fù)湫畔?,并將更新后的所述拓?fù)湫畔l(fā)送至所述分布式數(shù)據(jù)庫中的所有正 常數(shù)據(jù)存儲節(jié)點(diǎn)。12. 如權(quán)利要求11所述的系統(tǒng),其特征在于,所述故障處理單元還用于: 根據(jù)所述數(shù)據(jù)分片的所有備份數(shù)據(jù)存儲節(jié)點(diǎn),確定候選數(shù)據(jù)存儲節(jié)點(diǎn),所述候選數(shù)據(jù) 存儲節(jié)點(diǎn)為完全備份所述數(shù)據(jù)分片的備份數(shù)據(jù)存儲節(jié)點(diǎn); 從所述候選數(shù)據(jù)存儲節(jié)點(diǎn)中選擇一個,作為所述數(shù)據(jù)分片的主存儲數(shù)據(jù)節(jié)點(diǎn)。13. 如權(quán)利要求11所述的系統(tǒng),其特征在于,所述故障處理單元,還用于: 若所述分布式數(shù)據(jù)庫存在備份分布式數(shù)據(jù)庫,則將更新后的所述拓?fù)湫畔l(fā)送至所述 備份分布式數(shù)據(jù)庫,以使所述備份分布式數(shù)據(jù)庫將更新后的所述拓?fù)湫畔l(fā)送至所述備份 分布式數(shù)據(jù)庫中的所有數(shù)據(jù)存儲節(jié)點(diǎn)進(jìn)行更新。14. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述故障處理單元,還用于: 若所述分布式數(shù)據(jù)庫發(fā)生故障,則判斷是否有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫; 若確定沒有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則將所述備份分布式數(shù)據(jù)庫切換為 主分布式數(shù)據(jù)庫; 若確定有數(shù)據(jù)正在寫入所述備份分布式數(shù)據(jù)庫,則等待設(shè)定時長后,將所述備份分布 式數(shù)據(jù)庫切換為主分布式數(shù)據(jù)庫。
【文檔編號】G06F11/14GK105930498SQ201610298361
【公開日】2016年9月7日
【申請日】2016年5月6日
【發(fā)明人】周家晶, 苗浩, 程朝, 王松磊, 董紅亮, 冀乃庚
【申請人】中國銀聯(lián)股份有限公司