專利名稱:電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及雙機(jī)數(shù)據(jù)備份領(lǐng)域,描述了一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方 法和系統(tǒng)。
背景技術(shù):
電信網(wǎng)絡(luò)在給人們提供越來越便利的同時(shí),也變得日益龐大和復(fù)雜,配置數(shù)據(jù) 的重要性是不言而喻的。高端運(yùn)營商對電信網(wǎng)管的要求越來越高,對網(wǎng)管中斷是不可接 受的,因此,大多需要采用雙機(jī)系統(tǒng)減少系統(tǒng)的終止服務(wù)時(shí)間。在雙機(jī)數(shù)據(jù)的備份方案中,數(shù)據(jù)同步的實(shí)時(shí)性非常重要,因?yàn)殄礄C(jī)可能發(fā)生在 任何時(shí)候,如果配置數(shù)據(jù)不同步,此時(shí)發(fā)生了主機(jī)宕機(jī),備機(jī)雖然可以啟動(dòng)接管電信網(wǎng) 系統(tǒng),但由于數(shù)據(jù)的錯(cuò)誤,如果錯(cuò)誤的數(shù)據(jù)同步到設(shè)備上,會(huì)導(dǎo)致更嚴(yán)重的問題。目前的雙機(jī)方案有如下幾種1)如圖1所示,共享磁陣方案,數(shù)據(jù)庫安裝在磁陣上,兩臺(tái)主機(jī)共享數(shù)據(jù)庫, 同一時(shí)間,只有主機(jī)寫數(shù)據(jù)庫,當(dāng)主備切換后,備機(jī)接管使用數(shù)據(jù)庫,如下圖虛線表示 備機(jī)此時(shí)不操作數(shù)據(jù)庫;該方案的缺點(diǎn)在于必須配置磁陣和cluster軟件,而這些硬件和軟件設(shè)備價(jià)格昂貴。2)如圖2所示,使用兩套數(shù)據(jù)庫實(shí)例,該方案有兩臺(tái)獨(dú)立的數(shù)據(jù)庫實(shí)例,將主 機(jī)數(shù)據(jù)庫的sql日志傳送到備機(jī)數(shù)據(jù)庫上并執(zhí)行。該方案的缺點(diǎn)在于根據(jù)發(fā)明人的測試,在一定的數(shù)據(jù)入庫壓力下,數(shù)據(jù)同步 存在IOS以上的延遲,實(shí)時(shí)性差。3)如圖3所示,和方案2)類似,只是日志生成傳送的任務(wù)是應(yīng)用程序完成的, 主機(jī)的應(yīng)用程序?qū)?shù)據(jù)庫的操作記錄下來,形成sql腳本文件傳送到備機(jī),備機(jī)執(zhí)行腳 本文件,使用這種機(jī)制保持主備數(shù)據(jù)庫的一致性。該方案的缺點(diǎn)在于由于利用文本文件傳輸變化的信息,存在實(shí)時(shí)性差的問 題。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法和系統(tǒng), 以至少解決上述問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法,其 包括檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫連接發(fā)生異 常;釋放上述備機(jī)數(shù)據(jù)庫連接,并對上述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;將數(shù)據(jù)庫狀態(tài)文件從 上述主機(jī)同步到上述備機(jī),其中,上述數(shù)據(jù)庫狀態(tài)文件用于記錄上述主機(jī)的數(shù)據(jù)庫的狀 態(tài)和上述備機(jī)的數(shù)據(jù)庫的狀態(tài)。進(jìn)一步的,在將數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上述備機(jī)之后,還包括檢測到上述主機(jī)與上述備機(jī)之間的通訊恢復(fù)正常,或者,檢測到上述備機(jī)數(shù)據(jù)庫連接恢復(fù) 正常;將上述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到上述備機(jī)的數(shù)據(jù)庫中;更新上述數(shù)據(jù)庫狀態(tài) 文件,并將更新后的上述數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上述備機(jī)。進(jìn)一步的,將上述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到上述備機(jī)的數(shù)據(jù)庫中的步驟包 括比較上述主機(jī)的數(shù)據(jù)庫和上述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù);將上述主機(jī)的數(shù)據(jù)庫中的沒 有記錄在上述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到上述備機(jī)的數(shù)據(jù)庫;從上述備機(jī)的數(shù)據(jù)庫中 刪除沒有記錄在上述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)。進(jìn)一步的,將上述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到上述備機(jī)的數(shù)據(jù)庫中之前,還 包括鎖定數(shù)據(jù)庫控制模塊,用于在執(zhí)行上述同步的過程中不接受其他對上述主機(jī)的數(shù) 據(jù)庫和上述備機(jī)的數(shù)據(jù)庫的操作請求,其中,上述數(shù)據(jù)庫控制模塊用于控制上述主機(jī)的 數(shù)據(jù)庫和上述備機(jī)的數(shù)據(jù)庫。進(jìn)一步的,在將更新后的上述數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上述備機(jī)之 后,還包括接收數(shù)據(jù)庫操作請求消息;在聯(lián)機(jī)狀態(tài)下對上述主機(jī)的數(shù)據(jù)庫和上述備機(jī) 的數(shù)據(jù)庫同步執(zhí)行上述數(shù)據(jù)庫操作請求消息所請求的操作;在脫機(jī)狀態(tài)下對上述主機(jī)的 數(shù)據(jù)庫執(zhí)行上述數(shù)據(jù)庫操作請求消息所請求的操作。進(jìn)一步的,通過以下步驟之一來檢測備機(jī)數(shù)據(jù)庫連接是否發(fā)生異常包括上述 主機(jī)定時(shí)對上述備機(jī)數(shù)據(jù)庫連接進(jìn)行檢測,若上述備機(jī)數(shù)據(jù)庫連接發(fā)生異常,則檢測出 上述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;判斷所執(zhí)行的應(yīng)用程序操作是否失敗,若失敗、且上述 失敗原因?yàn)閿?shù)據(jù)庫連接異常,則檢測出上述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;或者判斷用于 控制上述主機(jī)和上述備機(jī)之間的切換和同步的主備控制模塊的心跳消息是否異常,若異 常,則上述備機(jī)數(shù)據(jù)庫連接發(fā)生異常。根據(jù)本發(fā)明的另一方面,提供了一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份系統(tǒng),包 括檢測單元,用于檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫 連接發(fā)生異常;處理單元,用于在檢測到發(fā)生異常之后,釋放上述備機(jī)數(shù)據(jù)庫連接,并 對上述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;同步單元,用于將數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上 述備機(jī),其中,上述數(shù)據(jù)庫狀態(tài)文件用于記錄上述主機(jī)的數(shù)據(jù)庫的狀態(tài)和上述備機(jī)的數(shù) 據(jù)庫的狀態(tài)。進(jìn)一步的,上述檢測單元還用于檢測到上述主機(jī)與上述備機(jī)之間的通訊恢復(fù)正 常,或者,檢測到上述備機(jī)數(shù)據(jù)庫連接恢復(fù)正常;上述同步單元還用于將上述主機(jī)的數(shù) 據(jù)庫中的數(shù)據(jù)同步到上述備機(jī)的數(shù)據(jù)庫中,并更新上述數(shù)據(jù)庫狀態(tài)文件,將更新后的上 述數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上述備機(jī)。進(jìn)一步的,還包括鎖定單元,用于在將上述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到上 述備機(jī)的數(shù)據(jù)庫中之前,鎖定數(shù)據(jù)庫控制模塊,以便在執(zhí)行上述同步的過程中不接受其 他對上述主機(jī)的數(shù)據(jù)庫和上述備機(jī)的數(shù)據(jù)庫的操作請求,其中,上述數(shù)據(jù)庫控制模塊用 于控制上述主機(jī)的數(shù)據(jù)庫和上述備機(jī)的數(shù)據(jù)庫。進(jìn)一步的,還包括接收單元,用于在將更新后的上述數(shù)據(jù)庫狀態(tài)文件從上述 主機(jī)同步到上述備機(jī)之后,接收數(shù)據(jù)庫操作請求消息;其中,上述處理單元還用于在聯(lián) 機(jī)狀態(tài)下對上述主機(jī)的數(shù)據(jù)庫和上述備機(jī)的數(shù)據(jù)庫同步執(zhí)行上述數(shù)據(jù)庫操作請求消息所 請求的操作;在脫機(jī)狀態(tài)下對上述主機(jī)的數(shù)據(jù)庫執(zhí)行上述數(shù)據(jù)庫操作請求消息所請求的操作。在本發(fā)明中,脫機(jī)過程中釋放了所述備機(jī)數(shù)據(jù)庫連接,使得備機(jī)數(shù)據(jù)庫因各種 原因連接異常時(shí),還可以對主機(jī)數(shù)據(jù)庫操作,此外,由于同步了數(shù)據(jù)庫的狀態(tài),這樣, 在系統(tǒng)恢復(fù)時(shí),系統(tǒng)可以自動(dòng)進(jìn)行數(shù)據(jù)同步,保證了數(shù)據(jù)一致性和實(shí)時(shí)性,也減少了維 護(hù)人員的勞動(dòng)強(qiáng)度。此外,在聯(lián)機(jī)狀態(tài)下,對數(shù)據(jù)庫進(jìn)行操作時(shí),本發(fā)明在對一個(gè)數(shù)據(jù) 庫操作的同時(shí)對另外一個(gè)數(shù)據(jù)庫進(jìn)行操作,保證了備份的數(shù)據(jù)一致性和實(shí)時(shí)性。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本 發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖 中圖1是根據(jù)相關(guān)技術(shù)的雙機(jī)數(shù)據(jù)備份系統(tǒng)的一種結(jié)構(gòu)示意圖;圖2是根據(jù)相關(guān)技術(shù)的雙機(jī)數(shù)據(jù)備份系統(tǒng)的另一種結(jié)構(gòu)示意圖;圖3是根據(jù)相關(guān)技術(shù)的雙機(jī)數(shù)據(jù)備份系統(tǒng)的又一種結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法的一種優(yōu)選的 流程圖;圖5是根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)的一種優(yōu)選的結(jié)構(gòu)示意圖;圖6是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)啟動(dòng)的流程圖;圖7是根據(jù)本發(fā)明實(shí)施例的脫機(jī)過程的流程圖;圖8是根據(jù)本發(fā)明實(shí)施例的聯(lián)機(jī)過程的流程圖;圖9是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫操作過程的流程圖;圖10是根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)的另一種優(yōu)選的結(jié)構(gòu)示意圖。
具體實(shí)施例方式實(shí)施例1圖4是根據(jù)本發(fā)明實(shí)施例的電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法的一種優(yōu)選的 流程圖,其包括如下步驟S402,檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫連接 發(fā)生異常;S404,釋放所述備機(jī)數(shù)據(jù)庫連接,并對所述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;S406,將數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī),其中,所述數(shù)據(jù)庫狀態(tài) 文件用于記錄所述主機(jī)的數(shù)據(jù)庫的狀態(tài)和所述備機(jī)的數(shù)據(jù)庫的狀態(tài)。優(yōu)選的,通過以下 步驟來實(shí)現(xiàn)數(shù)據(jù)庫狀態(tài)文件同步主機(jī)向備機(jī)控制模塊發(fā)送數(shù)據(jù)庫狀態(tài)更新消息,備機(jī) 收到消息后,更新數(shù)據(jù)庫狀態(tài)文件。在本優(yōu)選的實(shí)施例中,脫機(jī)過程中釋放所述備機(jī)數(shù)據(jù)庫連接,使得備機(jī)數(shù)據(jù)庫 因各種原因連接異常時(shí),還可以對主機(jī)數(shù)據(jù)庫操作,此外,由于同步了數(shù)據(jù)庫的狀態(tài), 這樣,在系統(tǒng)恢復(fù)時(shí),系統(tǒng)可以自動(dòng)進(jìn)行數(shù)據(jù)同步,保證了數(shù)據(jù)一致性和實(shí)時(shí)性,也減 少了維護(hù)人員的勞動(dòng)強(qiáng)度。優(yōu)選的,在將數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)之后,還包括檢測到所述主機(jī)與所述備機(jī)之間的通訊恢復(fù)正常,或者,檢測到所述備機(jī)數(shù)據(jù)庫連接恢復(fù)正 常;將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中;更新所述數(shù)據(jù)庫狀態(tài)文 件,并將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)。在本優(yōu)選的實(shí)施例 中,通過同步主機(jī)和備機(jī)中的數(shù)據(jù),保證了數(shù)據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中的步驟包 括比較所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù);將所述主機(jī)的數(shù)據(jù)庫中的沒 有記錄在所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到所述備機(jī)的數(shù)據(jù)庫;從所述備機(jī)的數(shù)據(jù)庫中 刪除沒有記錄在所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)。在本優(yōu)選的實(shí)施例中,將所述主機(jī)的數(shù)據(jù) 庫中的沒有記錄在所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到所述備機(jī)的數(shù)據(jù)庫可以包括以下幾 種情況1)主機(jī)的數(shù)據(jù)庫具有的數(shù)據(jù)記錄沒有保存在備機(jī)的數(shù)據(jù)庫中。在這種情況下, 主機(jī)將這些數(shù)據(jù)記錄添加到備機(jī)中;2)主機(jī)的數(shù)據(jù)庫具有與備機(jī)的數(shù)據(jù)庫相同的數(shù)據(jù)記錄,但該數(shù)據(jù)記錄的取值與 備機(jī)的數(shù)據(jù)庫不同。在這種情況下,將備機(jī)的數(shù)據(jù)庫中的這條數(shù)據(jù)記錄的取值更新為主 機(jī)的數(shù)據(jù)庫中的相應(yīng)取值。通過上述完全同步的方式,使得主機(jī)和備機(jī)中的數(shù)據(jù)完全一致,從而保證了數(shù) 據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中之前,還包 括鎖定數(shù)據(jù)庫控制模塊,用于在執(zhí)行所述同步的過程中不接受其他對所述主機(jī)的數(shù)據(jù) 庫和所述備機(jī)的數(shù)據(jù)庫的操作請求,其中,所述數(shù)據(jù)庫控制模塊用于控制所述主機(jī)的數(shù) 據(jù)庫和所述備機(jī)的數(shù)據(jù)庫。在本優(yōu)選的實(shí)施例中,通過在同步過程中限制其他的操作請 求,保證了同步過程的連續(xù)性和正確性。優(yōu)選的,在將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)之后, 還包括接收數(shù)據(jù)庫操作請求消息;在聯(lián)機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù) 據(jù)庫同步執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作;在脫機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù) 庫執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作。在本優(yōu)選的實(shí)施例中,通過同步執(zhí)行請 求操作,保證了數(shù)據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,在聯(lián)機(jī)過程中,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù) 庫中;更新所述數(shù)據(jù)庫狀態(tài)文件,并將更新后的所述數(shù)據(jù)庫狀態(tài)文件同步到所述備機(jī)。 在聯(lián)機(jī)完成之后,本系統(tǒng)可以繼續(xù)接收數(shù)據(jù)庫操作請求消息;對所述主機(jī)的數(shù)據(jù)庫和所 述備機(jī)的數(shù)據(jù)庫同步執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作;在本優(yōu)選的實(shí)施例 中,在聯(lián)機(jī)狀態(tài)下對數(shù)據(jù)庫進(jìn)行操作時(shí),對一個(gè)數(shù)據(jù)庫操作的同時(shí)對另外一個(gè)數(shù)據(jù)庫進(jìn) 行操作,保證了備份的數(shù)據(jù)一致性和實(shí)時(shí)性。在脫機(jī)過程中,清除對備機(jī)數(shù)據(jù)庫的連 接,;更新所述數(shù)據(jù)庫狀態(tài)文件。本系統(tǒng)可以繼續(xù)接收數(shù)據(jù)庫操作請求消息,對所述主 機(jī)的數(shù)據(jù)庫執(zhí)行所述數(shù)據(jù)庫操作。優(yōu)選的,通過以下步驟之一來檢測備機(jī)數(shù)據(jù)庫連接是否發(fā)生異常包括所述主 機(jī)定時(shí)對所述備機(jī)數(shù)據(jù)庫連接進(jìn)行檢測,若所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常,則檢測出所 述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;或者,判斷所執(zhí)行的應(yīng)用程序操作是否失敗,若失敗、且 所述失敗原因?yàn)閿?shù)據(jù)庫連接異常,則檢測出所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;判斷用于控制主機(jī)和備機(jī)之間的切換和同步的主備控制模塊的心跳消息是否異常,若異常,則所述 備機(jī)數(shù)據(jù)庫連接發(fā)生異常。在本優(yōu)選的實(shí)施例中,通過多種檢測步驟,增加了本發(fā)明的 適用性。實(shí)施例2圖5是根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)的一種優(yōu)選的結(jié)構(gòu)示意圖,其包 括主機(jī)上的主備控制模塊502、備機(jī)上的主備控制模塊504、數(shù)據(jù)庫控制模塊506、主 機(jī)的數(shù)據(jù)庫508和備機(jī)的數(shù)據(jù)庫510。其中,主備控制模塊502和504用于完成主機(jī)和備機(jī)切換控制和數(shù)據(jù)庫狀態(tài)同步 功能;數(shù)據(jù)庫控制模塊506用于完成雙機(jī)數(shù)據(jù)庫連接初始化、操作數(shù)據(jù)庫、備機(jī)數(shù)據(jù)庫 連機(jī)、備機(jī)數(shù)據(jù)庫脫機(jī)等。如圖5所示,主備控制模塊502與504之間交互的消息是心跳消息msgl和數(shù)據(jù) 庫狀態(tài)同步消息msg2 ;主備控制模塊502和數(shù)據(jù)庫控制模塊506之間的消息是數(shù)據(jù)庫狀 態(tài)保存消息msg3、數(shù)據(jù)庫脫機(jī)消息msg4、數(shù)據(jù)庫聯(lián)機(jī)消息msg5?;趫D5所示的雙機(jī)數(shù)據(jù)備份系統(tǒng),以下結(jié)合附圖來描述相應(yīng)的工作流程。圖6是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)啟動(dòng)的流程圖,其包括如下步驟S601,主機(jī)和備機(jī)協(xié)商,隨機(jī)確定主備狀態(tài)。S602,判斷本機(jī)的狀態(tài);如果是備機(jī),轉(zhuǎn)至步驟S603;否則,轉(zhuǎn)至步驟S604。S603,進(jìn)入備機(jī)狀態(tài)運(yùn)行。S604,進(jìn)入主機(jī)狀態(tài)運(yùn)行,轉(zhuǎn)至步驟S605。S605,啟動(dòng)數(shù)據(jù)庫控制模塊。S606,數(shù)據(jù)庫控制模塊讀取數(shù)據(jù)庫狀態(tài)配置文件。S607,判斷數(shù)據(jù)庫狀態(tài)信息是否存在。若存在,轉(zhuǎn)至S611;否則,轉(zhuǎn)至S608。S608,初始化啟動(dòng),對預(yù)先配置的兩個(gè)數(shù)據(jù)庫創(chuàng)建連接。S609,根據(jù)連接情況,保存數(shù)據(jù)庫狀態(tài)文件,并通知主備控制模塊。S610,向備機(jī)發(fā)送最新的數(shù)據(jù)庫狀態(tài),流程結(jié)束。S611,根據(jù)狀態(tài)信息恢復(fù)數(shù)據(jù)庫連接。圖7是根據(jù)本發(fā)明實(shí)施例的脫機(jī)過程的流程圖,其包括如下步驟S700,主機(jī)上的控制程序檢測到備機(jī)通訊異常。S701,收到主備控制模塊發(fā)送的脫機(jī)消息,轉(zhuǎn)至S703。S702,自動(dòng)任務(wù)或操作數(shù)據(jù)庫時(shí)檢測到連接異常,轉(zhuǎn)至S703。S703,開始執(zhí)行脫機(jī)動(dòng)作。S704,清除緩存的連接到脫機(jī)數(shù)據(jù)庫的連接。S705,保存數(shù)據(jù)庫狀態(tài)文件。S706,發(fā)消息到主控模塊,主機(jī)主控發(fā)消息到備機(jī),更新數(shù)據(jù)庫狀態(tài)文件。S707,備機(jī)上的主控模塊更新數(shù)據(jù)庫狀態(tài)文件。圖8是根據(jù)本發(fā)明實(shí)施例的聯(lián)機(jī)過程的流程圖,其包括如下步驟S801,自動(dòng)任務(wù)檢測到和備機(jī)數(shù)據(jù)庫的連接恢復(fù)正常,轉(zhuǎn)至S803。S802,主控模塊檢測到和備機(jī)通訊恢復(fù)正常,轉(zhuǎn)至S803。S803,數(shù)據(jù)庫控制模塊首先鎖定本模塊,以便在數(shù)據(jù)同步期間,不接受其他對數(shù)據(jù)庫的操作請求。S804,開始同步過程。S805,創(chuàng)建備機(jī)數(shù)據(jù)庫的連接。S806,將主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到備機(jī)上。優(yōu)選的,比較主機(jī)和備機(jī)上數(shù) 據(jù)庫的表數(shù)據(jù),將差異部分更新到備機(jī)數(shù)據(jù)庫。S807,判斷是否同步成功。如果同步成功,則轉(zhuǎn)至S808;否則,轉(zhuǎn)至S810。S808,更新數(shù)據(jù)庫狀態(tài)文件。S809,通知備機(jī)主控模塊進(jìn)行數(shù)據(jù)庫狀態(tài)文件更新。S810,解除對本模塊的鎖定,聯(lián)機(jī)同步完成。圖9是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫操作過程的流程圖,其包括如下步驟S901,收到數(shù)據(jù)庫操作的請求。S902,開啟一個(gè)分布式事務(wù),對持有的所有連接執(zhí)行上述請求。S903,判斷是否成功提交事務(wù)。如果成功,則本次操作結(jié)束;否則,轉(zhuǎn)至 S904。S904,檢查是否存在連接相關(guān)的異常。如果沒有,則本次操作結(jié)束,否則,轉(zhuǎn) 至 S905。S905,將連接異常的數(shù)據(jù)庫進(jìn)行脫機(jī)處理。實(shí)施例3圖10是根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)的另一種優(yōu)選的結(jié)構(gòu)示意圖,其 包括檢測單元1002,用于檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī) 數(shù)據(jù)庫連接發(fā)生異常;處理單元1004,用于在檢測到發(fā)生異常之后,釋放所述備機(jī)數(shù)據(jù) 庫連接,并對所述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;同步單元1006,用于將數(shù)據(jù)庫狀態(tài)文件從所 述主機(jī)同步到所述備機(jī),其中,所述數(shù)據(jù)庫狀態(tài)文件用于記錄所述主機(jī)的數(shù)據(jù)庫的狀態(tài) 和所述備機(jī)的數(shù)據(jù)庫的狀態(tài)。在本優(yōu)選的實(shí)施例中,脫機(jī)過程中釋放所述備機(jī)數(shù)據(jù)庫連接,使得備機(jī)數(shù)據(jù)庫 因各種原因連接異常時(shí),還可以對主機(jī)數(shù)據(jù)庫操作,此外,由于同步了數(shù)據(jù)庫的狀態(tài), 這樣,在系統(tǒng)恢復(fù)時(shí),系統(tǒng)可以自動(dòng)進(jìn)行數(shù)據(jù)同步,保證了數(shù)據(jù)一致性和實(shí)時(shí)性,也減 少了維護(hù)人員的勞動(dòng)強(qiáng)度。優(yōu)選的,所述檢測單元1002還用于檢測到所述主機(jī)與所述備機(jī)之間的通訊恢復(fù) 正常,或者,檢測到所述備機(jī)數(shù)據(jù)庫連接恢復(fù)正常;所述同步單元1006還用于將所述主 機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中,并更新所述數(shù)據(jù)庫狀態(tài)文件,將更新 后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)。在本優(yōu)選的實(shí)施例中,通過同步 主機(jī)和備機(jī)中的數(shù)據(jù),保證了數(shù)據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,所述同步單元1006將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù) 據(jù)庫中的步驟包括比較所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù);將所述主機(jī) 的數(shù)據(jù)庫中的沒有記錄在所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到所述備機(jī)的數(shù)據(jù)庫;從所述 備機(jī)的數(shù)據(jù)庫中刪除沒有記錄在所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)。在本優(yōu)選的實(shí)施例中,所 述同步單元1006將所述主機(jī)的數(shù)據(jù)庫中的沒有記錄在所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到 所述備機(jī)的數(shù)據(jù)庫可以包括以下幾種情況
1)主機(jī)的數(shù)據(jù)庫具有的數(shù)據(jù)記錄沒有保存在備機(jī)的數(shù)據(jù)庫中。在這種情況下, 主機(jī)將這些數(shù)據(jù)記錄添加到備機(jī)中;2)主機(jī)的數(shù)據(jù)庫具有與備機(jī)的數(shù)據(jù)庫相同的數(shù)據(jù)記錄,但該數(shù)據(jù)記錄的取值與 備機(jī)的數(shù)據(jù)庫不同。在這種情況下,將備機(jī)的數(shù)據(jù)庫中的這條數(shù)據(jù)記錄的取值更新為主 機(jī)的數(shù)據(jù)庫中的相應(yīng)取值。通過上述完全同步的方式,使得主機(jī)和備機(jī)中的數(shù)據(jù)完全一致,從而保證了數(shù) 據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)還包括鎖定單元1008,用 于在將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中之前,鎖定數(shù)據(jù)庫控制模 塊,以便在執(zhí)行所述同步的過程中不接受其他對所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫 的操作請求,其中,所述數(shù)據(jù)庫控制模塊用于控制所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù) 庫。通過上述完全同步的方式,使得主機(jī)和備機(jī)中的數(shù)據(jù)完全一致,從而保證了數(shù)據(jù)一 致性和實(shí)時(shí)性。優(yōu)選的,根據(jù)本發(fā)明實(shí)施例的雙機(jī)數(shù)據(jù)備份系統(tǒng)還包括接收單元1010,用于 在將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)之后,接收數(shù)據(jù)庫操作請 求消息;其中,所述處理單元1004還用于在聯(lián)機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫和所述備機(jī) 的數(shù)據(jù)庫同步執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作;在脫機(jī)狀態(tài)下對所述主機(jī)的 數(shù)據(jù)庫執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作。在本優(yōu)選的實(shí)施例中,在聯(lián)機(jī)狀態(tài) 下對數(shù)據(jù)庫進(jìn)行操作時(shí),對一個(gè)數(shù)據(jù)庫操作的同時(shí)對另外一個(gè)數(shù)據(jù)庫進(jìn)行操作,保證了 備份份的數(shù)據(jù)一致性和實(shí)時(shí)性。優(yōu)選的,在聯(lián)機(jī)過程中,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù) 庫中;更新所述數(shù)據(jù)庫狀態(tài)文件,并將更新后的所述數(shù)據(jù)庫狀態(tài)文件同步到所述備機(jī)。 在聯(lián)機(jī)完成之后,本系統(tǒng)可以繼續(xù)接收數(shù)據(jù)庫操作請求消息;對所述主機(jī)的數(shù)據(jù)庫和所 述備機(jī)的數(shù)據(jù)庫同步執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作;在本優(yōu)選的實(shí)施例 中,在聯(lián)機(jī)狀態(tài)下對數(shù)據(jù)庫進(jìn)行操作時(shí),對一個(gè)數(shù)據(jù)庫操作的同時(shí)對另外一個(gè)數(shù)據(jù)庫進(jìn) 行操作,保證了備份的數(shù)據(jù)一致性和實(shí)時(shí)性。在脫機(jī)過程中,清除對備機(jī)數(shù)據(jù)庫的連 接,;更新所述數(shù)據(jù)庫狀態(tài)文件。本系統(tǒng)可以繼續(xù)接收數(shù)據(jù)庫操作請求消息,對所述主 機(jī)的數(shù)據(jù)庫執(zhí)行所述數(shù)據(jù)庫操作。優(yōu)選的,檢測單元1002通過以下步驟之一來檢測備機(jī)數(shù)據(jù)庫連接是否發(fā)生異 常包括所述主機(jī)定時(shí)對所述備機(jī)數(shù)據(jù)庫連接進(jìn)行檢測,若所述備機(jī)數(shù)據(jù)庫連接發(fā)生異 常,則檢測出所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;或者,判斷所執(zhí)行的應(yīng)用程序操作是否失 敗,若失敗、且所述失敗原因?yàn)閿?shù)據(jù)庫連接異常,則檢測出所述備機(jī)數(shù)據(jù)庫連接發(fā)生異 常;判斷用于控制主機(jī)和備機(jī)之間的切換和同步的主備控制模塊的心跳消息是否異常, 若異常,則所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常。在本優(yōu)選的實(shí)施例中,通過多種檢測步驟, 增加了本發(fā)明的適用性。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通 用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所 組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將 它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中 的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的 硬件和軟件結(jié)合。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的 技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的 任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法,其特征在于,包括檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫連接發(fā)生異常;釋放所述備機(jī)數(shù)據(jù)庫連接,并對所述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;將數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī),其中,所述數(shù)據(jù)庫狀態(tài)文件用于記 錄所述主機(jī)的數(shù)據(jù)庫的狀態(tài)和所述備機(jī)的數(shù)據(jù)庫的狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在將數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到 所述備機(jī)之后,還包括檢測到所述主機(jī)與所述備機(jī)之間的通訊恢復(fù)正常,或者,檢測到所述備機(jī)數(shù)據(jù)庫連 接恢復(fù)正常;將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中;更新所述數(shù)據(jù)庫狀態(tài)文件,并將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所 述備機(jī)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所 述備機(jī)的數(shù)據(jù)庫中的步驟包括比較所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù);將所述主機(jī)的數(shù)據(jù)庫中的沒有記錄在所述備機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)更新到所述備機(jī)的 數(shù)據(jù)庫;從所述備機(jī)的數(shù)據(jù)庫中刪除沒有記錄在所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所 述備機(jī)的數(shù)據(jù)庫中之前,還包括鎖定數(shù)據(jù)庫控制模塊,用于在執(zhí)行所述同步的過程中不接受其他對所述主機(jī)的數(shù)據(jù) 庫和所述備機(jī)的數(shù)據(jù)庫的操作請求,其中,所述數(shù)據(jù)庫控制模塊用于控制所述主機(jī)的數(shù) 據(jù)庫和所述備機(jī)的數(shù)據(jù)庫。
5.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,其特征在于,在將更新后的所述數(shù)據(jù)庫 狀態(tài)文件從所述主機(jī)同步到所述備機(jī)之后,還包括接收數(shù)據(jù)庫操作請求消息;在聯(lián)機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫同步執(zhí)行所述數(shù)據(jù)庫操作請 求消息所請求的操作;在脫機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過以下步驟之一來檢測備機(jī)數(shù)據(jù)庫連 接是否發(fā)生異常包括所述主機(jī)定時(shí)對所述備機(jī)數(shù)據(jù)庫連接進(jìn)行檢測,若所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常, 則檢測出所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;判斷所執(zhí)行的應(yīng)用程序操作是否失敗,若失敗、且所述失敗原因?yàn)閿?shù)據(jù)庫連接異 常,則檢測出所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常;或者判斷用于控制所述主機(jī)和所述備機(jī)之間的切換和同步的主備控制模塊的心跳消息是 否異常,若異常,則所述備機(jī)數(shù)據(jù)庫連接發(fā)生異常。
7.—種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份系統(tǒng),其特征在于,包括檢測單元,用于檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫連接發(fā)生異常;處理單元,用于在檢測到發(fā)生異常之后,釋放所述備機(jī)數(shù)據(jù)庫連接,并對所述主機(jī) 的數(shù)據(jù)庫進(jìn)行操作;同步單元,用于將數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī),其中,所述數(shù)據(jù)庫 狀態(tài)文件用于記錄所述主機(jī)的數(shù)據(jù)庫的狀態(tài)和所述備機(jī)的數(shù)據(jù)庫的狀態(tài)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述檢測單元還用于檢測到所述主機(jī)與所述備機(jī)之間的通訊恢復(fù)正常,或者,檢測 到所述備機(jī)數(shù)據(jù)庫連接恢復(fù)正常;所述同步單元還用于將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中, 并更新所述數(shù)據(jù)庫狀態(tài)文件,將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備 機(jī)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,還包括鎖定單元,用于在將所述主機(jī)的數(shù)據(jù)庫中的數(shù)據(jù)同步到所述備機(jī)的數(shù)據(jù)庫中之前, 鎖定數(shù)據(jù)庫控制模塊,以便在執(zhí)行所述同步的過程中不接受其他對所述主機(jī)的數(shù)據(jù)庫和 所述備機(jī)的數(shù)據(jù)庫的操作請求,其中,所述數(shù)據(jù)庫控制模塊用于控制所述主機(jī)的數(shù)據(jù)庫 和所述備機(jī)的數(shù)據(jù)庫。
10.根據(jù)權(quán)利要求7至9中任一項(xiàng)所述的系統(tǒng),其特征在于,還包括接收單元,用 于在將更新后的所述數(shù)據(jù)庫狀態(tài)文件從所述主機(jī)同步到所述備機(jī)之后,接收數(shù)據(jù)庫操作 請求消息;其中,所述處理單元還用于在聯(lián)機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫和所述備機(jī)的數(shù)據(jù)庫 同步執(zhí)行所述數(shù)據(jù)庫操作請求消息所請求的操作;在脫機(jī)狀態(tài)下對所述主機(jī)的數(shù)據(jù)庫執(zhí) 行所述數(shù)據(jù)庫操作請求消息所請求的操作。
全文摘要
本發(fā)明一種電信網(wǎng)管系統(tǒng)中的雙機(jī)數(shù)據(jù)備份方法和系統(tǒng),其中,該方法包括檢測到主機(jī)與備機(jī)之間的通訊發(fā)生異常,或者,檢測到備機(jī)數(shù)據(jù)庫連接發(fā)生異常;釋放上述備機(jī)數(shù)據(jù)庫連接,并對上述主機(jī)的數(shù)據(jù)庫進(jìn)行操作;將數(shù)據(jù)庫狀態(tài)文件從上述主機(jī)同步到上述備機(jī),其中,上述數(shù)據(jù)庫狀態(tài)文件用于記錄上述主機(jī)的數(shù)據(jù)庫的狀態(tài)和上述備機(jī)的數(shù)據(jù)庫的狀態(tài)。本發(fā)明解決了現(xiàn)有技術(shù)中數(shù)據(jù)備份的實(shí)時(shí)性較差的問題,保證了備份的數(shù)據(jù)一致性和實(shí)時(shí)性。
文檔編號(hào)H04L12/24GK102013997SQ20101055585
公開日2011年4月13日 申請日期2010年11月22日 優(yōu)先權(quán)日2010年11月22日
發(fā)明者李興國, 鄔春會(huì) 申請人:中興通訊股份有限公司