專利名稱:數(shù)據(jù)庫(kù)同步方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù),尤其涉及數(shù)據(jù)庫(kù)同步的方法及系統(tǒng)。
背景技術(shù):
在電信管理網(wǎng)絡(luò)中,每個(gè)網(wǎng)絡(luò)單元都有一個(gè)操作維護(hù)單元(OMU,Operation & Maintenance Unit),具體可以是安裝OMU軟件的服務(wù)器,負(fù)責(zé)提供該網(wǎng)絡(luò)單元的操作維護(hù)功能。為維護(hù)網(wǎng)絡(luò)單元的正常工作,電信運(yùn)營(yíng)商對(duì)網(wǎng)絡(luò)單元的操作維護(hù)功能可靠性要求很高,一般都在99.999%以上。因此,為了保證OMU操作維護(hù)功能的可靠性,電信設(shè)備供應(yīng)商一般采用對(duì)OMU的雙機(jī)(Dual System)備份機(jī)制。所謂雙機(jī),是由兩臺(tái)計(jì)算機(jī)組成的系統(tǒng),其中,與主用OMU對(duì)應(yīng)的服務(wù)器是主用服務(wù)器(Active Server,以下簡(jiǎn)稱AS),對(duì)外提供服務(wù)功能;與備用OMU對(duì)應(yīng)的服務(wù)器是備用服務(wù)器(StandbyServer,以下簡(jiǎn)稱SS),為主用服務(wù)器提供備份功能、不對(duì)外提供服務(wù)功能。主用服務(wù)器和備用服務(wù)器在一定條件下可以發(fā)生倒換,即主用變備用、備用變主用。兩者結(jié)合,能夠連續(xù)地對(duì)外提供服務(wù)功能。
采用雙機(jī)備份機(jī)制可以保證系統(tǒng)運(yùn)作的可靠性,在主用服務(wù)器因故死機(jī)或人為疏忽等影響,而無(wú)法對(duì)OMU進(jìn)行操作維護(hù)時(shí),備用服務(wù)器會(huì)立即取代主用服務(wù)器的地位,繼續(xù)對(duì)OMU進(jìn)行操作維護(hù)。采用這種機(jī)制,大大減少系統(tǒng)運(yùn)作停頓的概率,無(wú)論對(duì)個(gè)人用戶還是企業(yè)用戶,都提供了可靠的保障。另外,采用雙機(jī)備份機(jī)制,用戶數(shù)據(jù)可以傳遞給兩部主機(jī),獲得妥善的備份,提高了信息處理的安全性。
要實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)單元的操作維護(hù),服務(wù)器要處理大量的數(shù)據(jù),例如配置數(shù)據(jù)、告警數(shù)據(jù)、性能統(tǒng)計(jì)數(shù)據(jù)等,這些數(shù)據(jù)都存儲(chǔ)于服務(wù)器的數(shù)據(jù)庫(kù)系統(tǒng)中,OMU服務(wù)器上會(huì)安裝數(shù)據(jù)庫(kù)系統(tǒng)軟件,提供統(tǒng)一的數(shù)據(jù)庫(kù)訪問(wèn)接口。這些存儲(chǔ)于數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)隨著系統(tǒng)的運(yùn)行,是實(shí)時(shí)修改的。因此要實(shí)現(xiàn)雙機(jī)備份功能,必須保證主用服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)和備用服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)之間的實(shí)時(shí)同步。這樣才能確保主用服務(wù)器發(fā)生故障時(shí),備用服務(wù)器升級(jí)為主用服務(wù)器后能提供正確的操作維護(hù)功能。
現(xiàn)有技術(shù)中,實(shí)現(xiàn)雙機(jī)數(shù)據(jù)庫(kù)同步有如下技術(shù)方案方案一利用數(shù)據(jù)庫(kù)復(fù)制機(jī)制,比如SQL復(fù)制。所謂復(fù)制,是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù)。SQL(Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)復(fù)制的基本元素包括出版服務(wù)器、訂閱服務(wù)器、分發(fā)服務(wù)器、出版物、文章。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可從出版服務(wù)器接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。
以Microsoft公司的SQL Server數(shù)據(jù)庫(kù)系統(tǒng)為例,該系統(tǒng)提供了三種復(fù)制技術(shù),分別是快照復(fù)制、事務(wù)復(fù)制和合并復(fù)制。主備服務(wù)器之間的數(shù)據(jù)庫(kù)實(shí)時(shí)同步一般采用事務(wù)復(fù)制技術(shù)。采用事務(wù)復(fù)制需要進(jìn)行如下配置步驟1.配置一個(gè)數(shù)據(jù)庫(kù)作為分發(fā)數(shù)據(jù)庫(kù)(分發(fā)數(shù)據(jù)庫(kù)可以配置在主用服務(wù)器,也可以配置在備用服務(wù)器上),指定哪些服務(wù)器可以使用該數(shù)據(jù)庫(kù);2.在主用服務(wù)器上,配置主用服務(wù)器使用的分發(fā)數(shù)據(jù)庫(kù);配置主用服務(wù)器上允許的訂閱服務(wù)器;配置主用服務(wù)器上需要發(fā)布的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)中需要發(fā)布的數(shù)據(jù)表和字段等;3.在備用服務(wù)器上,配置對(duì)發(fā)布數(shù)據(jù)庫(kù)的訂閱;4.配置各代理進(jìn)程的調(diào)度和屬性,有快照代理進(jìn)程、分發(fā)代理進(jìn)程和日志讀取代理進(jìn)程等;上述配置過(guò)程非常復(fù)雜,容易出錯(cuò)且配置時(shí)間較長(zhǎng),如果有多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)有多張數(shù)據(jù)表進(jìn)行同步,則配置過(guò)程一般需要幾分鐘。同時(shí)該配置過(guò)程對(duì)數(shù)據(jù)庫(kù)的屬性進(jìn)行了修改,對(duì)數(shù)據(jù)庫(kù)的操作將受到限制,比如配置某數(shù)據(jù)庫(kù)為發(fā)布數(shù)據(jù)庫(kù)后,就不能刪除該數(shù)據(jù)庫(kù)了。
上述配置成功后,主用服務(wù)器上的SQL SERVER會(huì)把各數(shù)據(jù)庫(kù)中需要同步的數(shù)據(jù)表的數(shù)據(jù)自動(dòng)生成一個(gè)快照(類似于數(shù)據(jù)表的數(shù)據(jù)導(dǎo)出文件),該快照信息傳送到分發(fā)數(shù)據(jù)庫(kù)中,分發(fā)數(shù)據(jù)庫(kù)再分發(fā)到備用服務(wù)器,備用服務(wù)器將快照中的數(shù)據(jù)導(dǎo)入到訂閱數(shù)據(jù)庫(kù)中,這樣主備服務(wù)器完成了初始數(shù)據(jù)同步。事務(wù)復(fù)制配置好之后,先完成初始同步,自動(dòng)進(jìn)行實(shí)時(shí)同步。主用服務(wù)器發(fā)生數(shù)據(jù)修改時(shí),發(fā)布數(shù)據(jù)庫(kù)會(huì)把數(shù)據(jù)修改的日志信息傳送到分發(fā)數(shù)據(jù)庫(kù),分發(fā)數(shù)據(jù)庫(kù)再將其分發(fā)給訂閱數(shù)據(jù)庫(kù),訂閱數(shù)據(jù)庫(kù)根據(jù)日志信息修改數(shù)據(jù),保證與發(fā)布數(shù)據(jù)庫(kù)同步。
該方案的缺陷是1.必須基于SQL Server數(shù)據(jù)庫(kù)系統(tǒng),相應(yīng)的,該系統(tǒng)必須安裝在WINDOWS操作系統(tǒng)上;2.必須在主備服務(wù)器間配置事務(wù)復(fù)制關(guān)系,主備服務(wù)器發(fā)生倒換需要重新配置事務(wù)復(fù)制關(guān)系。由于事務(wù)復(fù)制關(guān)系非常復(fù)雜,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的配置過(guò)程很復(fù)雜。
3.發(fā)布服務(wù)器和訂閱服務(wù)器完成初始數(shù)據(jù)庫(kù)同步時(shí)間長(zhǎng)。事務(wù)復(fù)制生成和應(yīng)用快照的時(shí)間與數(shù)據(jù)表的數(shù)量成正比,以數(shù)據(jù)庫(kù)中需要同步的數(shù)據(jù)表為500張計(jì)算,一般需要30分鐘以上的時(shí)間才能完成初始同步。而且訂閱服務(wù)器上應(yīng)用快照是一張表接一張表依次應(yīng)用的,不是一個(gè)事務(wù)里完成的。完成初始同步過(guò)程前一般不能發(fā)生主備服務(wù)器的倒換,否則備用服務(wù)器上的數(shù)據(jù)是混亂的。這個(gè)時(shí)間對(duì)于電信運(yùn)營(yíng)商難以接收;4.該方案對(duì)于服務(wù)器有很多限制和影響。事務(wù)復(fù)制依賴于數(shù)據(jù)庫(kù)的日志,對(duì)日志做標(biāo)記,以標(biāo)識(shí)已經(jīng)傳送到分發(fā)數(shù)據(jù)庫(kù)以及未傳送的日志,以此保證數(shù)據(jù)庫(kù)更改一致。如果備用服務(wù)器故障,則主用服務(wù)器的數(shù)據(jù)庫(kù)日志會(huì)不斷增長(zhǎng),導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法運(yùn)行;如果主用服務(wù)器還原數(shù)據(jù)庫(kù),則會(huì)導(dǎo)致日志混亂,事務(wù)復(fù)制會(huì)出現(xiàn)故障。
方案二以Microsoft公司的SQL Server 2000企業(yè)版為例,該系統(tǒng)提供了日志傳送的功能,即不間斷地從源數(shù)據(jù)庫(kù)中備份事務(wù)日志,然后將它們復(fù)制并還原到目的數(shù)據(jù)庫(kù),使目的數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)保持同步。與事務(wù)復(fù)制相比,日志傳送稍為簡(jiǎn)單一些。日志傳送保證兩個(gè)數(shù)據(jù)庫(kù)同步,而事務(wù)復(fù)制可以使需要同步的數(shù)據(jù)表保持同步,不需要同步的數(shù)據(jù)表可以不進(jìn)行同步。初始同步方面,SQL SERVER提供了日志傳送操作的向?qū)?,在目的服?wù)器上創(chuàng)建源數(shù)據(jù)庫(kù),保證初始數(shù)據(jù)一致。
該方案的缺陷是1.必須基于Sql Server數(shù)據(jù)庫(kù)系統(tǒng),相應(yīng)的,該系統(tǒng)必須安裝在WINDOWS操作系統(tǒng)上;2.日志傳送的實(shí)時(shí)性較差,實(shí)時(shí)同步周期一般配置在15分鐘,對(duì)于實(shí)時(shí)性要求較高的服務(wù)器不合適;3.日志傳送可靠性不如事務(wù)復(fù)制,對(duì)可靠性要求較高的服務(wù)器不合適。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例要解決的主要問(wèn)題在于,提供數(shù)據(jù)庫(kù)同步的方法和系統(tǒng),可以簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)同步的效率。
本發(fā)明的一個(gè)實(shí)施例所提供的數(shù)據(jù)庫(kù)同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的初始同步,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)的同步表,該方法包括以下步驟備用服務(wù)器向主用服務(wù)器發(fā)送初始同步請(qǐng)求;主用服務(wù)器根據(jù)接收到的初始同步請(qǐng)求,在同步表中更新同步標(biāo)識(shí)號(hào),并備份主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;備用服務(wù)器獲取更新后的同步標(biāo)識(shí)號(hào)和備份文件,用備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù)。
本發(fā)明的另一個(gè)實(shí)施例所提供的數(shù)據(jù)庫(kù)同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的實(shí)時(shí)同步,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,同步標(biāo)識(shí)號(hào)根據(jù)數(shù)據(jù)庫(kù)操作實(shí)時(shí)更新,該方法包括以下步驟主用服務(wù)器復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;備用服務(wù)器從同步表中獲取SQL語(yǔ)句,并用該SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
本發(fā)明的再一個(gè)實(shí)施例所提供的數(shù)據(jù)庫(kù)同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的同步,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,該方法包括A、備用服務(wù)器檢查其保存的標(biāo)識(shí)號(hào)是否存在于同步表中,如果不存在,則執(zhí)行步驟B、C、D,如果存在,則執(zhí)行步驟E、F;B、向主用服務(wù)器發(fā)送初始同步請(qǐng)求;C、主用服務(wù)器根據(jù)接收到的請(qǐng)求,在同步表中更新同步標(biāo)識(shí)號(hào),備份主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;D、備用服務(wù)器獲取更新后的同步標(biāo)識(shí)號(hào)和備份文件,用備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù);E、主用服務(wù)器復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;F、備用服務(wù)器從同步表中獲取該SQL語(yǔ)句,并用該SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
本發(fā)明的再一個(gè)實(shí)施例所提供的數(shù)據(jù)庫(kù)同步的系統(tǒng),包括配置有主用服務(wù)器數(shù)據(jù)庫(kù)的主用服務(wù)器,以及配置有備用服務(wù)器數(shù)據(jù)庫(kù)的備用服務(wù)器,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表。
該系統(tǒng)的主用服務(wù)器包括備份單元,用于在初始同步階段,在收到備用服務(wù)器發(fā)送的初始同步請(qǐng)求后,備份數(shù)據(jù)庫(kù)生成備份文件;同步表單元,用于在初始同步階段,在同步表中更新同步標(biāo)識(shí)號(hào),還用于在實(shí)時(shí)同步階段,更新同步表中的同步標(biāo)識(shí)號(hào),復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;備用服務(wù)器包括請(qǐng)求單元,用于向主用服務(wù)器發(fā)送初始同步請(qǐng)求;獲取單元,用于在初始同步階段,獲取備份單元生成的備份文件,以及同步表單元在同步表中更新后的同步標(biāo)識(shí)號(hào);同步單元,用于在初始同步階段,從獲取單元獲取備份文件,并用該備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù),還用于在實(shí)時(shí)同步階段,從同步表中獲取SQL語(yǔ)句,并用該SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
本發(fā)明的實(shí)施例所提供的方法及系統(tǒng),利用同步表中的標(biāo)識(shí)號(hào),來(lái)判斷是否需要初始同步和保證初始同步后主備服務(wù)器保持?jǐn)?shù)據(jù)一致,采用備用服務(wù)器讀取主用服務(wù)器上的同步表中的SQL語(yǔ)句的方式,直接獲取主用服務(wù)器的數(shù)據(jù)修改。從而簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)同步的效率。
圖1為本發(fā)明實(shí)施例中,同步表結(jié)構(gòu)示意圖;圖2為本發(fā)明第一個(gè)實(shí)施例數(shù)據(jù)庫(kù)同步的方法流程圖;圖3為本發(fā)明第二個(gè)實(shí)施例數(shù)據(jù)庫(kù)同步的方法流程圖;
圖4為本發(fā)明第三個(gè)實(shí)施例數(shù)據(jù)庫(kù)同步的方法流程圖;圖5為本發(fā)明第四個(gè)實(shí)施例數(shù)據(jù)庫(kù)同步的系統(tǒng)圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明實(shí)施例提供的技術(shù)方案,利用同步表,在應(yīng)用層實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步,簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步可以不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高數(shù)據(jù)同步的效率。
圖1為本發(fā)明實(shí)施例中,同步表結(jié)構(gòu)示意圖。
如圖1所示,設(shè)置于主用服務(wù)器數(shù)據(jù)庫(kù)中的同步表,包括兩個(gè)字段同步標(biāo)識(shí)字段(identity)和SQL語(yǔ)句字段。
同步標(biāo)識(shí)字段一般采用數(shù)據(jù)庫(kù)提供的種子屬性,自動(dòng)遞增。這個(gè)字段不需要維護(hù),如果種子屬性設(shè)置是從1開始遞增,插入第一條記錄時(shí),不需要制定該字段的值,數(shù)據(jù)庫(kù)系統(tǒng)就自動(dòng)置為1,插入第二條,自動(dòng)置為2,如果刪除了數(shù)據(jù)庫(kù)的所有記錄,下次再插入時(shí),該字段的值是刪除之前的值加1。同步標(biāo)識(shí)字段用來(lái)表示同步標(biāo)識(shí)號(hào)。
SQL語(yǔ)句字段存放修改數(shù)據(jù)庫(kù)的SQL語(yǔ)句。SQL幾乎是所有大型數(shù)據(jù)服務(wù)器都支持的數(shù)據(jù)操作語(yǔ)言,它提供一些可以快速執(zhí)行數(shù)據(jù)查詢、更新、刪除等數(shù)據(jù)操作的敘述。就標(biāo)識(shí)和SQL的關(guān)系而言,標(biāo)識(shí)是插入每條SQL記錄時(shí)給的一個(gè)編號(hào),即每插入一條SQL記錄,標(biāo)識(shí)字段的值加1。
本發(fā)明實(shí)施例中,通過(guò)在主用服務(wù)器上設(shè)置同步表,同步表的同步標(biāo)識(shí)號(hào)和備用服務(wù)器的標(biāo)識(shí)號(hào)配合比較,檢查是否需要初始同步。通過(guò)SQL語(yǔ)句,實(shí)現(xiàn)實(shí)時(shí)同步,同時(shí)在實(shí)時(shí)同步的過(guò)程中,實(shí)時(shí)檢查是否需要初始同步。以此,通過(guò)同步表中標(biāo)識(shí)和SQL語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步。
備用服務(wù)器的標(biāo)識(shí)號(hào)可以保存在數(shù)據(jù)庫(kù)中或保存在配置文件中。該值初始化為0,所以初次啟動(dòng)時(shí),肯定與主用服務(wù)器同步表中最小的標(biāo)識(shí)號(hào)是不一樣的,因此會(huì)進(jìn)行初始同步。初始同步完成后,備用服務(wù)器保存的標(biāo)識(shí)號(hào)就會(huì)存在于同步表中。接著進(jìn)入實(shí)時(shí)同步,在該過(guò)程中,主用服務(wù)器每修改一次數(shù)據(jù),在同步表中插入SQL記錄,增加一次同步表記錄,對(duì)應(yīng)增加標(biāo)識(shí)號(hào);實(shí)時(shí)同步時(shí),備用服務(wù)器先刪除主用服務(wù)器上同步表中標(biāo)識(shí)號(hào)小于自身保存的標(biāo)識(shí)號(hào)的記錄,然后讀取主用服務(wù)器上同步表中標(biāo)識(shí)號(hào)大于自身保存標(biāo)識(shí)號(hào)的記錄。備用服務(wù)器每執(zhí)行一條讀取過(guò)來(lái)的記錄前,將自己保存的標(biāo)識(shí)號(hào)與讀取過(guò)來(lái)的記錄的標(biāo)識(shí)號(hào)進(jìn)行檢查,如果其保存的標(biāo)識(shí)號(hào)與讀取過(guò)來(lái)的標(biāo)識(shí)號(hào)連續(xù),則說(shuō)明備用服務(wù)器與主用服務(wù)器一直保持同步,則執(zhí)行該條記錄,并更新保存的標(biāo)識(shí)號(hào),即,將最新同步過(guò)的標(biāo)識(shí)號(hào)保存下來(lái)。如果不連續(xù),則說(shuō)明主備用服務(wù)器已經(jīng)失去了數(shù)據(jù)同步,備用服務(wù)器需要重新開始數(shù)據(jù)同步。判斷備用服務(wù)器保存的標(biāo)識(shí)號(hào)與讀取過(guò)來(lái)的標(biāo)識(shí)號(hào)是否連續(xù),也即判斷備用服務(wù)器保存的標(biāo)識(shí)號(hào)是否存在于同步表中。
如果備用服務(wù)器發(fā)生重啟,則重啟后檢查其保存的同步標(biāo)識(shí)號(hào)在主用服務(wù)器同步表中是否仍然存在,如果是,則只需要繼續(xù)實(shí)時(shí)同步即可。如果備用服務(wù)器停止了很長(zhǎng)時(shí)間,導(dǎo)致主用服務(wù)器把同步表清除過(guò),則備用服務(wù)器保存的同步標(biāo)識(shí)號(hào)在同步表中不存在了,則重新開始初始同步。
本發(fā)明的第一個(gè)實(shí)施例涉及數(shù)據(jù)庫(kù)初始同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的初始同步,其中,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)的同步表,該方法具體流程如圖2所示。
步驟201由備用服務(wù)器檢查其保存的標(biāo)識(shí)號(hào)是否存在于同步表中,據(jù)此判斷是否需要開始初始同步;比如,在以下三種場(chǎng)景下,都需要進(jìn)行步驟201的判斷(1)如前所述,標(biāo)識(shí)字段采用數(shù)據(jù)庫(kù)提供的種子屬性,自動(dòng)遞增,可以設(shè)置從1開始。備用服務(wù)器的標(biāo)識(shí)號(hào)可以保存在數(shù)據(jù)庫(kù)中或保存在配置文件中。該值初始化為0。所以初次啟動(dòng)時(shí),肯定與主用服務(wù)器同步表中最小的標(biāo)識(shí)號(hào)是不一樣的,即備用服務(wù)器保存的標(biāo)識(shí)號(hào)不存在于同步表中,因此會(huì)進(jìn)行初始同步,則執(zhí)行后續(xù)步驟;(2)在實(shí)時(shí)同步過(guò)程中,備用服務(wù)器執(zhí)行一條記錄,則更新一下自己保存的標(biāo)識(shí)號(hào),執(zhí)行前將自己保存的標(biāo)識(shí)號(hào)與讀取過(guò)來(lái)的記錄的標(biāo)識(shí)號(hào)進(jìn)行檢查,如果其保存的標(biāo)識(shí)號(hào)與讀取過(guò)來(lái)的記錄的標(biāo)識(shí)號(hào)連續(xù),則只需要繼續(xù)實(shí)時(shí)同步即可;如果否,說(shuō)明主用服務(wù)器清除過(guò)同步表記錄,則重新開始初始同步,執(zhí)行后續(xù)步驟;(3)如果備用服務(wù)器發(fā)生重啟,則重啟后檢查保存的同步標(biāo)識(shí)號(hào)在主用同步表中是否仍然存在,如果是,則只需要繼續(xù)實(shí)時(shí)同步即可。如果備用服務(wù)器停止了很長(zhǎng)時(shí)間,導(dǎo)致主用服務(wù)器把同步表清除過(guò),則備用服務(wù)器保存的同步標(biāo)識(shí)號(hào)在同步表中不存在了,則重新開始初始同步,執(zhí)行后續(xù)步驟。
步驟202備用服務(wù)器向主用服務(wù)器發(fā)送請(qǐng)求初始同步的請(qǐng)求消息;步驟203主用服務(wù)器收到備用服務(wù)器發(fā)送的請(qǐng)求消息后,在同步表中更新同步標(biāo)識(shí)號(hào),備份主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;該步驟中,主用服務(wù)器收到備用服務(wù)器發(fā)送的請(qǐng)求消息后,在備份數(shù)據(jù)庫(kù)前,會(huì)清空同步表中的數(shù)據(jù)記錄。另外,在備份數(shù)據(jù)庫(kù)之前,為防止備份過(guò)程中,有模塊修改數(shù)據(jù)庫(kù)數(shù)據(jù),要對(duì)數(shù)據(jù)庫(kù)加鎖。加鎖成功后清空同步表中的數(shù)據(jù)記錄,主用服務(wù)器清空數(shù)據(jù)記錄后再插入一條空記錄,同步標(biāo)識(shí)字段的值在刪除之前的值的基礎(chǔ)上加1,形成更新后的同步標(biāo)識(shí)號(hào)。接著,主用服務(wù)器備份數(shù)據(jù)庫(kù),生成備份文件。完成備份后,解除對(duì)數(shù)據(jù)庫(kù)的鎖定,并發(fā)送攜帶該新的同步標(biāo)識(shí)號(hào)的備份成功消息給備用服務(wù)器。
步驟204備用服務(wù)器獲取備份文件和更新后的同步標(biāo)識(shí)號(hào);備用服務(wù)器收到主用服務(wù)器發(fā)送的備份成功消息后,會(huì)獲取并保存該同步標(biāo)識(shí)號(hào),即第一條同步記錄對(duì)應(yīng)的標(biāo)識(shí),以此來(lái)保證備用服務(wù)器保存的標(biāo)識(shí)號(hào)存在于在主用服務(wù)器的同步表中。另外,可以通過(guò)FTP或操作系統(tǒng)提供的文件傳輸功能,把備份文件從主用服務(wù)器傳輸?shù)絺溆梅?wù)器。具體傳輸?shù)姆绞?,既可以采用備用服?wù)器主動(dòng)獲取備份文件的方式,也可以是主用服務(wù)器主動(dòng)傳輸?shù)姆绞?。而采用備用服?wù)器主動(dòng)獲取備份文件的方式,可以減少主用服務(wù)器處理的復(fù)雜度。
步驟205備用服務(wù)器用接收到的備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù)。
至此,完成了數(shù)據(jù)庫(kù)初始同步過(guò)程。
從數(shù)據(jù)庫(kù)加鎖到解鎖的時(shí)間內(nèi),主用服務(wù)器的各模塊訪問(wèn)數(shù)據(jù)庫(kù)會(huì)阻塞住。一般網(wǎng)元數(shù)據(jù)庫(kù)中的配置、告警、性能等數(shù)據(jù)總量在50M~500M之間,OMU服務(wù)器的硬盤都采用高性能的SCSI硬盤或SAS硬盤,吞吐量在每秒30M以上,SATA硬盤在每秒150M以上。數(shù)據(jù)庫(kù)從加鎖到鎖住的時(shí)間0~3秒左右,數(shù)據(jù)庫(kù)被鎖住的總時(shí)間在3~20秒左右。數(shù)據(jù)初始同步時(shí)間還包括備用服務(wù)器獲取備份文件以及恢復(fù)數(shù)據(jù)庫(kù)的時(shí)間,主備服務(wù)器間一般是1000MBits/S的高速帶寬,備份文件可以在10秒內(nèi)傳送到備用服務(wù)器。數(shù)據(jù)庫(kù)恢復(fù)時(shí)間小于數(shù)據(jù)庫(kù)備份時(shí)間,加上之前所用的時(shí)間,整個(gè)初始同步可以在1分鐘之內(nèi)完成,提高了初始同步的效率。
在整個(gè)初始同步過(guò)程中,如果出現(xiàn)沒有成功完成某個(gè)步驟的情況,如主用服務(wù)器返回消息失敗或等待超時(shí),數(shù)據(jù)庫(kù)加鎖失敗,數(shù)據(jù)庫(kù)備份失敗,備份文件傳輸失敗,或備用數(shù)據(jù)庫(kù)恢復(fù)失敗等,都會(huì)返回步驟201。
由于本發(fā)明實(shí)施例數(shù)據(jù)庫(kù)初始同步的方法,利用同步表中的標(biāo)識(shí)號(hào),來(lái)判斷是否需要初始同步和保證初始同步后主備服務(wù)器保持?jǐn)?shù)據(jù)一致,具體采用數(shù)據(jù)庫(kù)備份還原的方法,簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)初始同步的效率。
從整個(gè)數(shù)據(jù)庫(kù)同步過(guò)程來(lái)看,備用服務(wù)器首先同步主用服務(wù)器的初始數(shù)據(jù)庫(kù);備用服務(wù)器在完成初始同步的基礎(chǔ)上,實(shí)時(shí)同步主用服務(wù)器上數(shù)據(jù)庫(kù)中的數(shù)據(jù)修改。初始同步完成后,備用服務(wù)器保存的標(biāo)識(shí)號(hào)就會(huì)存在于同步表中。以下結(jié)合附圖對(duì)本發(fā)明第二個(gè)實(shí)施例進(jìn)行描述。
本發(fā)明的第二個(gè)實(shí)施例涉及數(shù)據(jù)庫(kù)實(shí)時(shí)同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的實(shí)時(shí)同步,其中,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,同步標(biāo)識(shí)號(hào)根據(jù)數(shù)據(jù)庫(kù)操作實(shí)時(shí)更新,該方法具體流程如圖3所示。
步驟301主用服務(wù)器判斷是否有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作,如果需要,則執(zhí)行步驟302和303,如果不需要,則繼續(xù)進(jìn)行本步驟的判斷;OMU軟件提供統(tǒng)一的數(shù)據(jù)庫(kù)訪問(wèn)接口,一般OMU提供的配置、性能統(tǒng)計(jì)、告警等操作維護(hù)功能由不同的軟件模塊來(lái)實(shí)現(xiàn)。各軟件模塊調(diào)用該數(shù)據(jù)庫(kù)訪問(wèn)接口操作數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)訪問(wèn)接口提供可選參數(shù),指明該操作是否需要同步。例如,可以用TRUE表示需要同步,F(xiàn)ALSE表示不需要同步,缺省是TRUE。
步驟302主用服務(wù)器復(fù)制需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;該語(yǔ)句是某模塊訪問(wèn)數(shù)據(jù)庫(kù)并對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行修改的語(yǔ)句。這樣,備用服務(wù)器就可以從同步表中獲取該SQL語(yǔ)句。
步驟303備用服務(wù)器從所述同步表中獲取該SQL語(yǔ)句;具體獲取SQL語(yǔ)句的方法,可以是備用服務(wù)器獲取主用服務(wù)器數(shù)據(jù)庫(kù)的用戶名和密碼,根據(jù)獲取的用戶名和密碼,直接連接到主用數(shù)據(jù)庫(kù)上,獲取同步表的SQL語(yǔ)句。備用服務(wù)器通過(guò)這樣的方式,從主用服務(wù)器的數(shù)據(jù)同步表中讀取一批記錄。
步驟304備用服務(wù)器用同樣的SQL訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
獲取SQL語(yǔ)句后,備用服務(wù)器通過(guò)數(shù)據(jù)庫(kù)訪問(wèn)接口,用同樣的SQL訪問(wèn)其數(shù)據(jù)庫(kù),即逐個(gè)執(zhí)行這些記錄。由于備用服務(wù)器與主用服務(wù)器的基礎(chǔ)數(shù)據(jù)一致,因此兩者的數(shù)據(jù)修改同步,從而使備用服務(wù)器與主用服務(wù)器的數(shù)據(jù)庫(kù)保持了同步。
實(shí)時(shí)同步過(guò)程中,主用服務(wù)器每修改一次數(shù)據(jù),就增加一次同步表記錄。備用服務(wù)器實(shí)時(shí)同步時(shí),同步更新備用服務(wù)器的標(biāo)識(shí)號(hào),把最新同步過(guò)的標(biāo)識(shí)號(hào)保存下來(lái),執(zhí)行修改記錄完成后,刪除主用服務(wù)器同步表中已同步的記錄。因?yàn)閭溆梅?wù)器同步主用服務(wù)器的第N條記錄時(shí),只會(huì)刪除主用同步表中前面的N-1條記錄,第N條記錄保留在同步表中,這樣,備用服務(wù)器每次都可以檢查自己同步過(guò)的最后一條記錄是否在同步表中,判斷是否需要初始同步。
備用服務(wù)器可以設(shè)置同步周期,在完成一個(gè)周期的同步后,下一個(gè)周期繼續(xù)實(shí)時(shí)同步。同步周期一般設(shè)置在秒級(jí),因此主用服務(wù)器上的數(shù)據(jù)修改在秒級(jí)內(nèi)就可以同步到備用服務(wù)器,做到了實(shí)時(shí)同步。
由于本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)實(shí)時(shí)同步的方法,采用備用服務(wù)器讀取主用服務(wù)器上的同步表記錄中的SQL語(yǔ)句的方式,直接獲取主用服務(wù)器的數(shù)據(jù)修改,簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)同步的效率。
本發(fā)明的第三個(gè)實(shí)施例涉及數(shù)據(jù)庫(kù)同步的方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的同步,其中,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表。本實(shí)施例中,以先初始同步,完成后進(jìn)行實(shí)時(shí)同步為例,該方法具體流程如圖4所示。
步驟401由備用服務(wù)器檢查其保存的標(biāo)識(shí)號(hào)是否存在于同步表中,據(jù)此判斷是否需要開始初始同步;如果不需要初始同步,則直接進(jìn)入步驟406;如果需要初始同步,進(jìn)行以下步驟
步驟402備用服務(wù)器向主用服務(wù)器發(fā)送請(qǐng)求初始同步的請(qǐng)求消息;步驟403主用服務(wù)器根據(jù)接收到的所述請(qǐng)求消息,在同步表中更新同步標(biāo)識(shí)號(hào),備份主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;步驟404備用服務(wù)器獲取備份文件和更新后的同步標(biāo)識(shí)號(hào);步驟405備用服務(wù)器用接收到的備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù)。
以上初始同步各步驟中的具體流程,與第一個(gè)實(shí)施例中的相應(yīng)步驟相同,此處不再贅述。至此,完成了數(shù)據(jù)庫(kù)初始同步過(guò)程,因?yàn)榇藭r(shí)備用服務(wù)器保存的標(biāo)識(shí)號(hào)存在于同步表中,所以初始同步完成后進(jìn)行實(shí)時(shí)同步。
步驟406主用服務(wù)器判斷是否有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作;如果有需要同步的數(shù)據(jù)庫(kù)操作,進(jìn)行下面步驟。
步驟407主用服務(wù)器復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;步驟408備用服務(wù)器從所述同步表中獲取該SQL語(yǔ)句;步驟409備用服務(wù)器用同樣的SQL訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
以上實(shí)時(shí)同步各步驟中的具體流程,與第二個(gè)實(shí)施例中的相應(yīng)步驟相同,此處不再贅述。在實(shí)時(shí)同步的過(guò)程中,備用服務(wù)器同步更新備用服務(wù)器的標(biāo)識(shí)號(hào),執(zhí)行完成后刪除主用服務(wù)器同步表中已同步的記錄。并且備用服務(wù)器每執(zhí)行一條記錄,都會(huì)檢查標(biāo)識(shí)號(hào)是否存在于同步表中,判斷是否需要初始同步。因?yàn)閿?shù)據(jù)是從同步表中讀出來(lái)的,只要判斷一下備用服務(wù)器保存的標(biāo)識(shí)是否和讀出來(lái)的記錄的標(biāo)識(shí)是否連續(xù)即可。
由于本發(fā)明該實(shí)施例數(shù)據(jù)庫(kù)同步的方法,利用同步表,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始同步和實(shí)時(shí)同步,簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)同步的效率。
本發(fā)明的第四個(gè)實(shí)施例涉及數(shù)據(jù)庫(kù)同步的系統(tǒng),圖5為該數(shù)據(jù)庫(kù)同步的系統(tǒng)圖,如圖5所示該數(shù)據(jù)庫(kù)同步系統(tǒng),包括配置有主用服務(wù)器數(shù)據(jù)庫(kù)的主用服務(wù)器,以及配置有備用服務(wù)器數(shù)據(jù)庫(kù)的備用服務(wù)器,主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表。
其中,主用服務(wù)器包括備份單元501,用于在初始同步階段,在收到備用服務(wù)器發(fā)送的初始同步請(qǐng)求后,備份數(shù)據(jù)庫(kù)生成備份文件;同步表單元502,用于在初始同步階段,在同步表更新同步標(biāo)識(shí)號(hào),還用于在實(shí)時(shí)同步階段,更新同步表中的同步標(biāo)識(shí)號(hào),復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;同步表可以設(shè)置于同步表單元中。
備用服務(wù)器包括請(qǐng)求單元503,用于向主用服務(wù)器發(fā)送請(qǐng)求初始同步的請(qǐng)求消息;獲取單元504,用于在初始同步階段,獲取主用服務(wù)器中備份單元生成的備份文件,以及同步表單元502在同步表中更新后的同步表標(biāo)識(shí)并保存;同步單元505,用于在初始同步階段,從獲取單元504獲取備份文件,并用該備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù),還用于在實(shí)時(shí)同步階段,從同步表中獲取SQL語(yǔ)句,并用同樣的SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
主用服務(wù)器的備份單元可以進(jìn)一步包括備份子單元,用于在收到備用服務(wù)器發(fā)送的初始同步請(qǐng)求后,備份數(shù)據(jù)庫(kù)生成備份文件;響應(yīng)子單元,用于在備份子單元備份數(shù)據(jù)庫(kù)成功后,向備用服務(wù)器發(fā)送備份成功消息;其中,備份成功消息攜帶初始同步階段同步表單元在同步表中更新后的同步標(biāo)識(shí)號(hào)。相應(yīng)的,獲取單元從備份成功消息中獲取該同步標(biāo)識(shí)號(hào),從備份子單元中獲取備份文件。
主用服務(wù)器還可以進(jìn)一步包括加鎖子單元,用于在主用服務(wù)器備份數(shù)據(jù)庫(kù)前,對(duì)主用服務(wù)器數(shù)據(jù)庫(kù)加鎖。
該系統(tǒng)還可以包括實(shí)時(shí)同步判斷單元,用于根據(jù)數(shù)據(jù)庫(kù)訪問(wèn)接口提供的參數(shù),判斷有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作時(shí),向同步單元發(fā)送同步命令;同步單元根據(jù)所述同步命令,從同步表中獲取SQL語(yǔ)句,并用同樣的SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù),完成數(shù)據(jù)的實(shí)時(shí)同步。
數(shù)據(jù)同步過(guò)程中,請(qǐng)求單元503根據(jù)獲取單元504保存的同步標(biāo)識(shí)號(hào)是否存在于同步表單元502的同步表中,作出是否需要初始同步的判斷;如果需要初始同步,則發(fā)送請(qǐng)求初始同步的請(qǐng)求消息給主用服務(wù)器的備份單元501。備份單元501收到備用服務(wù)器發(fā)送的請(qǐng)求消息后,備份數(shù)據(jù)庫(kù),生成備份文件。同步表單元502,在同步表中形成更新后的同步標(biāo)識(shí)號(hào)。備份成功后,獲取單元504獲取該備份文件,并獲取該同步表標(biāo)識(shí)并保存之。而同步單元505,利用獲取單元504獲取的備份文件,用該文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù),實(shí)現(xiàn)了數(shù)據(jù)庫(kù)初始同步。
主用服務(wù)器判斷有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作時(shí),同步表單元502復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中,更新同步表單元中的同步標(biāo)識(shí)。在該過(guò)程中,主用服務(wù)器每修改一次數(shù)據(jù),就增加一次同步表記錄。同步單元505從同步表中獲取該SQL語(yǔ)句,并用同樣的SQL訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)的修改同步。備用服務(wù)器同步主用服務(wù)器的第N條記錄時(shí),只會(huì)刪除主用同表中前面的N-1條記錄,第N條記錄保留在同步表中,這樣,備用每次都可以檢查自己同步過(guò)的最后一條記錄是否在同步表中,判斷是否需要初始同步。
而本實(shí)施例中,判斷是否有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作,可以由實(shí)時(shí)同步判斷單元來(lái)實(shí)現(xiàn),該單元根據(jù)數(shù)據(jù)庫(kù)訪問(wèn)接口提供的參數(shù),判斷是否有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作。若判斷結(jié)果為是,則向同步單元505發(fā)送同步命令,同步單元505根據(jù)該命令,從所述同步表中獲取SQL語(yǔ)句,并用同樣的SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
由于本發(fā)明該實(shí)施例數(shù)據(jù)庫(kù)同步系統(tǒng),利用同步表,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始同步和實(shí)時(shí)同步,簡(jiǎn)化對(duì)服務(wù)器配置的修改,數(shù)據(jù)庫(kù)同步不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高了數(shù)據(jù)同步的效率。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明思想的一種展示,而非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)同步方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的初始同步,其特征在于,所述主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)的同步表,該方法包括以下步驟備用服務(wù)器向主用服務(wù)器發(fā)送初始同步請(qǐng)求;主用服務(wù)器根據(jù)接收到的所述初始同步請(qǐng)求,在所述同步表中更新同步標(biāo)識(shí)號(hào),并備份所述主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;備用服務(wù)器獲取所述更新后的同步標(biāo)識(shí)號(hào)和所述備份文件,用所述備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主用服務(wù)器根據(jù)接收到的所述初始同步請(qǐng)求,在所述同步表中更新同步標(biāo)識(shí)號(hào)的步驟包括主用服務(wù)器接收到所述初始同步請(qǐng)求后,清空同步表中的數(shù)據(jù)記錄并插入空記錄,形成更新后的同步標(biāo)識(shí)號(hào)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述主用服務(wù)器備份數(shù)據(jù)庫(kù)成功后,向備用服務(wù)器發(fā)送攜帶所述更新后的同步標(biāo)識(shí)號(hào)的備份成功消息;所述備用服務(wù)器獲取所述更新后的同步標(biāo)識(shí)號(hào)的步驟為備用服務(wù)器從所述備份成功消息中獲取并保存所述更新后的同步標(biāo)識(shí)號(hào)。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括在主用服務(wù)器備份數(shù)據(jù)庫(kù)前,對(duì)主用服務(wù)器數(shù)據(jù)庫(kù)加鎖的步驟。
5.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述同步表中的同步標(biāo)識(shí)號(hào)采用數(shù)據(jù)庫(kù)提供的自動(dòng)遞增的種子屬性。
6.一種數(shù)據(jù)庫(kù)同步方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的實(shí)時(shí)同步,所述主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,所述同步標(biāo)識(shí)號(hào)根據(jù)數(shù)據(jù)庫(kù)操作實(shí)時(shí)更新,其特征在于,該方法包括以下步驟主用服務(wù)器復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到所述同步表中;備用服務(wù)器從所述同步表中獲取所述SQL語(yǔ)句,并用所述SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括如下步驟主用服務(wù)器根據(jù)數(shù)據(jù)庫(kù)訪問(wèn)接口提供的參數(shù),判斷有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述備用服務(wù)器從所述同步表中獲取所述SQL語(yǔ)句的步驟包括獲取主用服務(wù)器數(shù)據(jù)庫(kù)的用戶名和密碼;根據(jù)所述獲取的用戶名和密碼連接到主用服務(wù)器,獲取同步表的所述SQL語(yǔ)句。
9.一種數(shù)據(jù)庫(kù)同步方法,用于主用服務(wù)器數(shù)據(jù)庫(kù)和備用服務(wù)器數(shù)據(jù)庫(kù)的同步,所述主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,其特征在于,該方法包括A、備用服務(wù)器檢查其保存的標(biāo)識(shí)號(hào)是否存在于所述同步表中,如果不存在,則執(zhí)行步驟B、C、D,如果存在,則執(zhí)行步驟E、F;B、向主用服務(wù)器發(fā)送初始同步請(qǐng)求;C、主用服務(wù)器根據(jù)接收到的所述請(qǐng)求,在所述同步表中更新同步標(biāo)識(shí)號(hào),備份所述主用服務(wù)器數(shù)據(jù)庫(kù),生成備份文件;D、備用服務(wù)器獲取所述更新后的同步標(biāo)識(shí)號(hào)和所述備份文件,用所述備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù);E、主用服務(wù)器復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到所述同步表中;F、備用服務(wù)器從所述同步表中獲取所述SQL語(yǔ)句,并用所述SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述主用服務(wù)器根據(jù)接收到的所述初始同步請(qǐng)求,在所述同步表中更新同步標(biāo)識(shí)號(hào)的步驟包括主用服務(wù)器接收到所述初始同步請(qǐng)求后,清空同步表中的數(shù)據(jù)記錄并插入空記錄,形成更新后的同步標(biāo)識(shí)號(hào);主用服務(wù)器備份數(shù)據(jù)庫(kù)成功后,向備用服務(wù)器發(fā)送攜帶所述更新后的同步標(biāo)識(shí)號(hào)的備份成功消息。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,在步驟E之前還包括主用服務(wù)器根據(jù)數(shù)據(jù)庫(kù)訪問(wèn)接口提供的參數(shù),判斷有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述備用服務(wù)器從所述同步表中獲取所述SQL語(yǔ)句的步驟包括備用服務(wù)器獲取主用服務(wù)器數(shù)據(jù)庫(kù)的用戶名和密碼,根據(jù)所述用戶名和密碼連接到主用服務(wù)器上,獲取同步表的所述SQL語(yǔ)句。
13.一種數(shù)據(jù)庫(kù)同步系統(tǒng),包括配置有主用服務(wù)器數(shù)據(jù)庫(kù)的主用服務(wù)器,以及配置有備用服務(wù)器數(shù)據(jù)庫(kù)的備用服務(wù)器,其特征在于,所述主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置有包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表;所述主用服務(wù)器包括備份單元,用于在初始同步階段,在收到備用服務(wù)器發(fā)送的初始同步請(qǐng)求后,備份數(shù)據(jù)庫(kù)生成備份文件;同步表單元,用于在初始同步階段,在所述同步表中更新同步標(biāo)識(shí)號(hào),還用于在實(shí)時(shí)同步階段,更新所述同步表中的同步標(biāo)識(shí)號(hào),復(fù)制需要同步的數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句到同步表中;所述備用服務(wù)器包括請(qǐng)求單元,用于向主用服務(wù)器發(fā)送初始同步請(qǐng)求;獲取單元,用于在初始同步階段,獲取所述備份單元生成的備份文件,以及同步表單元在所述同步表中更新后的同步標(biāo)識(shí)號(hào);同步單元,用于在初始同步階段,從所述獲取單元獲取所述備份文件,并用該備份文件恢復(fù)備用服務(wù)器數(shù)據(jù)庫(kù),還用于在實(shí)時(shí)同步階段,從所述同步表中獲取所述SQL語(yǔ)句,并用所述SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述主用服務(wù)器的備份單元進(jìn)一步包括備份子單元,用于在收到備用服務(wù)器發(fā)送的初始同步請(qǐng)求后,備份數(shù)據(jù)庫(kù)生成備份文件;響應(yīng)子單元,用于在所述備份子單元備份數(shù)據(jù)庫(kù)成功后,向備用服務(wù)器發(fā)送備份成功消息;所述備份成功消息攜帶初始同步階段所述同步表單元在所述同步表中更新后的同步標(biāo)識(shí)號(hào);所述獲取單元從所述備份成功消息中獲取所述更新后的同步標(biāo)識(shí)號(hào),從所述備份子單元中獲取所述備份文件。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述主用服務(wù)器進(jìn)一步包括加鎖子單元,用于在主用服務(wù)器備份數(shù)據(jù)庫(kù)前,對(duì)主用服務(wù)器數(shù)據(jù)庫(kù)加鎖。
16.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,該系統(tǒng)還包括實(shí)時(shí)同步判斷單元,用于根據(jù)數(shù)據(jù)庫(kù)訪問(wèn)接口提供的參數(shù),判斷有需要實(shí)時(shí)同步的數(shù)據(jù)庫(kù)操作時(shí),向所述同步單元發(fā)送同步命令;所述同步單元根據(jù)所述同步命令,從所述同步表中獲取所述SQL語(yǔ)句,并用所述SQL語(yǔ)句訪問(wèn)備用服務(wù)器數(shù)據(jù)庫(kù)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫(kù)同步的方法,該方法中在主用服務(wù)器數(shù)據(jù)庫(kù)中設(shè)置包括同步標(biāo)識(shí)號(hào)和SQL語(yǔ)句的同步表,利用同步表實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。本發(fā)明還公開了一種數(shù)據(jù)庫(kù)同步系統(tǒng),包括主用服務(wù)器和備用服務(wù)器,主用服務(wù)器包括備份單元、同步表單元,備用服務(wù)器包括請(qǐng)求單元、獲取單元和同步單元。本發(fā)明公開的方法和系統(tǒng),利用同步表,在實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步,簡(jiǎn)化對(duì)服務(wù)器配置的修改,使得數(shù)據(jù)庫(kù)同步可以不受操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的限制,提高數(shù)據(jù)同步的效率。
文檔編號(hào)H04L29/06GK101038591SQ20071007388
公開日2007年9月19日 申請(qǐng)日期2007年4月11日 優(yōu)先權(quán)日2007年4月11日
發(fā)明者朱湘毅 申請(qǐng)人:華為技術(shù)有限公司