本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法及設(shè)備。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)不斷發(fā)展,各行各業(yè)的信息化和計(jì)算機(jī)網(wǎng)絡(luò)建設(shè)也得到了迅猛發(fā)展,與此同時(shí),隨著數(shù)據(jù)量的不斷膨脹,數(shù)據(jù)丟失與失效越來越成為信息化服務(wù)部門所不容忽視的問題。數(shù)據(jù)庫技術(shù)在電信、證券、金融、政府、交通與能源等領(lǐng)域穩(wěn)步發(fā)展,尤其是電信行業(yè)一直在同行業(yè)中處于領(lǐng)先地位,其數(shù)據(jù)容災(zāi)保護(hù)也是使用領(lǐng)域所關(guān)注的重要課題。
但是,目前數(shù)據(jù)庫的容災(zāi)保護(hù)仍存在以下問題,以Sybase數(shù)據(jù)庫為例:
1、數(shù)據(jù)庫事務(wù)日志的轉(zhuǎn)儲(chǔ)僅局限于本地。
Sybase數(shù)據(jù)庫管理員必須定期進(jìn)行數(shù)據(jù)庫的備份,一旦系統(tǒng)出現(xiàn)故障,數(shù)據(jù)能夠得到及時(shí)的恢復(fù)。Sybase數(shù)據(jù)庫備份包括對(duì)數(shù)據(jù)庫和事務(wù)日志的轉(zhuǎn)儲(chǔ),但轉(zhuǎn)儲(chǔ)目標(biāo)只局限于本地。在數(shù)據(jù)庫磁盤介質(zhì)正常運(yùn)作的情況下,如果數(shù)據(jù)庫出現(xiàn)邏輯損壞,管理員可在本地選取之前所轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫和相應(yīng)的事務(wù)日志來恢復(fù)數(shù)據(jù)庫;但如果數(shù)據(jù)庫磁盤介質(zhì)損壞,就無法再對(duì)數(shù)據(jù)庫進(jìn)行恢復(fù),從而導(dǎo)致數(shù)據(jù)的丟失。
2、數(shù)據(jù)庫事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的獲取缺少自動(dòng)化。
在對(duì)Sybase數(shù)據(jù)庫進(jìn)行恢復(fù)的過程中,管理員必須基于數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)文件并裝載適當(dāng)?shù)氖聞?wù)日志轉(zhuǎn)儲(chǔ)文件才能恢復(fù)到特定時(shí)間段的任意時(shí)間點(diǎn),若所選取的事務(wù)日志轉(zhuǎn)儲(chǔ)文件有誤,就會(huì)因日志順序錯(cuò)誤而導(dǎo)致恢復(fù)失敗,因此管理員需要識(shí)別適當(dāng)?shù)氖聞?wù)日志轉(zhuǎn)儲(chǔ)文件來進(jìn)行恢復(fù)。但是,通過讀取Sybase備份服務(wù)日志中的時(shí)間戳等信息來確定轉(zhuǎn)儲(chǔ)文件的先后順序,這不僅增加了管理員的額外工作量和恢復(fù)時(shí)間,而且缺少靈活性。
3、數(shù)據(jù)庫事務(wù)日志轉(zhuǎn)儲(chǔ)文件存在多變的可能性。
為了防止磁盤介質(zhì)損壞的情況下對(duì)數(shù)據(jù)庫的正?;謴?fù),管理員需要對(duì)數(shù)據(jù)庫和事務(wù)日志的轉(zhuǎn)儲(chǔ)文件有定期的異地冗余拷貝。如果在此期間,轉(zhuǎn)儲(chǔ)文件有丟失、覆蓋寫入或權(quán)限更改等變化,即使有異地冗余拷貝,也無法做到正?;謴?fù)。這不僅增大了恢復(fù)難度,也擾亂了管理員選取正確事務(wù)日志轉(zhuǎn)儲(chǔ)文件的工作。
綜上,現(xiàn)有數(shù)據(jù)庫事務(wù)日志轉(zhuǎn)儲(chǔ)文件存在只局限于本地,易丟失數(shù)據(jù),文件信息的獲取缺少自動(dòng)化,管理員工作強(qiáng)度大,并在轉(zhuǎn)儲(chǔ)文件有丟失、覆蓋寫入或權(quán)限更改等變化時(shí),恢復(fù)難度較大等缺點(diǎn)。
申請(qǐng)內(nèi)容
針對(duì)上述現(xiàn)有技術(shù)的缺陷,本申請(qǐng)的一個(gè)目的是提供一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法及設(shè)備,解決現(xiàn)有數(shù)據(jù)庫事務(wù)日志轉(zhuǎn)儲(chǔ)文件存在的只局限于本地,易丟失數(shù)據(jù),文件信息的獲取缺少自動(dòng)化,管理員工作強(qiáng)度大,并在轉(zhuǎn)儲(chǔ)文件有丟失、覆蓋寫入或權(quán)限更改等變化時(shí),恢復(fù)難度較大等問題。
根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法,該方法包括:
對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件;
當(dāng)有新的轉(zhuǎn)儲(chǔ)任務(wù)完成時(shí),備份服務(wù)日志會(huì)生成相應(yīng)記錄信息;
將備份服務(wù)日志和已形成的備份服務(wù)日志的拷貝文件進(jìn)行差異性比對(duì),并將差異信息寫入差異臨時(shí)文件;
解析出差異臨時(shí)文件中所包含的內(nèi)容,并將該內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,以待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
進(jìn)一步地,上述方法中,在對(duì)備份服務(wù)日志進(jìn)行拷貝之前,還包括:
設(shè)定指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制,使得獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
進(jìn)一步地,上述方法中,所述解析出差異臨時(shí)文件中所包含的內(nèi)容之后,還包括;
獲取轉(zhuǎn)儲(chǔ)文件的屬性信息;
將所述差異臨時(shí)文件中所包含的內(nèi)容以及轉(zhuǎn)儲(chǔ)文件的屬性信息寫入待上傳臨時(shí)文件;
從待上傳臨時(shí)文件中上傳當(dāng)前寫入的轉(zhuǎn)儲(chǔ)文件信息,并對(duì)該轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記。
進(jìn)一步地,上述方法中,將所述轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件之前,還包括:
檢查待上傳臨時(shí)文件中是否有與轉(zhuǎn)儲(chǔ)文件信息相同的記錄;
若有相同記錄,則不將該條轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件。
進(jìn)一步地,上述方法中,若需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息,包括:
在待上傳臨時(shí)文件中截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息;
檢查該轉(zhuǎn)儲(chǔ)文件信息中轉(zhuǎn)儲(chǔ)文件的屬性信息是否有變化;
如有變化,將該變化的信息重新寫入已標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息中,形成更改后的標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息;
上傳待上傳臨時(shí)文件中更改后的該標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息。
進(jìn)一步地,上述方法中,還包括:
在備份服務(wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫入磁盤。
進(jìn)一步地,上述方法中,所述解析出差異臨時(shí)文件中所包含的內(nèi)容,該內(nèi)容具體包括:
轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息。
進(jìn)一步地,上述方法中,所述轉(zhuǎn)儲(chǔ)文件的屬性信息,包括:轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息;
進(jìn)一步地,上述方法中,所述轉(zhuǎn)儲(chǔ)文件信息包括:轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息、轉(zhuǎn)儲(chǔ)文件實(shí)際大小和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳。
根據(jù)本申請(qǐng)的另一個(gè)方面,提供了一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的設(shè)備,所述設(shè)備包括:
拷貝模塊,用于對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件;
生成模塊,用于當(dāng)有新的轉(zhuǎn)儲(chǔ)任務(wù)完成時(shí),生成相應(yīng)備份服務(wù)日志記錄信息;
比較模塊,將備份服務(wù)日志和已形成的備份服務(wù)日志的拷貝文件進(jìn)行差異性比對(duì),并將差異信息寫入差異臨時(shí)文件;
解析模塊,解析出差異臨時(shí)文件中所包含的內(nèi)容,并將該內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,以待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
進(jìn)一步地,上述設(shè)備中,還包括:
設(shè)定模塊,用于設(shè)定指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制,使得獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
進(jìn)一步地,上述設(shè)備中,,還包括:
獲取模塊,用于獲取轉(zhuǎn)儲(chǔ)文件的屬性信息;
寫入模塊,用于將所述差異臨時(shí)文件中所包含的內(nèi)容以及轉(zhuǎn)儲(chǔ)文件的屬性信息寫入待上傳臨時(shí)文件;
標(biāo)記模塊,用于從待上傳臨時(shí)文件中上傳當(dāng)前寫入的轉(zhuǎn)儲(chǔ)文件信息,并對(duì)該轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記。
進(jìn)一步地,上述設(shè)備中,還包括:
第一檢查模塊,用于檢查待上傳臨時(shí)文件中是否有與轉(zhuǎn)儲(chǔ)文件信息相同的記錄;
若有相同記錄,則不將該條轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件。
進(jìn)一步地,上述設(shè)備中,還包括:
截取模塊,用于在待上傳臨時(shí)文件中截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息;
第二檢查模塊,用于檢查該轉(zhuǎn)儲(chǔ)文件信息中轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息是否有變化;
如有變化,將該變化的信息重新寫入已標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息中,形成更改后的標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息;
上傳模塊,用于上傳待上傳臨時(shí)文件中更改后的該標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息。
進(jìn)一步地,上述設(shè)備中,還包括:
同步刷寫模塊,用于在備份服務(wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫入磁盤。
進(jìn)一步地,上述設(shè)備中,所述解析模塊,具體用于解析出差異臨時(shí)文件中所包含的轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息。
進(jìn)一步地,上述設(shè)備中,所述轉(zhuǎn)儲(chǔ)文件的屬性信息,包括:轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息;
進(jìn)一步地,上述設(shè)備中,所述轉(zhuǎn)儲(chǔ)文件信息包括:轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息、轉(zhuǎn)儲(chǔ)文件實(shí)際大小和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件,以在數(shù)據(jù)庫磁盤介質(zhì)損壞時(shí),對(duì)數(shù)據(jù)庫進(jìn)行恢復(fù)。當(dāng)有新的轉(zhuǎn)儲(chǔ)任務(wù)完成時(shí),備份服務(wù)日志會(huì)生成相應(yīng)記錄信息;此時(shí)若開始獲取轉(zhuǎn)儲(chǔ)文件信息,則將備份服務(wù)日志和已形成的備份服務(wù)日志的拷貝文件進(jìn)行差異性比對(duì),并將差異信息寫入差異臨時(shí)文件;解析出差異臨時(shí)文件中所包含的內(nèi)容,并將該內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,以待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。本申請(qǐng)通過實(shí)時(shí)異步獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息,簡(jiǎn)化了數(shù)據(jù)庫管理員的恢復(fù)工作,進(jìn)而減少數(shù)據(jù)庫恢復(fù)時(shí)間,并最大化確保數(shù)據(jù)庫恢復(fù)成功。
附圖說明
通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法流程圖;
圖2示出根據(jù)本申請(qǐng)一個(gè)方面的一種對(duì)轉(zhuǎn)儲(chǔ)文件信息標(biāo)記的方法流程圖;
圖3示出根據(jù)本申請(qǐng)一個(gè)方面的一種重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息的方法流程圖;
圖4示出根據(jù)本申請(qǐng)一個(gè)方面的一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法整體流程圖;
圖5示出根據(jù)本申請(qǐng)一個(gè)方面的一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的設(shè)備模塊示意圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
為了使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
如圖1所示,根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法,其中,所述方法包括:
步驟S101,對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件;
步驟S102,當(dāng)有新的轉(zhuǎn)儲(chǔ)任務(wù)完成時(shí),備份服務(wù)日志會(huì)生成相應(yīng)記錄信息;
步驟S103,將備份服務(wù)日志和已形成的備份服務(wù)日志的拷貝文件進(jìn)行差異性比對(duì),并將差異信息寫入差異臨時(shí)文件;
步驟S104,解析出差異臨時(shí)文件中所包含的內(nèi)容,并將該內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,以待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
優(yōu)選的,本申請(qǐng)數(shù)據(jù)庫尤以Sybase數(shù)據(jù)庫為例,所述Sybase數(shù)據(jù)庫搭建于Unix/Linux集群環(huán)境上,可事先對(duì)用戶環(huán)境變量做指定配置,即可將獲取轉(zhuǎn)儲(chǔ)文件信息所依賴的差異臨時(shí)文件自動(dòng)部署在集群共享存儲(chǔ)中,保證集群資源切換后對(duì)轉(zhuǎn)儲(chǔ)信息的正常獲取。以上場(chǎng)景可便于更好地論述本申請(qǐng)實(shí)施例中的具體實(shí)現(xiàn)過程,但其只是一個(gè)場(chǎng)景例子,顯然本申請(qǐng)的技術(shù)方案可以應(yīng)用到獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的任何場(chǎng)景下。
本申請(qǐng)通過對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件,以在數(shù)據(jù)庫磁盤介質(zhì)損壞時(shí),保證數(shù)據(jù)庫的成功恢復(fù),避免數(shù)據(jù)的丟失。本申請(qǐng)基于Unix/Linux環(huán)境通過對(duì)Sybase事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的自動(dòng)獲取,來簡(jiǎn)化數(shù)據(jù)庫管理員的恢復(fù)工作,進(jìn)而減少數(shù)據(jù)庫恢復(fù)時(shí)間,并最大化確?;謴?fù)成功。
進(jìn)一步地,上述方法中,在對(duì)備份服務(wù)日志進(jìn)行拷貝之前,還包括:
設(shè)定指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制,使得獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
本申請(qǐng)為了避開對(duì)數(shù)據(jù)庫的其他業(yè)務(wù)保護(hù)流程的影響,設(shè)定了指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制。管理員若需要獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息,即可通過該機(jī)制在獲取轉(zhuǎn)儲(chǔ)信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
進(jìn)一步地,上述方法中,所述解析出差異臨時(shí)文件中所包含的內(nèi)容之后,如圖2所示,還包括:
步驟S201,獲取轉(zhuǎn)儲(chǔ)文件的屬性信息;
步驟S202,將所述差異臨時(shí)文件中所包含的內(nèi)容以及轉(zhuǎn)儲(chǔ)文件的屬性信息寫入待上傳臨時(shí)文件;
步驟S203,從待上傳臨時(shí)文件中上傳當(dāng)前寫入的轉(zhuǎn)儲(chǔ)文件信息,并對(duì)該轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記。
進(jìn)一步地,上述方法中,所述解析出差異臨時(shí)文件中所包含的內(nèi)容,該內(nèi)容具體包括:
轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息。
本申請(qǐng)通過解析出差異臨時(shí)文件中所包含的轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息,將該解析出的內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,完成事務(wù)日志轉(zhuǎn)儲(chǔ)信息的自動(dòng)化解析與實(shí)時(shí)獲取,并待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
進(jìn)一步地,上述方法中,所述轉(zhuǎn)儲(chǔ)文件的屬性信息,包括:轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息;
進(jìn)一步地,上述方法中,所述轉(zhuǎn)儲(chǔ)文件信息包括:轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息、轉(zhuǎn)儲(chǔ)文件實(shí)際大小和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳。
本申請(qǐng)將所述轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息、轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息寫入待上傳臨時(shí)文件,通過為每個(gè)轉(zhuǎn)儲(chǔ)文件附加時(shí)間信息來簡(jiǎn)化恢復(fù)流程。本申請(qǐng)通過對(duì)轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記,管理員可以繞過對(duì)備份服務(wù)日志的讀取來選擇適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)文件,直接從備份服務(wù)器中對(duì)標(biāo)有明確信息的轉(zhuǎn)儲(chǔ)文件進(jìn)行選取并恢復(fù)數(shù)據(jù)庫,不僅減少了管理員的額外工作量和恢復(fù)時(shí)間,而且具有一定的靈活性。
進(jìn)一步地,上述方法中,為了避免事務(wù)日志轉(zhuǎn)儲(chǔ)信息的重傳,將所述轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件之前,還包括:
檢查待上傳臨時(shí)文件中是否有與轉(zhuǎn)儲(chǔ)文件信息相同的記錄;
若有相同記錄,則不將該條轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件。
進(jìn)一步地,上述方法中,若備份服務(wù)器因傳輸實(shí)際文件失敗而需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息時(shí),如圖3所示,具體流程包括:
步驟S301,在待上傳臨時(shí)文件中截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息;
步驟S302,檢查該轉(zhuǎn)儲(chǔ)文件信息中轉(zhuǎn)儲(chǔ)文件的屬性信息是否有變化;如有變化,將該變化的信息重新寫入已標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息中,形成更改后的標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息;
步驟S303,上傳待上傳臨時(shí)文件中更改后的該標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息。
本申請(qǐng)通過截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息,簡(jiǎn)化了對(duì)事務(wù)日志轉(zhuǎn)儲(chǔ)文件的識(shí)別與選取。在備份服務(wù)器因傳輸實(shí)際文件失敗而需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息時(shí),避免了現(xiàn)有技術(shù)中若選取的事務(wù)日志轉(zhuǎn)儲(chǔ)文件有誤,則會(huì)因日志順序錯(cuò)誤而導(dǎo)致恢復(fù)失敗的缺陷。
進(jìn)一步地,上述方法中,還包括:
在備份服務(wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫入磁盤。
本申請(qǐng)?jiān)趥浞莘?wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫,保證其寫入磁盤,避免了在獲取事務(wù)日志轉(zhuǎn)儲(chǔ)信息過程中系統(tǒng)掉電,因差異臨時(shí)文件、待上傳臨時(shí)文件以及拷貝文件未及時(shí)刷寫入磁盤,而在系統(tǒng)恢復(fù)后,獲取轉(zhuǎn)儲(chǔ)信息出現(xiàn)日志轉(zhuǎn)儲(chǔ)信息重傳,或臨時(shí)文件內(nèi)容錯(cuò)亂導(dǎo)致無法獲取轉(zhuǎn)儲(chǔ)信息等各種異常情況。本申請(qǐng)通過實(shí)現(xiàn)文件同步刷寫磁盤,設(shè)定系統(tǒng)掉電保護(hù)機(jī)制來避免突發(fā)性情況所導(dǎo)致的各種錯(cuò)誤。
為了使本發(fā)明所解決的技術(shù)問題、技術(shù)方案以及有益效果更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖4所示為本申請(qǐng)實(shí)施例提供的一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法整體流程圖:
步驟S401,設(shè)定指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制;
步驟S402,判斷是否存在備份服務(wù)日志的拷貝文件,若是,則執(zhí)行S403,否則執(zhí)行S404;
步驟S403,判斷是否需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息,若是,則執(zhí)行S405,否則執(zhí)行S406;
步驟S404,對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件,同步寫入磁盤;
步驟S405,在待上傳臨時(shí)文件中截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息,重新寫入該信息到待上傳臨時(shí)文件并上傳,同步寫入磁盤,獲取轉(zhuǎn)儲(chǔ)文件信息結(jié)束;
步驟S406,判斷是否存在待上傳臨時(shí)文件,若是,則執(zhí)行步驟S407,否則執(zhí)行S408;
步驟S407,判斷待上傳臨時(shí)文件中是否有未標(biāo)記信息,若是,則執(zhí)行S409,否則執(zhí)行S410;
步驟S408,創(chuàng)建待上傳臨時(shí)文件;
步驟S409,在待上傳臨時(shí)文件中檢測(cè)第一條未標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息,重新寫入該信息到待上傳臨時(shí)文件,同步寫入磁盤,獲取轉(zhuǎn)儲(chǔ)文件信息結(jié)束;
步驟S410,將備份服務(wù)日志與拷貝文件的差異信息寫入差異臨時(shí)文件;
步驟S411,判斷差異臨時(shí)文件的內(nèi)容是否為空,若是,則獲取轉(zhuǎn)儲(chǔ)文件信息結(jié)束,否則執(zhí)行S412;
步驟S412,解析出差異臨時(shí)文件中所包含的轉(zhuǎn)儲(chǔ)文件路徑及名稱;
步驟S413,判斷該轉(zhuǎn)儲(chǔ)文件是否在指定過濾路徑中,若是,則執(zhí)行S414,否則執(zhí)行S415;
步驟S414,繼續(xù)解析出轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件的實(shí)際大小、轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息和轉(zhuǎn)儲(chǔ)時(shí)間戳信息;
步驟S415,將差異臨時(shí)文件內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,同步寫入磁盤,繼續(xù)執(zhí)行S410。
步驟S416,檢查待上傳臨時(shí)文件中是否有與轉(zhuǎn)儲(chǔ)文件信息相同的記錄,若是,則執(zhí)行S415,否在執(zhí)行S417;
步驟S417,將以上轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件,同步寫入磁盤;
步驟S418,上傳待上傳臨時(shí)文件中當(dāng)前寫入的轉(zhuǎn)儲(chǔ)文件信息,并對(duì)該轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記;
步驟S419,將差異臨時(shí)文件內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,同步寫入磁盤,獲取轉(zhuǎn)儲(chǔ)文件信息結(jié)束。
綜上所述,本申請(qǐng)通過在裝有Sybase數(shù)據(jù)庫的Unix/Linux系統(tǒng)主機(jī)上實(shí)時(shí)異步獲取指定路徑下的事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息,使得備份服務(wù)器可通過該信息獲取并存儲(chǔ)事務(wù)日志轉(zhuǎn)儲(chǔ)文件,從而實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫的數(shù)據(jù)容災(zāi)保護(hù)。
基于相同的技術(shù)構(gòu)思,本申請(qǐng)還提供一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的設(shè)備,該設(shè)備可執(zhí)行上述方法實(shí)施例,由于該設(shè)備解決問題的原理與前述一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的方法相似,因此該設(shè)備的實(shí)施可以參見方法的實(shí)施。
本申請(qǐng)的另一個(gè)方面提供了一種獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的設(shè)備,如圖5所示,該設(shè)備包括:
拷貝模塊501,用于對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件;
生成模塊502,用于當(dāng)有新的轉(zhuǎn)儲(chǔ)任務(wù)完成時(shí),生成相應(yīng)備份服務(wù)日志記錄信息;
比較模塊503,將備份服務(wù)日志和已形成的備份服務(wù)日志的拷貝文件進(jìn)行差異性比對(duì),并將差異信息寫入差異臨時(shí)文件;
解析模塊504,解析出差異臨時(shí)文件中所包含的內(nèi)容,并將該內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,以待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
優(yōu)選的,本申請(qǐng)數(shù)據(jù)庫尤以Sybase數(shù)據(jù)庫為例,所述Sybase數(shù)據(jù)庫搭建于Unix/Linux集群環(huán)境上,可事先對(duì)用戶環(huán)境變量做指定配置,即可將獲取轉(zhuǎn)儲(chǔ)文件信息所依賴的差異臨時(shí)文件自動(dòng)部署在集群共享存儲(chǔ)中,保證集群資源切換后對(duì)轉(zhuǎn)儲(chǔ)信息的正常獲取。以上場(chǎng)景可便于更好地論述本申請(qǐng)實(shí)施例中的具體實(shí)現(xiàn)過程,但其只是一個(gè)場(chǎng)景例子,顯然本申請(qǐng)的技術(shù)方案可以應(yīng)用到獲取事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的任何場(chǎng)景下。
本申請(qǐng)通過對(duì)備份服務(wù)日志進(jìn)行拷貝,形成備份服務(wù)日志的拷貝文件,以在數(shù)據(jù)庫磁盤介質(zhì)損壞時(shí),保證數(shù)據(jù)庫的成功恢復(fù),避免數(shù)據(jù)的丟失。本申請(qǐng)基于Unix/Linux環(huán)境通過對(duì)Sybase事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息的自動(dòng)獲取,來簡(jiǎn)化數(shù)據(jù)庫管理員的恢復(fù)工作,進(jìn)而減少數(shù)據(jù)庫恢復(fù)時(shí)間,并最大化確?;謴?fù)成功。
進(jìn)一步地,上述設(shè)備中,在對(duì)備份服務(wù)日志進(jìn)行拷貝之前,還包括:
設(shè)定模塊,用于設(shè)定指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制,使得獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
本申請(qǐng)為了避開對(duì)數(shù)據(jù)庫的其他業(yè)務(wù)保護(hù)流程的影響,設(shè)定了指定轉(zhuǎn)儲(chǔ)路徑過濾機(jī)制。管理員若需要獲取指定路徑下的轉(zhuǎn)儲(chǔ)文件信息,即可通過該機(jī)制在獲取轉(zhuǎn)儲(chǔ)信息時(shí),避開對(duì)非指定路徑下轉(zhuǎn)儲(chǔ)文件信息的解析與獲取。
進(jìn)一步地,上述設(shè)備中,還包括:
獲取模塊,用于獲取轉(zhuǎn)儲(chǔ)文件的屬性信息;
寫入模塊,用于將所述差異臨時(shí)文件中所包含的內(nèi)容以及轉(zhuǎn)儲(chǔ)文件的屬性信息寫入待上傳臨時(shí)文件;
標(biāo)記模塊,用于從待上傳臨時(shí)文件中上傳當(dāng)前寫入的轉(zhuǎn)儲(chǔ)文件信息,并對(duì)該轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記。
進(jìn)一步地,上述設(shè)備中,所述解析模塊504,具體用于解析出差異臨時(shí)文件中所包含的轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息。
本申請(qǐng)通過解析模塊解析出差異臨時(shí)文件中所包含的轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息,將該解析出的內(nèi)容追加寫入備份服務(wù)日志的拷貝文件中,完成事務(wù)日志轉(zhuǎn)儲(chǔ)信息的自動(dòng)化解析與實(shí)時(shí)獲取,并待下一次獲取轉(zhuǎn)儲(chǔ)文件信息時(shí)進(jìn)行差異性比對(duì)。
進(jìn)一步地,上述設(shè)備中,所述轉(zhuǎn)儲(chǔ)文件的屬性信息,包括:轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息;
進(jìn)一步地,上述設(shè)備中,所述轉(zhuǎn)儲(chǔ)文件信息包括:轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息、轉(zhuǎn)儲(chǔ)文件實(shí)際大小和轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳。
本申請(qǐng)將所述轉(zhuǎn)儲(chǔ)文件路徑及名稱、轉(zhuǎn)儲(chǔ)文件所屬數(shù)據(jù)庫名稱、轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)儲(chǔ)時(shí)間戳信息、轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息寫入待上傳臨時(shí)文件,通過為每個(gè)轉(zhuǎn)儲(chǔ)文件附加時(shí)間信息來簡(jiǎn)化恢復(fù)流程。本申請(qǐng)通過對(duì)轉(zhuǎn)儲(chǔ)文件信息進(jìn)行標(biāo)記,管理員可以繞過對(duì)備份服務(wù)日志的讀取來選擇適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)文件,直接從備份服務(wù)器中對(duì)標(biāo)有明確信息的轉(zhuǎn)儲(chǔ)文件進(jìn)行選取并恢復(fù)數(shù)據(jù)庫,不僅減少了管理員的額外工作量和恢復(fù)時(shí)間,而且具有一定的靈活性。
進(jìn)一步地,上述設(shè)備中,為了避免事務(wù)日志轉(zhuǎn)儲(chǔ)信息的重傳,還包括:
第一檢查模塊,用于檢查待上傳臨時(shí)文件中是否有與轉(zhuǎn)儲(chǔ)文件信息相同的記錄;
若有相同記錄,則不將該條轉(zhuǎn)儲(chǔ)文件信息寫入待上傳臨時(shí)文件。
進(jìn)一步地,上述設(shè)備中,若備份服務(wù)器因傳輸實(shí)際文件失敗而需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息時(shí),包括:
截取模塊,用于在待上傳臨時(shí)文件中截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息;
第二檢查模塊,用于檢查該轉(zhuǎn)儲(chǔ)文件信息中轉(zhuǎn)儲(chǔ)文件的實(shí)際大小和轉(zhuǎn)儲(chǔ)文件權(quán)限狀態(tài)信息是否有變化;
如有變化,將該變化的信息重新寫入已標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息中,形成更改后的標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息;
上傳模塊,用于上傳待上傳臨時(shí)文件中更改后的該標(biāo)記處轉(zhuǎn)儲(chǔ)文件信息。
本申請(qǐng)通過截取最后一次標(biāo)記的轉(zhuǎn)儲(chǔ)文件信息,簡(jiǎn)化了對(duì)事務(wù)日志轉(zhuǎn)儲(chǔ)文件的識(shí)別與選取。在備份服務(wù)器因傳輸實(shí)際文件失敗而需要重新獲取上一條轉(zhuǎn)儲(chǔ)文件信息時(shí),避免了現(xiàn)有技術(shù)中若選取的事務(wù)日志轉(zhuǎn)儲(chǔ)文件有誤,則會(huì)因日志順序錯(cuò)誤而導(dǎo)致恢復(fù)失敗的缺陷。
進(jìn)一步地,上述設(shè)備中,還包括:
同步刷寫模塊,用于在備份服務(wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫入磁盤。
本申請(qǐng)?jiān)趥浞莘?wù)日志的拷貝文件和待上傳臨時(shí)文件中有新的信息寫入時(shí),對(duì)該拷貝文件和待上傳臨時(shí)文件進(jìn)行同步刷寫,保證其寫入磁盤,避免了在獲取事務(wù)日志轉(zhuǎn)儲(chǔ)信息過程中系統(tǒng)掉電,因差異臨時(shí)文件、待上傳臨時(shí)文件以及拷貝文件未及時(shí)刷寫入磁盤,而在系統(tǒng)恢復(fù)后,獲取轉(zhuǎn)儲(chǔ)信息出現(xiàn)日志轉(zhuǎn)儲(chǔ)信息重傳,或臨時(shí)文件內(nèi)容錯(cuò)亂導(dǎo)致無法獲取轉(zhuǎn)儲(chǔ)信息等各種異常情況。本申請(qǐng)通過實(shí)現(xiàn)文件同步刷寫磁盤,設(shè)定系統(tǒng)掉電保護(hù)機(jī)制來避免突發(fā)性情況所導(dǎo)致的各種錯(cuò)誤。
綜上所述,本申請(qǐng)通過在裝有Sybase數(shù)據(jù)庫的Unix/Linux系統(tǒng)主機(jī)上實(shí)時(shí)異步獲取指定路徑下的事務(wù)日志轉(zhuǎn)儲(chǔ)文件信息,使得備份服務(wù)器可通過該信息獲取并存儲(chǔ)事務(wù)日志轉(zhuǎn)儲(chǔ)文件,從而實(shí)現(xiàn)對(duì)Sybase數(shù)據(jù)庫的數(shù)據(jù)容災(zāi)保護(hù)。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,在本申請(qǐng)一實(shí)施例中,可采用專用集成電路(ASIC)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,在本申請(qǐng)一實(shí)施例中,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來實(shí)現(xiàn),在本申請(qǐng)一實(shí)施例中,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,在本申請(qǐng)一實(shí)施例中計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在本申請(qǐng)一實(shí)施例中,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。