專利名稱:異步復(fù)制數(shù)據(jù)的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及數(shù)據(jù)庫領(lǐng)域,并且更具體地,涉及一種數(shù)據(jù)庫異步復(fù)制數(shù)據(jù)的方法、裝置和系統(tǒng)。
背景技術(shù):
在銀行、電信等行業(yè)的需要高可用性(HA,High Availability)的系統(tǒng)中,通常會使用到數(shù)據(jù)庫雙機。在數(shù)據(jù)庫雙機中,對外提供服務(wù)的節(jié)點稱之為主機,而另外一個節(jié)點稱之為備機。一般而言,當(dāng)主機出現(xiàn)故障的時候,系統(tǒng)可以切換到備機并由備機繼續(xù)提供服務(wù)。在數(shù)據(jù)庫雙機熱備的情況下,主機和備機都在運行,主機需要將數(shù)據(jù)復(fù)制到備機。
數(shù)據(jù)庫主備機之間數(shù)據(jù)復(fù)制的方式包括同步復(fù)制、半同步復(fù)制或異步復(fù)制。在同步復(fù)制的方式下,主機會等待備機完成同一操作,這種方式能夠保證數(shù)據(jù)不丟失但是系統(tǒng)性能卻受到很大影響。在異步復(fù)制的過程中,主機會在某個端口監(jiān)聽備機的連接請求。一旦接收到備機的連接請求,就會啟動一個發(fā)送Redo (重做)日志的線程,該線程每隔一段時間去檢查主機是否寫入新的Redo日志,如果發(fā)現(xiàn)有新寫入的Redo日志,那么把這部分新寫入的Redo日志發(fā)送給備機。增量復(fù)制就是將上次復(fù)制之后新增的Redo日志發(fā)送到備機。備機得到新增的Redo日志后在備機本地執(zhí)行新增的Redo日志,從而保證了與主機之間數(shù)據(jù)的一致性。也就是說,在異步復(fù)制的方式下,主機每隔一段時間與備機做增量復(fù)制,從而保證主備機之間數(shù)據(jù)的一致性。異步復(fù)制方式的優(yōu)點在于,主機無需等待備機,所以性能會比同步復(fù)制方式高。但是,在異步復(fù)制的方式下,如果發(fā)生主機異常關(guān)閉、系統(tǒng)掉電、主機進程異?;蛑鱾錂C切換異常等主機異?,F(xiàn)象,系統(tǒng)將直接切換到備機,這樣可能導(dǎo)致部分Redo日志沒有復(fù)制到備機的情況,這時主備機之間的數(shù)據(jù)就會出現(xiàn)不一致的情況。因此,在出現(xiàn)異常的主機重新啟動后,由于部分Redo日志沒有復(fù)制到備機,主備機之間將不得不進行全量復(fù)制,即將主機上的全部Redo日志重新復(fù)制到備機。由此可見,異步復(fù)制方式的缺點在于,當(dāng)主機異常時,部分Redo日志可能無法復(fù)制到備機,從而造成數(shù)據(jù)丟失。另外,半同步復(fù)制的方式是同步復(fù)制方式與異步復(fù)制方式的結(jié)合,因此同樣存在上述數(shù)據(jù)丟失的情況。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種解決數(shù)據(jù)庫異步復(fù)制中數(shù)據(jù)丟失的方法、裝置和系統(tǒng),旨在解決在主備機之間進行數(shù)據(jù)復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。一方面,提供了一種異步復(fù)制數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括主機、備機和第三方裝置,所述主機用于存儲待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機需要異步復(fù)制到所述備機的數(shù)據(jù);在其本身運行正常時監(jiān)聽所述備機的連接請求,在接收到所述備機的連接請求時根據(jù)所述連接請求向所述備機發(fā)送所述待復(fù)制數(shù)據(jù);每隔一段時間檢查所述待復(fù)制數(shù)據(jù)的增量狀況,并將增量數(shù)據(jù)發(fā)送給所述備機,以實現(xiàn)在所述主機與所述備機之間異步復(fù)制數(shù)據(jù),所述增量數(shù)據(jù)是所述主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給所述備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù);所述第三方裝置用于在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù);將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機;所述備機用于接收所述主機發(fā)送的數(shù)據(jù);或者,接收所述第三方裝置發(fā)送的數(shù)據(jù)。另一方面,提供了一種異步復(fù)制數(shù)據(jù)的方法,該方法應(yīng)用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括主機、備機和第三方裝置,所述方法應(yīng)用于所述第三方 裝置,所述方法包括在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù);將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機。另一方面,提供了一種異步復(fù)制數(shù)據(jù)的裝置,該裝置與主機和備機構(gòu)成用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述裝置包括獲取單元,用于在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù);發(fā)送單元,用于將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機。另一方面,提供了一種異步復(fù)制數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括主機、備機和共享磁盤,所述共享磁盤用于存儲待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機需要異步復(fù)制到所述備機的數(shù)據(jù);所述主機用于在其本身運行正常時監(jiān)聽所述備機的連接請求,在接收到所述備機的連接請求時從所述共享磁盤讀取所述待復(fù)制數(shù)據(jù),并根據(jù)所述連接請求向所述備機發(fā)送所述待復(fù)制數(shù)據(jù);所述備機用于接收所述主機發(fā)送的所述待復(fù)制數(shù)據(jù);或者,從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù)。另一方面,提供了一種異步復(fù)制數(shù)據(jù)的方法,該方法應(yīng)用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括主機、備機和共享磁盤,所述方法應(yīng)用于所述備機,所述方法包括在主機運行正常時接收所述主機發(fā)送的待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述共享磁盤上存儲的需要所述主機異步復(fù)制到所述備機的數(shù)據(jù);在主機運行異常時從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù)。本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法、裝置和系統(tǒng)通過引入第三方裝置,以便在主機發(fā)生異常時,備機仍然能夠獲取主機上的增量數(shù)據(jù),并保證備機的數(shù)據(jù)與主機的數(shù)據(jù)一致,即解決在主備機之間進行數(shù)據(jù)異步復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法的流程圖。圖2示出了根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法的一個實施例。圖3是根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。圖4是根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法的流程圖。圖5示出了根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法的一個實施例。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。為了解決在主備機之間進行數(shù)據(jù)復(fù)制時由于主機異常導(dǎo)致數(shù)據(jù)丟失的問題,本發(fā)明考慮通過其他手段將主機尚未發(fā)送的數(shù)據(jù)發(fā)送到備機。例如,可以借助第三方裝置接收或保存主機尚未發(fā)送的數(shù)據(jù),之后再由該第三方裝置將尚未發(fā)送的數(shù)據(jù)發(fā)送給備機,或者由備機從第三方裝置上獲取尚未發(fā)送的數(shù)據(jù)。即,備機通過第三方裝置獲取主機尚未發(fā)送的數(shù)據(jù)。這樣的異步復(fù)制數(shù)據(jù)的系統(tǒng)通常包括主機、備機和第三方裝置。應(yīng)理解,第三方裝置并非必須是獨立于主機和備機的第三方實體裝置,而可以是設(shè)置在主機或備機上的集成
>J-U裝直。一般而言,主機用于存儲待復(fù)制數(shù)據(jù)。這樣,待復(fù)制數(shù)據(jù)是主機需要異步復(fù)制到備機的數(shù)據(jù)。在其自身運行正常時,主機監(jiān)聽備機的連接請求,在接收到備機的連接請求時根據(jù)連接請求向備機發(fā)送待復(fù)制數(shù)據(jù)。每隔一段時間,主機檢查待復(fù)制數(shù)據(jù)的增量狀況,并將增量數(shù)據(jù)發(fā)送給備機,以實現(xiàn)在主機與備機之間異步復(fù)制數(shù)據(jù)。這里,增量數(shù)據(jù)是主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù)。第三方裝置用于在主機運行異常時從主機獲取待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)是主機上存儲的需要異步復(fù)制到備機的數(shù)據(jù),然后將待復(fù)制數(shù)據(jù)發(fā)送給備機。備機用于接收主機發(fā)送的數(shù)據(jù),或者接收第三方裝置發(fā)送的數(shù)據(jù)。下面將結(jié)合圖I描述根據(jù)本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法,該方法應(yīng)用于第
三方裝置。11,在主機運行異常時,第三方裝置從主機獲取待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)為主機上存儲的需要異步復(fù)制到備機的數(shù)據(jù)。通常,在主機運行異常之后以及從主機獲取待復(fù)制數(shù)據(jù)之前,第三方裝置需要監(jiān)聽備機向主機發(fā)出的連接請求,所述監(jiān)聽所述備機向所述主機發(fā)出的連接請求。例如,第三方裝置獲取主機上用于監(jiān)聽備機連接請求的IP(Internet Protocol,網(wǎng)絡(luò)協(xié)議)地址和端口號,并在該IP地址和該端口號所對應(yīng)的端口監(jiān)聽備機的連接請求。然后,第三方裝置在監(jiān)聽到備機的連接請求時與備機建立連接。然后,第三方裝置從主機獲取待復(fù)制數(shù)據(jù)。具體地,第三方裝置獲取主機的配置參數(shù),該配置參數(shù)包括待復(fù)制數(shù)據(jù)的存儲路徑;然后,第三方裝置根據(jù)該配置參數(shù)從主機讀取待復(fù)制數(shù)據(jù)。12,第三方裝置將待復(fù)制數(shù)據(jù)發(fā)送給備機。第三方將需要復(fù)制的數(shù)據(jù)提供給備機,以使得備機的數(shù)據(jù)與主機的數(shù)據(jù)保持一致。具體而言,第三方裝置比較主機上的數(shù)據(jù)以及備機上的數(shù)據(jù),以確定待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),該增量數(shù)據(jù)是主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù);然后,第三方裝置將待復(fù)制數(shù)據(jù)的增量數(shù)據(jù)發(fā)送給備機。可選地,主機和備機均具有訪問第三方裝置的權(quán)限,第三方裝置獲取主機的全部數(shù)據(jù)。當(dāng)主機發(fā)生異常時,第三方裝置與備機建立聯(lián)系,從而比較第三方裝置的全部數(shù)據(jù)(即主機的全部數(shù)據(jù))以及備機的全部數(shù)據(jù),從而確定備機比第三方裝置少的數(shù)據(jù),即增量數(shù)據(jù)。第三方裝置將需要復(fù)制的數(shù)據(jù)(例如,增量數(shù)據(jù))提供給備機,以使得備機的數(shù)據(jù)與主機的數(shù)據(jù)保持一致。由上可知,本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法通過引入第三方裝置,在主機發(fā)生異常時,確保備機仍然能夠獲取主機上的增量數(shù)據(jù),即解決在主備機之間進行數(shù)據(jù)復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。本發(fā)明實施例提出借助第三方裝置接收或保存主機尚未發(fā)送的Redo日志,之后再由該第三方裝置將尚未發(fā)送的Redo日志發(fā)送給備機,或者由備機從第三方裝置上獲取尚未發(fā)送的Redo日志。S卩,備機通過第三方裝置獲取主機尚未發(fā)送的Redo日志。 例如,一種解決方案是通過網(wǎng)絡(luò)來傳輸Redo日志,即第三方裝置充當(dāng)主機發(fā)送增量的Redo日志??蛇x的,另外一種解決方案是備機通過訪問共享磁盤等第三方裝置獲得增量的Redo日志。當(dāng)主機的Redo日志和備機的Redo日志一致,就可以保證主機的數(shù)據(jù)與備機的數(shù)據(jù)一致。因為備機只要執(zhí)行Redo日志,就可以獲得與主機一致的數(shù)據(jù)。下面將結(jié)合圖2描述本發(fā)明的一個實施例,具體說明備機如何通過第三方裝置Hatool (High Availability Tool,高可用性工具)獲取主機尚未發(fā)送的Redo日志的實施方案。一般而言,第三方裝置Hatool配置在主機上。由于當(dāng)主機異常時,備機將切換為主機,因此可在所有節(jié)點上均配置Hatool。具體而言,在主機異常時,第三方裝置Hatool可以充當(dāng)主機與備機進行交互,以向備機發(fā)送Redo日志。一般而言,在正常情況下,主機會在某個端口監(jiān)聽備機的連接請求,一旦接受到備機的連接請求,主機就啟動一個發(fā)送Redo日志的線程。該線程每隔一段時間去檢查增量的Redo日志并發(fā)送給備機。當(dāng)主機發(fā)生異常時,第三方裝置Hatool充當(dāng)主機,在主機與備機進行通信的同一個端口監(jiān)聽備機的連接請求,一旦監(jiān)聽到備機的連接請求,發(fā)送所有的增量Redo日志。所有的增量Redo日志是指所有需要發(fā)送到備機的Redo日志,通常,一條數(shù)據(jù)庫語句(例如SQL語句)會產(chǎn)生幾條Redo日志。增量Redo日志是主機上的Redo日志相對于備機上的Redo日志多出的那部分。由于第三方裝置Hatool發(fā)送了所有的增量Redo日志,這樣在發(fā)生異常的主機重啟之后,主機無需進行全量Redo日志復(fù)制,即無需將主機上全部的Redo重新復(fù)制到備機上。如圖2所示,第三方裝置Hatool啟動之后的工作流程如下詳述第一步,第三方裝置Hatool獲取主機的配置參數(shù),例如Redo日志的存儲路徑等。第二步,為了避免與主機的服務(wù)進程相沖突,創(chuàng)建鎖文件,以保證在第三方裝置Hatool運行時,主機無法啟動。第三步,第三方裝置Hatool讀取主機上存儲有主機和備機的IP地址和端口號的持久化文件,獲取主機上進行監(jiān)聽備機的連接請求的IP地址和端口號。第四步,第三方裝置Hatool在主機上進行監(jiān)聽的IP地址和端口號所對應(yīng)的端口監(jiān)聽備機的連接請求,并在監(jiān)聽到備機的連接請求時與備機建立通信連接。在與備機建立通信連接之后,獲取備機的數(shù)據(jù)庫版本的信息,并與主機的數(shù)據(jù)庫版本的信息進行比較,如果主機和備機的數(shù)據(jù)庫版本不兼容,第三方裝置Hatool則退出。否則,第三方裝置Hatool正常運行。第五步,讀取主機上的數(shù)據(jù)庫控制文件,從該數(shù)據(jù)庫控制文件中獲取Redo日志的文件信息,并且從備機上獲取Redo日志的文件信息,將兩個Redo日志的文件信息進行比較,從而將主機上所有的增量Redo日志發(fā)送到備機。由此可確保所有的增量Redo日志都會被發(fā)送到備機,而不存在遺漏的情況。第六步,當(dāng)所有的增量Redo日志發(fā)送完成后,自動退出,并刪除啟動時生成的鎖文件。
·
以上就是在主機異常時,第三方裝置Hatool與備機連接并完成拉平Redo日志的全過程。在實際應(yīng)用中,可以使用雙機腳本來控制第三方裝置Hatool的啟動。例如,當(dāng)發(fā)生主機與備機之間的雙機切換時,備機使用雙機腳本檢測主機的狀態(tài),如果發(fā)現(xiàn)主機異常,則備機使用腳本啟動第三方裝置Hatool。第三方裝置Hatool退出后,將備機升級為主機。以下將結(jié)合圖3描述上述異步復(fù)制數(shù)據(jù)的第三方裝置。該第三方裝置與主機和備機構(gòu)成用于異步復(fù)制數(shù)據(jù)的系統(tǒng),該第三方裝置可以是設(shè)置在主機或備機上。如圖3所示,第三方裝置30包括獲取單元31和發(fā)送單元32。其中,獲取單元31用于在主機運行異常時從主機獲取待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)為主機上存儲的需要異步復(fù)制到備機的數(shù)據(jù)。發(fā)送單元32用于將該待復(fù)制數(shù)據(jù)發(fā)送給備機。進一步地,獲取單元31可以包括參數(shù)獲取模塊311和數(shù)據(jù)讀取模塊312。其中,參數(shù)獲取模塊311用于獲取主機的配置參數(shù),該配置參數(shù)包括待復(fù)制數(shù)據(jù)的存儲路徑;數(shù)據(jù)讀取模塊312用于根據(jù)該配置參數(shù)從主機讀取該待復(fù)制數(shù)據(jù)。進一步地,發(fā)送單元32可以包括增量確定模塊321和數(shù)據(jù)發(fā)送模塊322。其中,增量確定模塊321用于比較主機上的數(shù)據(jù)以及備機上的數(shù)據(jù),以確定該待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),該增量數(shù)據(jù)是主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊322用于將待復(fù)制數(shù)據(jù)的增量數(shù)據(jù)發(fā)送給備機??蛇x地,第三方裝置30還可以包括監(jiān)聽單元33和連接單元34。其中,監(jiān)聽單元33用于在主機運行異常之后以及從主機獲取待復(fù)制數(shù)據(jù)之前,監(jiān)聽備機向主機發(fā)出的連接請求。連接單元34用于在監(jiān)聽到所述連接請求時與備機建立連接。進一步地,監(jiān)聽單元33可以包括獲取模塊331和監(jiān)聽模塊332。獲取模塊331用于獲取主機的用于監(jiān)聽備機連接請求的IP地址和端口號;監(jiān)聽模塊332用于在上述IP地址和端口號所對應(yīng)的端口監(jiān)聽備機的連接請求。由上可知,本發(fā)明實施例的第三方裝置在主機發(fā)生異常時,確保備機仍然能夠獲取主機上的增量數(shù)據(jù),即解決在主備機之間進行數(shù)據(jù)復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。本發(fā)明另一實施例也描述了異步復(fù)制數(shù)據(jù)的系統(tǒng)。該系統(tǒng)包括主機、備機和共享磁盤。具體地,共享磁盤用于存儲待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)是主機需要異步復(fù)制到備機的數(shù)據(jù);主機用于在其本身運行正常時監(jiān)聽備機的連接請求,在接收到備機的連接請求時從共享磁盤讀取待復(fù)制數(shù)據(jù),并根據(jù)所述連接請求向備機發(fā)送該待復(fù)制數(shù)據(jù);備機用于接收主機發(fā)送的待復(fù)制數(shù)據(jù),或者從共享磁盤上獲取待復(fù)制數(shù)據(jù)。下面將結(jié)合圖4描述應(yīng)用于上述異步復(fù)制數(shù)據(jù)的系統(tǒng)的異步復(fù)制數(shù)據(jù)的方法。該方法包括以下步驟。41,在主機運行正常時,備機接收主機發(fā)送的待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)為共享磁盤上存儲的需要主機異步復(fù)制到備機的數(shù)據(jù)。42,在主機運行異常時,備機從共享磁盤上獲取該待復(fù)制數(shù)據(jù)。例如,在主機運行異常時,備機從共享磁盤上獲取待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),該增量數(shù)據(jù)為共享磁盤上存儲的待復(fù)制數(shù)據(jù)相比于備機從主機接收到的待復(fù)制數(shù)據(jù)增加的數(shù)據(jù)。具體而言,主機和備機都具有訪問共享磁盤的權(quán)限。在正常情況下,主機訪問共享 磁盤的Redo日志。也就是說,主機與共享磁盤的Redo日志是一致的。當(dāng)主機異常時,共享磁盤掛到備機上,備機從共享磁盤獲取未同步的Redo日志,這樣也能達到解決備機數(shù)據(jù)丟失的問題。參見圖5,主機異常后,共享磁盤掛到備機上。共享磁盤的位置通常是主備機都能訪問的共享位置,比如共享磁陣。備機的數(shù)據(jù)庫對比自身的Redo日志和共享磁盤上的Redo日志,通過比對就可以發(fā)現(xiàn)備機比共享磁盤少的Redo日志,這部分?jǐn)?shù)據(jù)就是需要復(fù)制的增量數(shù)據(jù)。然后,備機讀取上述增量Redo日志。由上可知,本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法由于引入第三方裝置,在主機發(fā)生異常時,確保備機仍然能夠獲取主機上的增量數(shù)據(jù),即解決在主備機之間進行數(shù)據(jù)復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準(zhǔn)。
權(quán)利要求
1.一種異步復(fù)制數(shù)據(jù)的系統(tǒng),其特征在于,所述系統(tǒng)包括主機、備機和第三方裝置,其中 所述主機用于存儲待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機需要異步復(fù)制到所述備機的數(shù)據(jù);在其本身運行正常時監(jiān)聽所述備機的連接請求,在接收到所述備機的連接請求時根據(jù)所述連接請求向所述備機發(fā)送所述待復(fù)制數(shù)據(jù);每隔一段時間檢查所述待復(fù)制數(shù)據(jù)的增量狀況,并將增量數(shù)據(jù)發(fā)送給所述備機,以實現(xiàn)在所述主機與所述備機之間異步復(fù)制數(shù)據(jù),所述增量數(shù)據(jù)是所述主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給所述備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù); 所述第三方裝置用于在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù);將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機; 所述備機用于接收所述主機發(fā)送的數(shù)據(jù);或者,接收所述第三方裝置發(fā)送的數(shù)據(jù)。
2.一種異步復(fù)制數(shù)據(jù)的方法,其特征在于,所述方法應(yīng)用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括主機、備機和第三方裝置,所述方法應(yīng)用于所述第三方裝置,所述方法包括 在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù); 將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從所述主機獲取待復(fù)制數(shù)據(jù),具體包括 獲取所述主機的配置參數(shù),所述配置參數(shù)包括所述待復(fù)制數(shù)據(jù)的存儲路徑; 根據(jù)所述配置參數(shù)從所述主機讀取所述待復(fù)制數(shù)據(jù)。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機,具體包括 比較所述主機上的數(shù)據(jù)以及所述備機上的數(shù)據(jù),以確定所述待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),所述增量數(shù)據(jù)是所述主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給所述備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù); 將所述待復(fù)制數(shù)據(jù)的增量數(shù)據(jù)發(fā)送給所述備機。
5.根據(jù)權(quán)利要求2至4中任一項所述的方法,其特征在于,在所述主機運行異常之后,所述從所述主機獲取待復(fù)制數(shù)據(jù)之前,所述方法還包括 監(jiān)聽所述備機向所述主機發(fā)出的連接請求; 在監(jiān)聽到所述連接請求時與所述備機建立連接。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述監(jiān)聽所述備機向所述主機發(fā)出的連接請求,具體包括 獲取所述主機的用于監(jiān)聽所述備機連接請求的IP地址和端口號; 在所述IP地址和所述端口號所對應(yīng)的端口監(jiān)聽所述備機的連接請求。
7.一種異步復(fù)制數(shù)據(jù)的裝置,其特征在于,所述裝置與主機和備機構(gòu)成用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述裝置包括 獲取單元,用于在主機運行異常時從所述主機獲取待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述主機上存儲的需要異步復(fù)制到所述備機的數(shù)據(jù);發(fā)送單元,用于將所述待復(fù)制數(shù)據(jù)發(fā)送給所述備機。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述獲取單元包括 參數(shù)獲取模塊,用于獲取所述主機的配置參數(shù),所述配置參數(shù)包括所述待復(fù)制數(shù)據(jù)的存儲路徑; 數(shù)據(jù)讀取模塊,用于根據(jù)所述配置參數(shù)從所述主機讀取所述待復(fù)制數(shù)據(jù)。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述發(fā)送單元包括 增量確定模塊,用于比較所述主機上的數(shù)據(jù)以及所述備機上的數(shù)據(jù),以確定所述待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),所述增量數(shù)據(jù)是所述主機上當(dāng)前存儲的待復(fù)制數(shù)據(jù)與已經(jīng)發(fā)送給所述備機的待復(fù)制數(shù)據(jù)相比增加的數(shù)據(jù); 數(shù)據(jù)發(fā)送模塊,用于將所述待復(fù)制數(shù)據(jù)的增量數(shù)據(jù)發(fā)送給所述備機。
10.根據(jù)權(quán)利要求7至9中任一項所述的裝置,其特征在于,還包括 監(jiān)聽單元,用于在所述主機運行異常之后,所述從所述主機獲取待復(fù)制數(shù)據(jù)之前,監(jiān)聽所述備機向所述主機發(fā)出的連接請求; 連接單元,用于在監(jiān)聽到所述連接請求時與所述備機建立連接。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述監(jiān)聽單元包括 獲取模塊,用于獲取所述主機的用于監(jiān)聽所述備機連接請求的IP地址和端口號; 監(jiān)聽模塊,用于在所述IP地址和所述端口號所對應(yīng)的端口監(jiān)聽所述備機的連接請求。
12.—種異步復(fù)制數(shù)據(jù)的系統(tǒng),其特征在于,所述系統(tǒng)包括主機、備機和共享磁盤,其中 所述共享磁盤用于存儲待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)是所述主機需要異步復(fù)制到所述備機的數(shù)據(jù); 所述主機用于在其本身運行正常時監(jiān)聽所述備機的連接請求,在接收到所述備機的連接請求時從所述共享磁盤讀取所述待復(fù)制數(shù)據(jù),并根據(jù)所述連接請求向所述備機發(fā)送所述待復(fù)制數(shù)據(jù); 所述備機用于接收所述主機發(fā)送的所述待復(fù)制數(shù)據(jù);或者,從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù)。
13.一種異步復(fù)制數(shù)據(jù)的方法,其特征在于,所述方法應(yīng)用于異步復(fù)制數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括主機、備機和共享磁盤,所述方法應(yīng)用于所述備機,所述方法包括 在主機運行正常時接收所述主機發(fā)送的待復(fù)制數(shù)據(jù),所述待復(fù)制數(shù)據(jù)為所述共享磁盤上存儲的需要所述主機異步復(fù)制到所述備機的數(shù)據(jù); 在主機運行異常時從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述在主機運行異常時從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù),具體包括 在所述主機運行異常時從所述共享磁盤上獲取所述待復(fù)制數(shù)據(jù)的增量數(shù)據(jù),所述增量數(shù)據(jù)為所述共享磁盤上存儲的待復(fù)制數(shù)據(jù)相比于從所述主機接收到的待復(fù)制數(shù)據(jù)增加的數(shù)據(jù)。
全文摘要
本發(fā)明實施例提供了異步復(fù)制數(shù)據(jù)的方法、裝置和系統(tǒng)。該方法應(yīng)用于異步復(fù)制數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括主機、備機和第三方裝置,該方法應(yīng)用于第三方裝置,方法包括在主機運行異常時從主機獲取待復(fù)制數(shù)據(jù),該待復(fù)制數(shù)據(jù)為主機上存儲的需要異步復(fù)制到備機的數(shù)據(jù);將該待復(fù)制數(shù)據(jù)發(fā)送給備機。本發(fā)明實施例的異步復(fù)制數(shù)據(jù)的方法、裝置和系統(tǒng)通過引入第三方裝置,以便在主機發(fā)生異常時,備機仍然能夠獲取主機上的增量數(shù)據(jù),并保證備機的數(shù)據(jù)與主機的數(shù)據(jù)一致,即解決在主備機之間進行數(shù)據(jù)異步復(fù)制時由于主機異常導(dǎo)致的數(shù)據(jù)丟失的問題。
文檔編號G06F17/30GK102708150SQ20121010619
公開日2012年10月3日 申請日期2012年4月12日 優(yōu)先權(quán)日2012年4月12日
發(fā)明者哈瑞·巴布, 謝銳, 高飛 申請人:華為技術(shù)有限公司