基于rdma和htm支持的數據復制容錯方法
【專利摘要】本發(fā)明提供了一種基于RDMA和HTM支持的數據復制容錯方法,包括如下步驟:步驟1:在數據庫事務提交時將事務修改的數據提交為一個中間的版本,使得其他執(zhí)行中的事務可以檢測到未完成備份的數據;步驟2:通過RDMA進行數據備份,數據備份完成后再將其修改的數據的版本修改為一個合法的版本;步驟3:在數據庫事務的執(zhí)行過程中,通過檢測是否操作到中間版本的數據來保證這次事務執(zhí)行的正確性。與現有的技術相比,本發(fā)明可以實現基于HTM和RDMA的并發(fā)控制方法,并提供相應的系統容錯支持,同時不損失HTM和RDMA帶來的并發(fā)控制的性能優(yōu)勢。
【專利說明】
基于RDMA和HTM支持的數據復制容錯方法
技術領域
[0001 ]本發(fā)明涉及分布式計算和多核計算技術領域,具體地,涉及一種基于RDMA和HTM支持的數據復制容錯方法。
【背景技術】
[0002]分布式內存計算為處理超大規(guī)模的并發(fā)事務提供了便利,而提供可用性是分布式系統一般需求;通常系統的可用性可以通過數據的備份來完成。當事務在某個主機器完成后,事務的修改會被備份到備份機器中。這樣當某些主機器不工作的時候,備份機器可以代替主機器來完成請求。
[0003]現有使用新的硬件技術,比如硬件事務性內存HTM(Hardware Transact1nalMemory),和遠程內存直接訪問RDMA(Remote Direct Memory Access)來加速分布式事務處理的系統。這些系統相比傳統的并發(fā)控制方法具有非常好的性能,然而這些系統沒有提供容錯支持,從而目前這些系統不支持可用性。
[0004]硬件事務性內存HTM是一種硬件特性,直接由處理器提供執(zhí)行程序時對共享內存數據的并發(fā)控制,具有非常低的開銷。遠程內存直接訪問RDMA是新的網絡通信技術,直接由網卡來對遠端機器的內存進行操作,擁有非常高的吞吐量和低延遲的特性。雖然這兩個技術一起使用的時候可以非常高效的執(zhí)行數據庫事務,然而卻加大了系統容錯的難度。
[0005]這類系統通常使用HTM來提交事務對本地機器的修改,這樣可以擁有非常好的性能,卻同時給系統容錯帶來了困難。因為通常采用數據備份或寫日志來完成容錯,如果等到數據用HTM提交完再作這些操作,則有數據在這些操作完成前可能會被遠端機器用RDMA操作讀到,因此當主機器不工作的時候,備份機器可能沒有辦法恢復主機器的數據,而這些數據卻可能被某些其他服務器讀到,從而違反了數據庫事務的一致性。如果在事務提交前備份數據,則需要復雜的協議來檢測未提交的數據,這會帶來非常大的開銷。所以之前利用HTM和RDMA的數據庫事務系統都沒有提供事務數據的備份。
【發(fā)明內容】
[0006]針對現有技術中的缺陷,本發(fā)明的目的是提供一種基于RDMA和HTM支持的數據復制容錯方法。
[0007]根據本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法,包括如下步驟:
[0008]步驟1:將數據庫執(zhí)行事務前的所有數據記錄為初始版本數據;
[0009]步驟2:將數據庫事務提交時的事務修改數據作為中間版本數據;
[0010]步驟3:將事務修改數據復制至相應的備份服務器進行備份;
[0011 ]步驟4:將經過備份的事務修改數據作為合法版本數據;
[0012]步驟5:執(zhí)行事務時,若讀取到某一中間版本數據,則將該中間版本數據記錄至對應的一個讀集合中;
[0013]步驟6:檢查事務是否能提交時時,若讀集合中包含有中間版本數據,則中斷執(zhí)行對應的事務;
[0014]步驟7:定期檢查備份服務器的日志,并恢復在主服務器中執(zhí)行過的操作;
[0015]步驟8:當存在主服務器宕機時,則新的主服務器恢復原主服務器執(zhí)行過的操作,并接受用戶請求。
[0016]優(yōu)選地,所述步驟I包括:在數據庫執(zhí)行事務前,將所有數據設為初始版本數據,即將初始版本數據的版本號設為O。
[0017]優(yōu)選地,所述步驟2包括:在數據庫利用HTM提交數據的時候,將事務修改數據設為一個中間版本數據,即相對于初始版本數據,所述中間版本數據的版本號自增I。
[0018]優(yōu)選地,所述步驟3包括:將事務修改數據復制至相應的備份服務器中,即通過RDMA寫操作將事務修改數據寫到備份機服務器的日志中。
[0019]優(yōu)選地,所述步驟4包括:將經過備份的事務修改數據設置為合法版本數據,即相對于中間版本數據,所述合法版本數據的版本號自增I。
[0020]優(yōu)選地,所述步驟5包括:在事務的執(zhí)行過程中,當讀到一個中間版本數據,則將該數據記錄到一個讀集合中;其中,所述中間版本數據的版本號為奇數,且每個事務維護一個讀集合。
[0021]優(yōu)選地,所述步驟6包括:在檢查事務能否提交的過程中,讀取讀集合中數據的版本,若讀集合中包含有中間版本數據,即存在版本號為奇數的數據,則中斷執(zhí)行對應對的事務。
[0022]優(yōu)選地,所述步驟7包括:當在檢查備份服務器的日志時發(fā)現存在數據操作,則將相應的操作應用于所述備份服務器復制的數據上。
[0023]優(yōu)選地,所述步驟8包括:在備份服務器開始恢復數據時,從所有原主服務器的備份服務器的日志中讀取數據的修改操作,并在新的主服務器中執(zhí)行所述修改操作。
[0024]優(yōu)選地,使用HTM將數據提交為一個中間狀態(tài),同時事務提交時檢測是否讀到一個中間狀態(tài)的數據,這樣對未完成備份的數據不需要進行上鎖操作。與現有技術相比,本發(fā)明具有如下的有益效果:
[0025]1、本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法,利用HTM提交事務本身就需要修改數據的版本號的特性,將版本變?yōu)橐粋€中間版本,從而避免了性能開銷很大的上鎖操作。
[0026]2、本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法的數據備份操作在事務提交操作之后,使得備份的操作基本不會影響事務并發(fā)控制的性能。
[0027]3、本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法避免了很多事務執(zhí)行時候的中斷重試,事務執(zhí)行的時候可以讀到一個沒有完成備份的數據,然而事務可以不用中斷繼續(xù)執(zhí)行,只要事務提交的時候數據已經完成備份就可以通過驗證;這樣使得數據備份和事務執(zhí)行可以并發(fā)的進行而不影響正確性。
【附圖說明】
[0028]通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0029]圖1為本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法的流程圖;
[0030]圖2為本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法的拓撲圖。
【具體實施方式】
[0031]下面結合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領域的技術人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應當指出的是,對本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明的保護范圍。
[0032]根據本發(fā)明提供的基于RDMA和HTM支持的數據復制容錯方法,該方法先在數據庫事務提交時將事務修改的數據提交為一個中間的版本,使得其他執(zhí)行中的事務可以檢測到未完成備份的數據,然后通過RDMA進行數據備份,數據備份完成后再將其修改的數據的版本修改為一個合法的版本;在數據庫事務的執(zhí)行過程中,通過檢測是否操作到中間版本的數據來保證這次事務執(zhí)行的正確性;在機器宕機時,數據可以從備份機器中恢復;具體地,包括以下步驟:
[0033]步驟1:在數據庫執(zhí)行事務前將所有數據的版本設為一個初始版本;
[0034]步驟2:在事務利用HTM提交事務的時候將所修改的數據的版本變?yōu)橐粋€中間版本;
[0035]步驟3:將事務所修改的數據復制到數據的備份機器中;
[0036]步驟4:將事務所修改的數據的版本變?yōu)橐粋€合法的版本;
[0037]步驟5:在事務的執(zhí)行過程中,如果讀到一個中間版本的數據,則記錄這個數據到一個讀集合中;
[0038]步驟6:在事務的檢查過程中,如果讀集合中仍然有數據的版本是中間版本,則中斷這個事務的執(zhí)行;
[0039]步驟7:備份服務器定期檢查其日志,并恢復主服務器中執(zhí)行過的操作;
[0040]步驟8:在有主服務器宕機后,被選為新的主服務器的原備份機器從恢復主服務器的事務的操作,隨后開始接受用戶請求。
[0041]所述步驟I包括:在數據庫執(zhí)行事務前將所有數據的版本設為一個初始版本,將初始版本設為O。
[0042]所述步驟2包括:在事務利用HTM提交的時候將所修改的數據的版本變?yōu)橐粋€中間版本,特別的將數據的版本變?yōu)橹暗陌姹炯由螴。
[0043]所述步驟3包括,將事務所修改的數據復制到數據的備份機器中,使用RDMA寫操作將所有數據的操作寫到他們的備份機器的日志中。
[0044]所述步驟4包括,將事務所修改的數據變?yōu)橐粋€合法的版本,即再將其版本在其之前版本上加上I。
[0045]所述步驟5包括,在事務的執(zhí)行過程中,如果讀到一個中間版本的數據,則記錄這個數據到一個讀集合中,中間版本即數據的版本是一個奇數,每個事務維護一個讀集合。
[0046]所述步驟6包括,在事務的檢查過程中,再次讀取讀集合中數據的版本,如果其中仍然有版本號為基數的數據,則中斷事務的執(zhí)行。
[0047]所述步驟7包括,在備份服務器檢查日志發(fā)現有數據操作時,將相應的操作應用在其復制的數據上。
[0048]所述步驟8包括,在備份服務器開始恢復數據的時候,從所有原主服務器的備份服務器的日志中中讀取數據的修改的操作,在本地機器執(zhí)行這些操作。
[0049]具體地,如圖1所示,為本發(fā)明數據庫事務數據備份的具體流程,下面以一個數據有兩個備份為例,結合圖1對一下數據備份步驟進行詳細描述:
[0050]在步驟SI中,執(zhí)行事務邏輯,如果有讀寫版本號為奇數的數據,則將這個數據記錄到事務的讀集合中;
[0051]在步驟S2中,事務提交時再次讀取讀集合中的數據,并檢查是否這些數據中仍然有奇數版本的數據,如果是則返回執(zhí)行步驟SI重新執(zhí)行事務;
[0052]在步驟S3中,事務提交,事務將所有修改的數據的版本號修改為當前版本號加上 ,
[0053]在步驟S4中,事務將所修改的數據使用RDMA操作備份到備份機器中,如圖2所示,主服務器A會將事務的修改通過RDMA網絡將數據寫到備份服務器C的日志中;
[0054]在步驟S5中,事務將所有修改的數據版本號修改為當前版本加I,事務提交完成。
[0055]更進一步地,如圖2所示,本發(fā)明假設擁有多個服務器,它們通過RDMA網絡請求;其中一部分服務器作為主服務器接受用戶請求,執(zhí)行用戶指定的事務;一部分服務器作為備份服務器儲存主服務器數據,他們復制其對應的主服務器上的數據;當主服務器宕機的時候對應的備份服務器會恢復主服務器的數據接并代替原主服務器接受用戶的請求。
[0056]以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領域技術人員可以在權利要求的范圍內做出各種變形或修改,這并不影響本發(fā)明的實質內容。
【主權項】
1.一種基于RDMA和HTM支持的數據復制容錯方法,其特征在于,包括如下步驟: 步驟1:將數據庫執(zhí)行事務前的所有數據記錄為初始版本數據; 步驟2:將數據庫事務提交時的事務修改數據作為中間版本數據; 步驟3:將事務修改數據復制至相應的備份服務器進行備份; 步驟4:將經過備份的事務修改數據作為合法版本數據; 步驟5:執(zhí)行事務時,若讀取到某一中間版本數據,則將該中間版本數據記錄至對應的一個讀集合中; 步驟6:檢查事務是否能提交時時,若讀集合中包含有中間版本數據,則中斷執(zhí)行對應的事務; 步驟7:定期檢查備份服務器的日志,并恢復在主服務器中執(zhí)行過的操作; 步驟8:當存在主服務器宕機時,則新的主服務器恢復原主服務器執(zhí)行過的操作,并接受用戶請求。2.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟I包括:在數據庫執(zhí)行事務前,將所有數據設為初始版本數據,即將初始版本數據的版本號設為O。3.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟2包括:在數據庫利用HTM提交數據的時候,將事務修改數據設為一個中間版本數據,即相對于初始版本數據,所述中間版本數據的版本號自增I。4.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟3包括:將事務修改數據復制至相應的備份服務器中,即通過RDMA寫操作將事務修改數據寫到備份機服務器的日志中。5.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟4包括:將經過備份的事務修改數據設置為合法版本數據,即相對于中間版本數據,所述合法版本數據的版本號自增I。6.根據權利要求3所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟5包括:在事務的執(zhí)行過程中,當讀到一個中間版本數據,則將該數據記錄到一個讀集合中;其中,所述中間版本數據的版本號為奇數,且每個事務維護一個讀集合。7.根據權利要求6所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟6包括:在檢查事務能否提交的過程中,讀取讀集合中數據的版本,若讀集合中包含有中間版本數據,即存在版本號為奇數的數據,則中斷執(zhí)行對應對的事務。8.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟7包括:當在檢查備份服務器的日志時發(fā)現存在數據操作,則將相應的操作應用于所述備份服務器復制的數據上。9.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,所述步驟8包括:在備份服務器開始恢復數據時,從所有原主服務器的備份服務器的日志中讀取數據的修改操作,并在新的主服務器中執(zhí)行所述修改操作。10.根據權利要求1所述的基于RDMA和HTM支持的數據復制容錯方法,其特征在于,使用HTM將數據提交為一個中間狀態(tài),同時事務提交時檢測是否讀到一個中間狀態(tài)的數據,這樣對未完成備份的數據不需要進行上鎖操作。
【文檔編號】G06F17/30GK105938446SQ201610018490
【公開日】2016年9月14日
【申請日】2016年1月12日
【發(fā)明人】陳海波, 陳榕, 臧斌宇, 魏星達
【申請人】上海交通大學