一種數(shù)據(jù)庫遷移方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫遷移方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)庫的應(yīng)用已深入到生活和工作中,各種數(shù)據(jù)庫管理系統(tǒng)、網(wǎng)站等的數(shù)據(jù)都離不開數(shù)據(jù)庫的支持。在某些情況下,需要對(duì)數(shù)據(jù)庫進(jìn)行遷移,所謂的數(shù)據(jù)庫遷移是指在目標(biāo)環(huán)境中加載源環(huán)境中的數(shù)據(jù)庫。數(shù)據(jù)庫遷移技術(shù)的一個(gè)應(yīng)用目的是實(shí)現(xiàn)數(shù)據(jù)庫資源的升級(jí)或降級(jí)。例如,對(duì)于云平臺(tái)中租戶所使用的數(shù)據(jù)庫實(shí)例,在創(chuàng)建之初,就會(huì)指定數(shù)據(jù)庫實(shí)例能夠占用的數(shù)據(jù)庫資源,但是隨著租戶需求的變更,租戶需要升級(jí)或者降級(jí)數(shù)據(jù)庫資源,又例如源環(huán)境中的數(shù)據(jù)庫出現(xiàn)問題,需要目標(biāo)環(huán)境對(duì)數(shù)據(jù)庫進(jìn)行重新配置時(shí),可以采用數(shù)據(jù)庫遷移技術(shù)。在上述的情況下,就需要對(duì)數(shù)據(jù)庫進(jìn)行遷移。
[0003]現(xiàn)有技術(shù)中的數(shù)據(jù)庫遷移方法,通常是接收到數(shù)據(jù)庫的遷移指令之后,停止外部對(duì)數(shù)據(jù)庫的訪問,不再允許對(duì)數(shù)據(jù)庫進(jìn)行讀寫操作,利用源環(huán)境中的對(duì)數(shù)據(jù)庫的備份,將數(shù)據(jù)庫加載到目標(biāo)環(huán)境中,待到數(shù)據(jù)庫完成遷移后,再允許外部對(duì)該數(shù)據(jù)庫進(jìn)行訪問。
[0004]但是,應(yīng)用上述的數(shù)據(jù)庫遷移方法,在數(shù)據(jù)庫的遷移過程中,用戶不能對(duì)數(shù)據(jù)庫進(jìn)行操作,只有在數(shù)據(jù)庫遷移完成、允許外部對(duì)目標(biāo)環(huán)境的數(shù)據(jù)庫的訪問之后,用戶才能再次對(duì)數(shù)據(jù)庫進(jìn)行操作,數(shù)據(jù)庫的遷移可能是由于用戶的需求產(chǎn)生的,也有可能是服務(wù)器廠商的需求產(chǎn)生的,也可能是數(shù)據(jù)庫升級(jí)導(dǎo)致的,隨著數(shù)據(jù)庫越來越龐大,高頻率或長時(shí)間的遷移數(shù)據(jù)庫的行為時(shí)有發(fā)生,太多的時(shí)間不能對(duì)數(shù)據(jù)庫操作,將大大降低數(shù)據(jù)庫的服務(wù)質(zhì)量,造成用戶流失。因此,本發(fā)明希望數(shù)據(jù)庫遷移時(shí),盡最大限度的減少不可用時(shí)間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)庫遷移方法及裝置,以實(shí)現(xiàn)在數(shù)據(jù)庫遷移的過程中,不妨礙用戶對(duì)數(shù)據(jù)庫進(jìn)行操作。
[0006]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種數(shù)據(jù)庫遷移方法,包括:
[0007]接收數(shù)據(jù)庫遷移指令,確定待遷移數(shù)據(jù)庫的源環(huán)境,并創(chuàng)建目標(biāo)環(huán)境;
[0008]獲取對(duì)所述待遷移數(shù)據(jù)庫的最近一次全量備份,至少將所述最近一次全量備份加載到目標(biāo)環(huán)境中;
[0009]在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移;
[0010]判斷所述目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值;
[0011]如果是,將虛擬IP從指向所述待遷移數(shù)據(jù)庫的IP地址切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址;
[0012]判斷所述虛擬IP的指向是否已切換完畢且所述目標(biāo)數(shù)據(jù)庫完成遷移;
[0013]如果是,則將用戶切換到目標(biāo)數(shù)據(jù)庫進(jìn)行讀寫操作。
[0014]較佳的,所述全量備份和所述事務(wù)日志分別存儲(chǔ)在文件存儲(chǔ)系統(tǒng)、或者源環(huán)境、或者目標(biāo)環(huán)境中。
[0015]較佳的,所述文件存儲(chǔ)系統(tǒng)是分布式文件系統(tǒng)。
[0016]較佳的,所述在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移,包括:
[0017]按照所述事務(wù)日志中記載的每個(gè)時(shí)間點(diǎn)用戶對(duì)數(shù)據(jù)庫的操作記錄,從距離所述全量備份生成的時(shí)間最晚一次的操作記錄開始,依照每條操作記錄逐條更新目標(biāo)數(shù)據(jù)庫,直到依照距離當(dāng)前時(shí)間最近一條事務(wù)日志更新完畢。
[0018]較佳的,所述判斷所述目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值之后,如果所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別大于預(yù)先設(shè)置的閾值時(shí),返回執(zhí)行所述在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移的步驟。
[0019]較佳的,所述判斷所述目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值,包括:
[0020]當(dāng)所述目標(biāo)數(shù)據(jù)庫讀取所述事務(wù)日志中的一條操作記錄時(shí),計(jì)算所述操作記錄的時(shí)間戳與當(dāng)前系統(tǒng)時(shí)間之差,如果所述時(shí)間差等于或者小于所述預(yù)先設(shè)置的閾值,則所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別達(dá)到預(yù)設(shè)的閾值;如果所述時(shí)間差大于所述預(yù)先設(shè)置的閾值,則所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別未達(dá)到所述預(yù)先設(shè)置的閾值。
[0021 ] 為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種數(shù)據(jù)庫遷移裝置,包括:遷移指令接收模塊、加載模塊、遷移模塊、閾值判斷模塊、切換模塊、遷移判斷模塊和讀寫遷移模塊,其中,
[0022]所述遷移指令接收模塊,用于接收數(shù)據(jù)庫遷移指令,確定待遷移數(shù)據(jù)庫的源環(huán)境,并創(chuàng)建目標(biāo)環(huán)境;
[0023]所述加載模塊,用于獲取對(duì)所述待遷移數(shù)據(jù)庫的最近一次全量備份,至少將所述最近一次全量備份加載到目標(biāo)環(huán)境中;
[0024]所述遷移模塊,用于在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移;
[0025]所述閾值判斷模塊,用于判斷所述目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值;
[0026]所述切換模塊,用于在所述閾值判斷模塊判斷結(jié)果為是情況下,將虛擬IP從指向所述待遷移數(shù)據(jù)庫的IP地址切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址;
[0027]所述遷移判斷模塊,用于判斷所述虛擬IP的指向是否已切換完畢且所述目標(biāo)數(shù)據(jù)庫是否完成遷移;
[0028]所述讀寫遷移模塊,用于在所述遷移判斷模塊判斷結(jié)果為是的情況下,將用戶切換到目標(biāo)數(shù)據(jù)庫進(jìn)行讀寫操作。
[0029]較佳的,所述全量備份和所述事務(wù)日志分別存儲(chǔ)在文件存儲(chǔ)系統(tǒng)、或者源環(huán)境、或者目標(biāo)環(huán)境中。
[0030]較佳的,所述文件存儲(chǔ)系統(tǒng)是分布式文件系統(tǒng)。
[0031]較佳的,所述加載模塊,具體用于:
[0032]按照所述事務(wù)日志中記載的每個(gè)時(shí)間點(diǎn)用戶對(duì)數(shù)據(jù)庫的操作記錄,從距離所述全量備份生成的時(shí)間最晚一次的操作記錄開始,依照每條操作記錄逐條更新目標(biāo)數(shù)據(jù)庫,直到依照距離當(dāng)前時(shí)間最近一條事務(wù)日志更新完畢。
[0033]較佳的,所述切換模塊,還用于:
[0034]在所述閾值判斷模塊判斷結(jié)果為否情況下,觸發(fā)所述遷移模塊。
[0035]較佳的,所述閾值判斷模塊,具體用于:
[0036]當(dāng)所述目標(biāo)數(shù)據(jù)庫讀取所述事務(wù)日志中的一條操作記錄時(shí),計(jì)算所述操作記錄的時(shí)間戳與當(dāng)前系統(tǒng)時(shí)間之差,如果所述時(shí)間差等于或者小于所述預(yù)先設(shè)置的閾值,則所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別達(dá)到預(yù)設(shè)的閾值;如果所述時(shí)間差大于所述預(yù)先設(shè)置的閾值,則所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別未達(dá)到所述預(yù)先設(shè)置的閾值。
[0037]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種數(shù)據(jù)庫遷移方法,包括:
[0038]接收數(shù)據(jù)庫遷移指令,確定待遷移數(shù)據(jù)庫的源環(huán)境,并創(chuàng)建目標(biāo)環(huán)境;
[0039]判斷所述目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值;
[0040]如果是,將虛擬IP切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址;
[0041]判斷所述虛擬IP的指向是否已切換完畢且所述目標(biāo)數(shù)據(jù)庫完成遷移;
[0042]如果是,則將用戶切換到目標(biāo)數(shù)據(jù)庫進(jìn)行讀寫操作。
[0043]較佳的,所述創(chuàng)建目標(biāo)環(huán)境,還包括:
[0044]獲取對(duì)所述待遷移數(shù)據(jù)庫的最近一次全量備份,至少將所述最近一次全量備份加載到目標(biāo)環(huán)境中;
[0045]在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移。
[0046]較佳的,所述將虛擬IP切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址的步驟,包括:所述將虛擬IP從指向所述待遷移數(shù)據(jù)庫的IP地址切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址。
[0047]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種數(shù)據(jù)庫遷移裝置,包括:遷移指令接收模塊、加載模塊、遷移模塊、閾值判斷模塊、切換模塊、遷移判斷模塊和讀寫遷移模塊,其中,
[0048]所述遷移指令接收模塊,用于接收數(shù)據(jù)庫遷移指令,確定待遷移數(shù)據(jù)庫的源環(huán)境,并創(chuàng)建目標(biāo)環(huán)境;
[0049]所述閾值判斷模塊,用于判斷所述目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫與待遷移數(shù)據(jù)庫的差別是否等于或小于預(yù)先設(shè)置的閾值;
[0050]所述切換模塊,用于在所述閾值判斷模塊判斷結(jié)果為是情況下,將虛擬IP切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址;
[0051]所述遷移判斷模塊,用于判斷所述虛擬IP的指向是否已切換完畢且所述目標(biāo)數(shù)據(jù)庫是否完成遷移;
[0052]所述讀寫遷移模塊,用于在所述遷移判斷模塊判斷結(jié)果為是的情況下,將用戶切換到目標(biāo)數(shù)據(jù)庫進(jìn)行讀寫操作。
[0053]較佳的,遷移指令接收模塊之后,還包括:
[0054]所述加載模塊,用于獲取對(duì)所述待遷移數(shù)據(jù)庫的最近一次全量備份,至少將所述最近一次全量備份加載到目標(biāo)環(huán)境中;
[0055]所述遷移模塊,用于在加載最近一次全量備份完成后,在目標(biāo)環(huán)境中的目標(biāo)數(shù)據(jù)庫上應(yīng)用所述待遷移數(shù)據(jù)庫的事務(wù)日志進(jìn)行遷移。
[0056]較佳的,所述加載模塊,具體用于:
[0057]按照所述事務(wù)日志中記載的每個(gè)時(shí)間點(diǎn)用戶對(duì)數(shù)據(jù)庫的操作記錄,從距離所述全量備份生成的時(shí)間最晚一次的操作記錄開始,依照每條操作記錄逐條更新目標(biāo)數(shù)據(jù)庫,直到依照距離當(dāng)前時(shí)間最近一條事務(wù)日志更新完畢。
[0058]較佳的,遷移判斷模塊,還用于將虛擬IP從指向所述待遷移數(shù)據(jù)庫的IP地址切換為指向所述目標(biāo)數(shù)據(jù)庫的IP地址。
[0059]較佳的,所述全量備份和所述事務(wù)日志分別存儲(chǔ)在文件存儲(chǔ)系統(tǒng)、或者源環(huán)境、或者目標(biāo)環(huán)境中。
[0060]較佳的,所述文件存儲(chǔ)系統(tǒng)是分布式文件系統(tǒng)。
[0061]較佳的,所述切換模塊,還用于:
[0062]在所述閾值判斷模塊判斷結(jié)果為否情況下,觸發(fā)所述遷移模塊。
[0063]較佳的,所述閾值判斷模塊,具體用于:
[0064]當(dāng)所述目標(biāo)數(shù)據(jù)庫讀取所述事務(wù)日志中的一條操作記錄時(shí),計(jì)算所述操作記錄的時(shí)間戳與當(dāng)前系統(tǒng)時(shí)間之差,如果所述時(shí)間差等于或者小于所述預(yù)先設(shè)置的閾值,則所述目標(biāo)數(shù)據(jù)庫與所述待遷移數(shù)據(jù)庫的差別達(dá)到預(yù)設(shè)的閾值;如果所述時(shí)間差大于所述預(yù)先設(shè)置的閾值,則所