本發(fā)明屬于數(shù)據(jù)庫擴展技術領域,尤其涉及一種動態(tài)擴展集群服務器的方法及裝置。
背景技術:
服務器集群用于將多個服務器集中起來一起進行同一種服務,每個服務器構成集群的一個節(jié)點,從客戶端角度來看可以將服務器集群認為是只有一個向外提供服務的機器。服務器集群可以利用多個服務器節(jié)點進行并行處理,從而獲得很高的處理速度,也可以利用多個服務器節(jié)點互為冗余,從而使得任何一個節(jié)點發(fā)生故障時不影響整個集群系統(tǒng)的正常運行。
在數(shù)據(jù)庫服務器集群中,往往利用集群中的多個服務器節(jié)點進行大批量數(shù)據(jù)庫請求任務的并行處理,在因數(shù)據(jù)庫壓力大等原因需擴展數(shù)據(jù)庫服務器的情況下,現(xiàn)有技術中,一般會首先停掉集群中各服務器節(jié)點,在停掉機器的前提下,再將集群中既有服務器節(jié)點中的數(shù)據(jù)庫內(nèi)容拷貝至新增節(jié)點,從而使得新增節(jié)點具備集群的數(shù)據(jù)庫服務所需的數(shù)據(jù)基礎,進而實現(xiàn)了集群中數(shù)據(jù)庫服務器的擴展。
然而,現(xiàn)有技術的數(shù)據(jù)庫擴展方式在進行數(shù)據(jù)庫擴展時,因需停掉集群中各既有服務器節(jié)點,從而會中斷集群中各既有服務器節(jié)點的服務,進而降低了集群的數(shù)據(jù)庫服務質(zhì)量。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種動態(tài)擴展集群服務器的方法及裝置,旨在實現(xiàn)在不影響、不中斷集群中各服務器節(jié)點當前服務狀態(tài)的前提下,完成集群服務器的動態(tài)擴展。
為此,本發(fā)明公開如下技術方案:
一種動態(tài)擴展集群服務器的方法,所述集群包括多個數(shù)據(jù)庫服務器,各個數(shù)據(jù)庫服務器存儲的數(shù)據(jù)庫內(nèi)容保持一致;所述方法包括:
在獲得擴展指令時,從所述集群中確定出作為數(shù)據(jù)源的目標服務器;
將目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器;其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù);
在完成拷貝后,若在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi),所述集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)發(fā)生更新,則獲得所述時間段內(nèi)集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息;
依據(jù)所述數(shù)據(jù)庫數(shù)據(jù)更新信息,對所述新增服務器的拷貝數(shù)據(jù)進行更新,以使得所述新增服務器與所述集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。
上述方法,優(yōu)選的,所述從所述集群中確定出作為數(shù)據(jù)源的目標服務器,包括:
從所述集群包括的各服務器中選取出任一服務器為目標服務器。
上述方法,優(yōu)選的,所述集群中的各個已有服務器基于已構建的通信連接進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,以使得各服務器的數(shù)據(jù)庫內(nèi)容保持一致;其中,在各服務器進行數(shù)據(jù)的同步更新時,各服務器維護同步記錄,所述同步記錄包括數(shù)據(jù)庫的每次同步更新事件所對應的更新信息;
則所述獲得拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi),所述數(shù)據(jù)庫服務器集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息,包括:
基于所述集群中任一已有服務器的同步記錄,獲得在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)集群中各已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息。
上述方法,優(yōu)選的,還包括:
當新增服務器進行數(shù)據(jù)庫數(shù)據(jù)更新時,向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息,進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且新增服務器在完成數(shù)據(jù)更新時,維護同步記錄。
上述方法,優(yōu)選的,還包括:
當新增服務器接收到集群中其他任一服務器推送的同步更新指示信息時,基于接收的同步更新指示信息對新增服務器中的數(shù)據(jù)庫內(nèi)容進行同步更新,并維護同步記錄;
其中,所述更新指示信息為所述任一服務器在進行數(shù)據(jù)庫數(shù)據(jù)更新時所推送的信息。
一種動態(tài)擴展集群服務器的裝置,所述集群包括多個數(shù)據(jù)庫服務器,各個數(shù)據(jù)庫服務器存儲的數(shù)據(jù)庫內(nèi)容保持一致;所述裝置包括:
確定單元,用于在獲得擴展指令時,從所述集群中確定出作為數(shù)據(jù)源的目標服務器;
拷貝單元,用于將所述目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器;其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù);
獲取單元,用于在完成拷貝后,若在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi),所述集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)發(fā)生更新,則獲得所述時間段內(nèi)集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息;
更新單元,用于依據(jù)所述數(shù)據(jù)庫數(shù)據(jù)更新信息,對所述新增服務器的拷貝數(shù)據(jù)進行更新,以使得所述新增服務器與所述集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。
上述裝置,優(yōu)選的,所述確定單元,進一步用于:
從所述集群包括的各服務器中選取出任一服務器為目標服務器。
上述裝置,優(yōu)選的,所述集群中的各個已有服務器基于已構建的通信連接進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,以使得各服務器的數(shù)據(jù)庫內(nèi)容保持一致;其中,在各服務器進行數(shù)據(jù)的同步更新時,各服務器維持同步記錄,所述同步記錄包括數(shù)據(jù)庫的每次同步更新事件所對應的更新信息;
則所述獲取單元,進一步用于:
基于所述集群中任一已有服務器的同步記錄,獲得在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)集群中各已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息。
上述裝置,優(yōu)選的,還包括:
推送單元,用于在新增服務器進行數(shù)據(jù)庫數(shù)據(jù)更新時,向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且新增服務器在完成數(shù)據(jù)更新時,維護同步記錄。
上述裝置,優(yōu)選的,還包括:
同步處理單元,用于在新增服務器接收到集群中其他任一服務器推送的同步更新指示信息時,基于接收的同步更新信息對新增服務器中的數(shù)據(jù)庫內(nèi)容進行同步更新,并維護同步記錄;
其中,所述同步更新指示信息為所述任一服務器在進行數(shù)據(jù)庫數(shù)據(jù)更新時所推送的信息。
由以上方案可知,本發(fā)明提供的動態(tài)擴展集群服務器的方法及裝置,在獲得擴展指令時,從服務器集群(集群中各服務器的數(shù)據(jù)庫內(nèi)容一致)中確定出作為數(shù)據(jù)源的目標服務器,將目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器,其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù);并在完成拷貝后,獲得拷貝起始時刻至拷貝結(jié)束時刻集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息,以及依據(jù)該數(shù)據(jù)庫數(shù)據(jù)更新信息,對新增服務器的拷貝數(shù)據(jù)進行更新,以使得新增服務器與集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。由此可見,本發(fā)明實現(xiàn)了一種在不影響、不中斷集群中各服務器節(jié)點當前服務狀態(tài)的前提下,動態(tài)擴展集群中服務器節(jié)點的方案,與現(xiàn)有技術相比,可明顯提升集群的數(shù)據(jù)庫服務質(zhì)量。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1是本發(fā)明實施例一提供的動態(tài)擴展集群服務器的方法流程圖;
圖2是本發(fā)明實施例二提供的動態(tài)擴展集群服務器的方法流程圖;
圖3是本發(fā)明實施例三提供的動態(tài)擴展集群服務器的方法流程圖;
圖4是-圖6是本發(fā)明實施例四提供的動態(tài)擴展集群服務器的裝置的結(jié)構示意圖。
具體實施方式
為了引用和清楚起見,下文中使用的技術名詞、簡寫或縮寫總結(jié)解釋如下:
事務:對數(shù)據(jù)庫的一般操作,客戶端新建一個和數(shù)據(jù)庫的連接,開啟事務,執(zhí)行增加、修改、刪除、查詢類操作,提交事務,這一系列操作稱為一個事務。
galera:基于mysql的一個修改數(shù)據(jù)庫,其中,mysql為一種開源數(shù)據(jù)庫。
wsapi:writesetapi的簡稱,galera的數(shù)據(jù)通信方式。
galera集群:多個相互之間可通信的galera數(shù)據(jù)庫。下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
本發(fā)明實施例一提供一種動態(tài)擴展集群服務器的方法,以實現(xiàn)在不影響、不中斷集群中各服務器節(jié)點當前服務狀態(tài)的前提下,動態(tài)擴展集群的服務器節(jié)點,提升集群的數(shù)據(jù)庫服務質(zhì)量。參考圖1示出的動態(tài)擴展集群服務器的方法流程圖,該方法可以包括以下步驟:
步驟101、在獲得擴展指令時,從所述集群中確定出作為數(shù)據(jù)源的目標服務器。
所述集群具體為數(shù)據(jù)庫服務器集群,包括多個數(shù)據(jù)庫服務器,各個數(shù)據(jù)庫服務器存儲的數(shù)據(jù)庫內(nèi)容保持一致;具體地,所述集群中的各個已有服務器基于已構建的通信連接進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,以使得各服務器的數(shù)據(jù)庫內(nèi)容保持一致;且在各服務器進行數(shù)據(jù)的同步更新時,各服務器均各自維護相應的同步記錄,所述同步記錄包括每次數(shù)據(jù)更新所對應的更新信息。
以galera集群為例,集群中包括的各個galera數(shù)據(jù)庫服務器可基于wsapi來建立通信連接實現(xiàn)通信,各galera數(shù)據(jù)庫服務器在初始時具有相同的數(shù)據(jù)庫數(shù)據(jù),且在集群運行過程中,當集群的任一服務器執(zhí)行了數(shù)據(jù)庫更新操作,一般為基于客戶端請求的事務性更新操作,則負責執(zhí)行事務的當前服務器侵入到所執(zhí)行的事務中(不影響事務執(zhí)行過程),獲得事務對應的數(shù)據(jù)更改指令,并將獲得的數(shù)據(jù)更改指令作為同步更新指示信息通過wsapi連接推送至集群中其他服務器,從而可使得其他服務器根據(jù)該同步更新指示信息中的數(shù)據(jù)更新指令進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,進而確保各服務器的數(shù)據(jù)庫內(nèi)容一致,使得各服務器能夠具備同等的數(shù)據(jù)庫服務能力。
且各服務器中維護有相應的同步記錄,各服務器維護的同步記錄中包含數(shù)據(jù)庫的每次同步更新事件所對應的更新信息,更具體地,可包括每次同步更新事件所對應的唯一標識,如包括事務同步事件的唯一標識等,從而使得后續(xù)可基于該同步記錄中記載的標識信息對集群中各服務器同步執(zhí)行的歷史事務事件進行溯源,進而進行相應應用,如進行事務回滾等。
本步驟中所獲得的所述擴展指令,具體用于指示在集群中進行集群節(jié)點即數(shù)據(jù)庫服務器節(jié)點的動態(tài)擴展,實際應用中,可將待擴展進集群的新增服務器作為本申請方案的執(zhí)行主體。
所述擴展指令,可以是相關人員在對待擴展至集群的新增服務器進行一些必要設置后,如對所述新增服務器進行防火墻,文件路徑等設置后,由所述相關人員手動觸發(fā)的指令,也可以是在相關人員對所述新增服務器完成所需設置后,由所述新增服務器自動觸發(fā)的指令。
在獲得擴展指令后,為實現(xiàn)將所述新增服務器擴展至服務器集群,使得所述新增服務器在集群中具備與其他服務器同等的數(shù)據(jù)庫服務能力,需確保所述新增服務器中具有與集群中其他服務器相一致的數(shù)據(jù)庫內(nèi)容。
基于此,本步驟中,當獲得擴展指令時,從集群中包括的各個已有服務器中選取出一目標服務器,該目標服務器具體作為向新增服務器進行數(shù)據(jù)拷貝的數(shù)據(jù)源。其中,由于集群的各數(shù)據(jù)庫服務器中具備相互一致的數(shù)據(jù)庫內(nèi)容,從而可從集群中選取出任一服務器作為所述目標服務器。
步驟102、將所述目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器;其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù)。
在從集群的已有各服務器中確定出作為數(shù)據(jù)源的目標服務器后,可將該目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至待擴展至集群的所述新增服務器,其中,需要說明的是,所拷貝的數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù)。而對于拷貝過程中在目標數(shù)據(jù)庫上所產(chǎn)生的數(shù)據(jù)更新,則通過后續(xù)步驟將其延遲更新至新增服務器。
本發(fā)明中,在向新增服務器進行數(shù)據(jù)拷貝時,不需打斷作為數(shù)據(jù)源的所述目標服務器以及集群中其他各個已有服務器的當前工作狀態(tài),不影響集群中各服務器的正常運行。
步驟103、在完成拷貝后,若在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi),所述集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)發(fā)生更新,則獲得所述時間段內(nèi)集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息。
由于拷貝過程中,集群中包括所述目標服務器在內(nèi)的各已有服務器正常向外提供數(shù)據(jù)庫服務,從而,不可避免地,在數(shù)據(jù)拷貝過程中,集群中各個已有服務器可能發(fā)生了數(shù)據(jù)庫內(nèi)容的同步更新,基于此,為使得新增服務器與集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致,在完成拷貝后,需獲得集群中各個已有服務器在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)的數(shù)據(jù)庫數(shù)據(jù)更新信息,以實現(xiàn)為新增服務器中拷貝數(shù)據(jù)的更新(還原拷貝過程中的數(shù)據(jù)修改)提供支持。
本實施例中,當拷貝結(jié)束時,所述新增服務器與集群中各個已有服務器建立通信連接,例如對于galera集群,當完成拷貝時,新增的galera數(shù)據(jù)庫服務器與集群中其他已有的各個galera數(shù)據(jù)庫服務器進行wsapi連接的構建,以使得能夠支持后續(xù)新增服務器與集群中各已有服務器間的數(shù)據(jù)同步。
其中,在完成拷貝后,可基于集群中任一已有服務器的同步記錄,獲知在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)集群中各已有服務器是否發(fā)生了同步數(shù)據(jù)更新,具體而言,若任一已有服務器的同步記錄中在該時間段內(nèi)存在相應記錄數(shù)據(jù),則表示在拷貝起始時刻至拷貝結(jié)束時刻的該時間段內(nèi),集群中各服務器的數(shù)據(jù)庫內(nèi)容發(fā)生了同步更新,在此情況下,可進一步從所述任一服務器的同步記錄中獲得該段時間段內(nèi)的同步記錄數(shù)據(jù),進而根據(jù)該同步記錄數(shù)據(jù)獲得數(shù)據(jù)庫數(shù)據(jù)更新信息,例如獲得數(shù)據(jù)庫在該時間段內(nèi)所執(zhí)行的事務操作等等。
反之,若所述任一已有服務器的同步記錄中在該時間段內(nèi)不存在任何記錄數(shù)據(jù),則表示在拷貝起始時刻至拷貝結(jié)束時刻的該時間段內(nèi),集群中各服務器的數(shù)據(jù)庫內(nèi)容未發(fā)生同步更新,從而無需對新增服務器中的拷貝數(shù)據(jù)執(zhí)行針對該時間段的還原數(shù)據(jù)修改操作。
步驟104、依據(jù)所述數(shù)據(jù)庫數(shù)據(jù)更新信息,對所述新增服務器的拷貝數(shù)據(jù)進行更新,以使得所述新增服務器與所述集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。
在獲得集群中各已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息后,可基于該數(shù)據(jù)庫數(shù)據(jù)更新信息,對新增服務器中的拷貝數(shù)據(jù)進行相應更新,使得在新增服務器中還原拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)未能同步的數(shù)據(jù)修改。例如,根據(jù)集群中各已有服務器在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)所執(zhí)行的同步事務操作,獲得相應事務指令,對新增服務器中的已拷貝數(shù)據(jù)進行相應的延時更新(即新增服務器未能在拷貝過程中與其他已有服務器進行同步數(shù)據(jù)更新),以使得所述新增服務器與所述集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。從而使得新增服務器能夠與集群中各已有服務器提供同等的數(shù)據(jù)庫服務能力,實現(xiàn)了集群中數(shù)據(jù)庫服務器的擴展。
由以上方案可知,本發(fā)明提供的動態(tài)擴展集群服務器的方法,在獲得擴展指令時,從服務器集群(集群中各服務器的數(shù)據(jù)庫內(nèi)容一致)中確定出作為數(shù)據(jù)源的目標服務器,將目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器,其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù);并在完成拷貝后,獲得拷貝起始時刻至拷貝結(jié)束時刻集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息,以及依據(jù)該數(shù)據(jù)庫數(shù)據(jù)更新信息,對新增服務器的拷貝數(shù)據(jù)進行更新,以使得新增服務器與集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。由此可見,本發(fā)明實現(xiàn)了一種在不影響、不中斷集群中各服務器節(jié)點當前服務狀態(tài)的前提下,動態(tài)擴展集群中服務器節(jié)點的方案,與現(xiàn)有技術相比,可明顯提升集群的數(shù)據(jù)庫服務質(zhì)量。
實施例二
本發(fā)明實施例二中,參考圖2示出的一種動態(tài)擴展集群服務器的方法流程圖,所述方法還可以包括:
步驟105、當新增服務器接收到集群中其他任一服務器推送的同步更新指示信息時,基于接收的同步更新指示信息對新增服務器中的數(shù)據(jù)庫內(nèi)容進行同步更新,并維護同步記錄;其中,所述更新指示信息為所述任一服務器在進行數(shù)據(jù)庫數(shù)據(jù)更新時所推送的信息。
在新增服務器拷貝結(jié)束并建立與集群中各已有服務器間的通信連接后,所述新增服務器即可接收到集群中各已有服務器在進行數(shù)據(jù)庫內(nèi)容更新時,所推送的同步更新指示信息,基于此,當新增服務器還原拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi)未能同步的數(shù)據(jù)修改后,即可基于所接收到的集群中其他任一服務器所推送的同步更新指示信息,對新增服務器中的數(shù)據(jù)庫進行同步更新,并維護同步記錄,如在在同步記錄中添加每次同步更新事件所對應的唯一標識等。
此處需要說明是,如果在還原數(shù)據(jù)修改的過程中(新增服務器還原拷貝起始時刻至拷貝結(jié)束時刻內(nèi)未能同步的數(shù)據(jù)修改),新增服務器有接收到集群中其他服務器推送的同步更新指示信息,則新增服務器具體在完成還原任務后,再基于在該時間段內(nèi)接收的同步更新指示信息,進行數(shù)據(jù)庫數(shù)據(jù)的延遲式修改更新。直至新增服務器能夠完全融入集群中,與集群中各服務器進行同步的數(shù)據(jù)更新,并具有與各服務器同等的數(shù)據(jù)庫服務能力。
實施例三
本發(fā)明實施例三中,參考圖3示出的一種動態(tài)擴展集群服務器的方法流程圖,所述方法還可以包括:
步驟106、當新增服務器進行數(shù)據(jù)庫數(shù)據(jù)更新時,向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息,進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且新增服務器在完成數(shù)據(jù)更新時,維護同步記錄。
在新增服務器拷貝結(jié)束并建立與集群中各已有服務器間的連接后,所述新增服務器即可接收到集群中各已有服務器在進行數(shù)據(jù)庫內(nèi)容更新時,所推送的同步更新指示信息,同時,若所述新增服務器發(fā)生了數(shù)據(jù)庫數(shù)據(jù)更新,例如,新增服務器基于客戶端請求,對數(shù)據(jù)庫執(zhí)行事務性修改操作等,則新增服務器向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息,進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且新增服務器在完成數(shù)據(jù)更新時,維護同步記錄。。
具體地,對于擴展至集群,并作為集群中一節(jié)點的新增服務器而言,當新增服務器進行數(shù)據(jù)庫數(shù)據(jù)更新時,為使得集群中所有服務器中的數(shù)據(jù)保持一致,則新增服務器需基于當前的更新事件,向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息,進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且集群中各服務器(新增服務器及其他服務器)基于所進行的數(shù)據(jù)更新事件,維護各自的同步記錄,向同步記錄中添加此次同步更新事件的相關信息。
基于本發(fā)明實施例二及實施例三的方案,可使得在集群服務器運行過程中保持新增服務器與集群中其他各服務器的數(shù)據(jù)庫內(nèi)容相互一致,進而為集群服務器運行過程中,在各服務器節(jié)點提供同等的數(shù)據(jù)庫服務能力提供了保障。
實施例四
本發(fā)明實施例四公開一種動態(tài)擴展集群服務器的裝置,參考圖4示出的一種動態(tài)擴展集群服務器的裝置的結(jié)構示意圖,所述裝置可以包括:
確定單元1,用于在獲得擴展指令時,從所述集群中確定出作為數(shù)據(jù)源的目標服務器;拷貝單元2,用于將所述目標服務器中的數(shù)據(jù)庫數(shù)據(jù)拷貝至新增服務器;其中,所拷貝數(shù)據(jù)為目標服務器在拷貝起始時刻前最后一次更新數(shù)據(jù)庫后所對應的數(shù)據(jù)庫數(shù)據(jù);獲取單元3,用于在完成拷貝后,若在拷貝起始時刻至拷貝結(jié)束時刻的時間段內(nèi),所述集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)發(fā)生更新,則獲得所述時間段內(nèi)集群中各個已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息;更新單元4,用于依據(jù)所述數(shù)據(jù)庫數(shù)據(jù)更新信息,對所述新增服務器的拷貝數(shù)據(jù)進行更新,以使得所述新增服務器與所述集群中各已有服務器的數(shù)據(jù)庫內(nèi)容保持一致。
在本發(fā)明實施例的一實施方式中,所述確定單元,進一步用于:從所述集群包括的各服務器中選取出任一服務器為目標服務器。
在本發(fā)明實施例的一實施方式中,所述獲取單元,進一步用于:基于所述集群中任一已有服務器的同步記錄,獲得在拷貝起始時刻至拷貝結(jié)束時刻時間段內(nèi)集群中各已有服務器的數(shù)據(jù)庫數(shù)據(jù)更新信息。
在本發(fā)明實施例的一實施方式中,參考圖5,所述裝置還包括:推送單元5,用于在新增服務器進行數(shù)據(jù)庫數(shù)據(jù)更新時,向集群中其他各服務器推送同步更新指示信息,以使得其他各服務器基于獲得的同步更新指示信息進行數(shù)據(jù)庫數(shù)據(jù)的同步更新,且新增服務器在完成數(shù)據(jù)更新時,維護同步記錄。
在本發(fā)明實施例的一實施方式中,參考圖5,所述裝置還包括:同步處理單元6,用于在新增服務器接收到集群中其他任一服務器推送的同步更新指示信息時,基于接收的同步更新信息對新增服務器中的數(shù)據(jù)庫內(nèi)容進行同步更新,并維護同步記錄;其中,所述同步更新指示信息為所述任一服務器在進行數(shù)據(jù)庫數(shù)據(jù)更新時所推送的信息。
此處,需要說明的是,本實施例涉及的動態(tài)擴展集群服務器的裝置的描述,與上文方法的描述是類似的,且同方法的有益效果描述,對于本發(fā)明的動態(tài)擴展集群服務器的裝置在本實施例中未披露的技術細節(jié),請參照本發(fā)明方法實施例的說明,本實施對此不再作贅述。
還需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
為了描述的方便,描述以上系統(tǒng)或裝置時以功能分為各種模塊或單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
通過以上的實施方式的描述可知,本領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本申請的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。
最后,還需要說明的是,在本文中,諸如第一、第二、第三和第四等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。