語句。上述序號(hào)僅為方便說明,并不代表對(duì)各步驟執(zhí)行順序的限定。
[0036]比對(duì)完成后,即生成差異同步腳本,這個(gè)差異同步腳本即可用來同步目標(biāo)服務(wù)器。用戶可對(duì)差異同步腳本的內(nèi)容進(jìn)行查看確認(rèn),確認(rèn)這些變化操作都是需要的,也可對(duì)差異同步腳本進(jìn)行修改調(diào)整。然后,在目標(biāo)服務(wù)器上執(zhí)行此差異同步腳本對(duì)測(cè)試數(shù)據(jù)庫進(jìn)行版本升級(jí),執(zhí)行升級(jí)完畢后兩個(gè)數(shù)據(jù)庫的結(jié)構(gòu)就一致了。
[0037]此差異同步腳本在測(cè)試服務(wù)器的測(cè)試數(shù)據(jù)庫測(cè)試過需求后,再用來升級(jí)部署各套線上正式環(huán)境的數(shù)據(jù)庫。為避免線上環(huán)境的更改,也可以在測(cè)試數(shù)據(jù)庫和正式數(shù)據(jù)庫之間進(jìn)行差異檢測(cè),生成新的差異同步腳本后再進(jìn)行升級(jí)。
[0038]在具體實(shí)施時(shí),將目標(biāo)服務(wù)器A與標(biāo)準(zhǔn)服務(wù)器B連接;
然后指定一個(gè)需要對(duì)比的schema (數(shù)據(jù)庫);
例如:目標(biāo)服務(wù)器A的system庫和標(biāo)準(zhǔn)服務(wù)器B的system庫進(jìn)行對(duì)比;
再分類檢索子結(jié)構(gòu),進(jìn)行分類比對(duì);
例如以PROCEDURE (存儲(chǔ)過程)數(shù)據(jù)結(jié)構(gòu)為例;
首先分別獲取A和B的存儲(chǔ)過程名稱列表,進(jìn)行對(duì)比。
[0039]如果A存在,而B不存在,則需要?jiǎng)h除A中的PROCEDURE,生成刪除該P(yáng)ROCEDURE的同步SQL腳本。
[0040]如果A不存在,而B存在,則A需要增加這個(gè)PROCEDURE,生成新建該P(yáng)ROCEDURE的同步SQL腳本。
[0041]如果A,B同時(shí)存在,再進(jìn)行進(jìn)一步獲取PROCEDURE的詳細(xì)信息,對(duì)比詳細(xì)的內(nèi)部實(shí)現(xiàn),definer等信息。不一致則生成更新該P(yáng)ROCEDURE的同步SQL腳本。一致的話就不做處理,進(jìn)入下一項(xiàng)對(duì)比。
[0042]其他類型的結(jié)構(gòu),也按同樣的邏輯進(jìn)行對(duì)比,其中table里面還細(xì)分了 column和index兩個(gè)子項(xiàng)的循環(huán)對(duì)比。
[0043]一個(gè)schema檢測(cè)結(jié)束后,如果存在差異,進(jìn)行差異提示并輸出差異同步腳本。
[0044]服務(wù)器基本都存在多個(gè)schema,可以指定多個(gè)schema,在對(duì)比完成一個(gè)以后,自動(dòng)切換至下一組進(jìn)行比對(duì)。
[0045]最后,如果存在差異,生成差異同步腳本。針對(duì)目標(biāo)服務(wù)器的數(shù)據(jù)庫執(zhí)行差異同步文件,即可完成數(shù)據(jù)庫的快速同步。為了避免在同步的過程中中斷的情況發(fā)生,而引發(fā)需要重復(fù)執(zhí)行同步的情況,生成的差異同步腳本可重復(fù)執(zhí)行,避免重復(fù)執(zhí)行的報(bào)錯(cuò)。如:創(chuàng)建表,字段等信息時(shí)是判斷存在,存在則不創(chuàng)建,刪除字段,索引等信息,也進(jìn)行存在判斷,判斷操作也通過檢測(cè)informat1n_schema庫的信息。
[0046]在現(xiàn)實(shí)的生產(chǎn)環(huán)境中,一個(gè)系統(tǒng)根據(jù)運(yùn)營(yíng)商的不同和使用者的不同,往往會(huì)部署很多套環(huán)境。聯(lián)網(wǎng)存在即時(shí)性,經(jīng)常有些修改會(huì)運(yùn)營(yíng)庫上直接調(diào)整,再運(yùn)營(yíng)過程整也有時(shí)會(huì)對(duì)DB進(jìn)行優(yōu)化調(diào)整。此時(shí)也容易產(chǎn)生數(shù)據(jù)庫之間差異。
[0047]在此情況下,本發(fā)明的差異檢測(cè)也能發(fā)揮效能,和開發(fā)環(huán)境類似的,配置好需要比對(duì)的兩個(gè)服務(wù)器的IP地址,分別為標(biāo)準(zhǔn)服務(wù)器和目標(biāo)服務(wù)器,設(shè)置好需要對(duì)比數(shù)據(jù)庫,差異同步文件的輸出路徑,在數(shù)據(jù)庫低壓力時(shí)間段,定期執(zhí)行差異檢測(cè)程序,比如每周二的凌晨2點(diǎn),執(zhí)行一次差異檢測(cè)(定時(shí)進(jìn)行標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間結(jié)構(gòu)差異的比較,并輸出差異腳本文件)。當(dāng)兩個(gè)服務(wù)器之間存在結(jié)構(gòu)不同,輸出一個(gè)非空的差異同步腳本,短信或者郵件通知運(yùn)維人員進(jìn)行處理。本發(fā)明可針對(duì)兩兩服務(wù)器之間的檢測(cè),對(duì)于多個(gè)服務(wù)器,可使用多個(gè)檢測(cè)進(jìn)程即可。
[0048]針對(duì)夸互聯(lián)網(wǎng)的部署,為提升檢測(cè)的速度,避免網(wǎng)絡(luò)帶來的減速,可通過批處理的方式將線上數(shù)據(jù)庫的結(jié)構(gòu)復(fù)制到本地?cái)?shù)進(jìn)行比對(duì)檢測(cè)。
[0049]基于上述方法,本發(fā)明還提供一種基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng)較佳實(shí)施例,如圖6所示,其包括:
輸出模塊100,用于讀取標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器的結(jié)構(gòu)信息,根據(jù)所述結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異,輸出可重復(fù)執(zhí)行的差異同步腳本;
同步模塊200,用于根據(jù)所述差異同步腳本對(duì)目標(biāo)服務(wù)器執(zhí)行同步操作,使目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器保持結(jié)構(gòu)一致。
[0050]進(jìn)一步,所述系統(tǒng)其還包括:
預(yù)設(shè)模塊,用于預(yù)先將目標(biāo)服務(wù)器的IP地址設(shè)置為標(biāo)準(zhǔn)服務(wù)器的IP地址,并設(shè)置目標(biāo)服務(wù)器的賬號(hào)密碼;將標(biāo)準(zhǔn)服務(wù)器的IP地址設(shè)置為目標(biāo)服務(wù)器的IP地址,并設(shè)置標(biāo)準(zhǔn)服務(wù)器的賬號(hào)密碼;設(shè)置需要比較的數(shù)據(jù)庫的名稱;以及差異同步腳本的生成路徑。
[0051]進(jìn)一步,如圖7所示,所述輸出模塊100具體包括:
連接單元110,用于自動(dòng)將目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器進(jìn)行連接;
解析單元120,用于循環(huán)選擇目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器中的數(shù)據(jù)庫,獲取相應(yīng)結(jié)構(gòu)信息并解析;
比較單元130,用于根據(jù)解析的結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差升。
[0052]進(jìn)一步,如圖8所示,所述輸出模塊100還包括:
增加單元140,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息缺失時(shí),則增加生成容錯(cuò)判重的新建SQL語句;
變更單元150,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息變更時(shí),則增加生成容錯(cuò)判重的修改SQL語句;
刪除單元160,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息多余時(shí),則增加生成容錯(cuò)判重的刪除SQL語句。
[0053]進(jìn)一步,所述輸出模塊100中,定時(shí)進(jìn)行標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間結(jié)構(gòu)差異的比較,并輸出差異腳本文件。
[0054]關(guān)于上述模塊單元的技術(shù)細(xì)節(jié)在前面的方法中已有詳述,故不再贅述。
[0055]綜上所述,本發(fā)明可自動(dòng)檢測(cè)不同數(shù)據(jù)庫結(jié)構(gòu)中存在的差異,并自動(dòng)編碼生成出處理差異的可執(zhí)行方案(差異同步腳本),簡(jiǎn)化了版本升級(jí)的流程,增加升級(jí)的準(zhǔn)確性,確保生產(chǎn)環(huán)境的正確性,節(jié)省了人力消耗,同時(shí)大大降低人為的失誤因數(shù)。并且這種腳本是容錯(cuò)的,可重復(fù)執(zhí)行。
[0056]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
[0057]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種基于MYSQL的結(jié)構(gòu)差異處理方法,其特征在于,包括步驟: 讀取標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器的結(jié)構(gòu)信息,根據(jù)所述結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異,輸出可重復(fù)執(zhí)行的差異同步腳本; 根據(jù)所述差異同步腳本對(duì)目標(biāo)服務(wù)器執(zhí)行同步操作,使目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器保持結(jié)構(gòu)一致。2.根據(jù)權(quán)利要求1所述的基于MYSQL的結(jié)構(gòu)差異處理方法,其特征在于,在讀取結(jié)構(gòu)信息之前還包括: 預(yù)先設(shè)置目標(biāo)服務(wù)器的賬號(hào)密碼以及標(biāo)準(zhǔn)服務(wù)器的賬號(hào)密碼; 設(shè)置需要比較的數(shù)據(jù)庫的名稱; 以及差異同步腳本的生成路徑。3.根據(jù)權(quán)利要求1所述的基于MYSQL的結(jié)構(gòu)差異處理方法,其特征在于,結(jié)構(gòu)差異的比較過程具體包括: 自動(dòng)將目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器進(jìn)行連接; 循環(huán)選擇目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器中的數(shù)據(jù)庫,獲取相應(yīng)結(jié)構(gòu)信息并解析; 根據(jù)解析的結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異。4.根據(jù)權(quán)利要求1所述的基于MYSQL的結(jié)構(gòu)差異處理方法,其特征在于,輸出生成可重復(fù)執(zhí)行的差異同步腳本的過程包括: 當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息缺失時(shí),則增加生成容錯(cuò)判重的新建SQL語句; 當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息變更時(shí),則增加生成容錯(cuò)判重的修改SQL語句; 當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息多余時(shí),則增加生成容錯(cuò)判重的刪除SQL語句。5.根據(jù)權(quán)利要求1所述的基于MYSQL的結(jié)構(gòu)差異處理方法,其特征在于,定時(shí)進(jìn)行標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間結(jié)構(gòu)差異的比較,并輸出差異腳本文件。6.一種基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng),其特征在于,包括: 輸出模塊,用于讀取標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器的結(jié)構(gòu)信息,根據(jù)所述結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異,輸出可重復(fù)執(zhí)行的差異同步腳本; 同步模塊,用于根據(jù)所述差異同步腳本對(duì)目標(biāo)服務(wù)器執(zhí)行同步操作,使目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器保持結(jié)構(gòu)一致。7.根據(jù)權(quán)利要求6所述的基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng),其特征在于,還包括: 預(yù)設(shè)模塊,用于預(yù)先設(shè)置目標(biāo)服務(wù)器的賬號(hào)密碼以及標(biāo)準(zhǔn)服務(wù)器的賬號(hào)密碼;設(shè)置需要比較的數(shù)據(jù)庫的名稱;以及差異同步腳本的生成路徑。8.根據(jù)權(quán)利要求6所述的基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng),其特征在于,所述輸出模塊具體包括: 連接單元,用于自動(dòng)將目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器進(jìn)行連接; 解析單元,用于循環(huán)選擇目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器中的數(shù)據(jù)庫,獲取相應(yīng)結(jié)構(gòu)信息并解析; 比較單元,用于根據(jù)解析的結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異。9.根據(jù)權(quán)利要求6所述的基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng),其特征在于,所述輸出模塊還包括: 增加單元,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息缺失時(shí),則增加生成容錯(cuò)判重的新建SQL語句; 變更單元,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息變更時(shí),則增加生成容錯(cuò)判重的修改SQL語句; 刪除單元,用于當(dāng)目標(biāo)服務(wù)器有結(jié)構(gòu)信息多余時(shí),則增加生成容錯(cuò)判重的刪除SQL語句。10.根據(jù)權(quán)利要求6所述的基于MYSQL的結(jié)構(gòu)差異處理系統(tǒng),其特征在于,所述輸出模塊中,定時(shí)進(jìn)行標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間結(jié)構(gòu)差異的比較,并輸出差異腳本文件。
【專利摘要】本發(fā)明公開一種基于MYSQL的結(jié)構(gòu)差異處理方法及系統(tǒng),其中,方法包括步驟:讀取標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器的結(jié)構(gòu)信息,根據(jù)所述結(jié)構(gòu)信息比較標(biāo)準(zhǔn)服務(wù)器與目標(biāo)服務(wù)器之間的結(jié)構(gòu)差異,輸出可重復(fù)執(zhí)行的差異同步腳本;根據(jù)所述差異同步腳本對(duì)目標(biāo)服務(wù)器執(zhí)行同步操作,使目標(biāo)服務(wù)器與標(biāo)準(zhǔn)服務(wù)器保持結(jié)構(gòu)一致。本發(fā)明可自動(dòng)檢測(cè)不同數(shù)據(jù)庫結(jié)構(gòu)中存在的差異,并自動(dòng)編碼生成出處理差異的可執(zhí)行方案(差異同步腳本),簡(jiǎn)化了版本升級(jí)的流程,增加升級(jí)的準(zhǔn)確性,確保生產(chǎn)環(huán)境的正確性,節(jié)省了人力消耗,同時(shí)大大降低人為的失誤因數(shù)。并且這種腳本是容錯(cuò)的,可重復(fù)執(zhí)行。
【IPC分類】G06F17/30
【公開號(hào)】CN104881455
【申請(qǐng)?zhí)枴緾N201510260394
【發(fā)明人】曾秋陽
【申請(qǐng)人】深圳市酷開網(wǎng)絡(luò)科技有限公司
【公開日】2015年9月2日
【申請(qǐng)日】2015年5月20日