數(shù)據(jù)庫數(shù)據(jù)遷移方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及計算機(jī)技術(shù)中不同數(shù)據(jù)庫之間數(shù)據(jù)遷移的方法,尤其涉及異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)遷移的方法及系統(tǒng)。
【背景技術(shù)】
[0002]早期互聯(lián)網(wǎng)應(yīng)用中,底層數(shù)據(jù)普遍采取單庫存儲所有數(shù)據(jù)的存儲方案。隨著互聯(lián)網(wǎng)應(yīng)用的發(fā)展,用戶量的激增,數(shù)據(jù)存儲數(shù)量呈指數(shù)遞增,底層數(shù)據(jù)單庫存儲方案制約甚至限制著互聯(lián)網(wǎng)應(yīng)用的進(jìn)一步擴(kuò)展。為此,為解決單庫存儲的瓶頸問題,需逐步采用另外一種支持橫向存儲的解決方案。而要解決數(shù)據(jù)存儲的瓶頸,必須切換現(xiàn)有的存儲結(jié)構(gòu),但由于目前底層數(shù)據(jù)量非常龐大,在切換存儲結(jié)構(gòu)的同時,如何將原有的海量數(shù)據(jù)遷移到新的支持橫向擴(kuò)展的存儲結(jié)構(gòu)上也是一個很大的瓶頸點。
[0003]現(xiàn)有的進(jìn)行互聯(lián)網(wǎng)中數(shù)據(jù)遷移用到的手段或者是通過不同數(shù)據(jù)庫提供的導(dǎo)入導(dǎo)出工具將原數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)出到文件中,再將這些數(shù)據(jù)文件通過另外一種數(shù)據(jù)庫工具導(dǎo)入到新的數(shù)據(jù)表,或者在不同數(shù)據(jù)庫中編寫和應(yīng)用相關(guān)的程序,在程序中將數(shù)據(jù)從原數(shù)據(jù)庫中通過查詢語句查詢出來后,再通過程序?qū)?shù)據(jù)插入到新的數(shù)據(jù)庫,或者利用云數(shù)據(jù)遷移工具,將一個關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到分布式系統(tǒng)集群Hadoop的分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)中,也可以將HDFS的數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫中。通過Sqoop,可以在基于Hadoop分布式處理的基礎(chǔ)上,將數(shù)據(jù)從原數(shù)據(jù)庫中取出到HDFS中,再將數(shù)據(jù)從HDFS中取出導(dǎo)入到新的數(shù)據(jù)庫中。由此看出目前互聯(lián)網(wǎng)中的數(shù)據(jù)遷移工具的核心都在于將數(shù)據(jù)從原數(shù)據(jù)庫中導(dǎo)出,再將數(shù)據(jù)導(dǎo)入到新的數(shù)據(jù)庫中,這些技術(shù)方案存在以下不足,首先是在多表海量數(shù)據(jù)情況下無法進(jìn)行批量操作;其次,無法避免數(shù)據(jù)量超出服務(wù)器處理能力的問題;再次,現(xiàn)有的數(shù)據(jù)庫數(shù)據(jù)遷移工具普遍都無法支持對數(shù)據(jù)的二次處理,即都不能夠支持對原數(shù)據(jù)庫數(shù)據(jù)的分庫遷移;最后,目前互聯(lián)網(wǎng)中的數(shù)據(jù)遷移工具很多都不支持?jǐn)?shù)據(jù)遷移后的校驗功能。
【發(fā)明內(nèi)容】
[0004]有鑒于此,有必要提供一種數(shù)據(jù)庫數(shù)據(jù)遷移方法及系統(tǒng),以解決現(xiàn)有數(shù)據(jù)庫數(shù)據(jù)遷移中存在的速度、穩(wěn)定性及數(shù)據(jù)正確性的問題。
[0005]本申請?zhí)峁┮环N數(shù)據(jù)庫數(shù)據(jù)遷移方法,應(yīng)用在分布式系統(tǒng)集群環(huán)境中,用于在第一數(shù)據(jù)庫和第二數(shù)據(jù)庫之間遷移數(shù)據(jù),該方法包括:
[0006]配置數(shù)據(jù)庫遷移任務(wù)的被批量調(diào)度的多個表任務(wù)對應(yīng)的表任務(wù)信息,所述每個表任務(wù)將第一數(shù)據(jù)庫中與該表任務(wù)對應(yīng)的源數(shù)據(jù)表進(jìn)行數(shù)據(jù)遷移;
[0007]從第一數(shù)據(jù)庫讀出該表任務(wù)中需遷移的源數(shù)據(jù)表的數(shù)據(jù);
[0008]并對該源數(shù)據(jù)表的數(shù)據(jù)進(jìn)行分庫得到多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)入到分布式文件系統(tǒng)中;及從所述分布式文件系統(tǒng)中將該多個分庫數(shù)據(jù)表導(dǎo)出到第二數(shù)據(jù)庫中。
[0009]進(jìn)一步地,所述遷移方法還包括:比較第一數(shù)據(jù)庫與第二數(shù)據(jù)庫中的數(shù)據(jù),校驗在遷移過程中數(shù)據(jù)是否有缺失以及數(shù)據(jù)是否不完整。
[0010]本申請還提供一種數(shù)據(jù)庫數(shù)據(jù)遷移系統(tǒng),運行在分布式系統(tǒng)集群環(huán)境中,用于在第一數(shù)據(jù)庫和第二數(shù)據(jù)庫之間遷移數(shù)據(jù),該遷移系統(tǒng)包括:
[0011]配置模塊,用于配置數(shù)據(jù)庫遷移任務(wù)的多個表任務(wù)對應(yīng)的表任務(wù)信息,所述每個表任務(wù)指對第一數(shù)據(jù)庫中一個源數(shù)據(jù)表進(jìn)行數(shù)據(jù)遷移的遷移任務(wù);
[0012]調(diào)度控制模塊,能夠讀取所述表任務(wù)信息,并批量調(diào)度所述多個表任務(wù);
[0013]數(shù)據(jù)導(dǎo)入模塊,用于根據(jù)所調(diào)度的表任務(wù)從第一數(shù)據(jù)庫讀出該表任務(wù)中需遷移的源數(shù)據(jù)表的數(shù)據(jù),并對該源數(shù)據(jù)表的數(shù)據(jù)進(jìn)行分庫得到多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)入到分布式文件系統(tǒng)中;及
[0014]數(shù)據(jù)導(dǎo)出模塊,從所述分布式文件系統(tǒng)中讀出所述多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)出到第二數(shù)據(jù)庫中。
[0015]進(jìn)一步地,所述遷移系統(tǒng)還包括數(shù)據(jù)校驗?zāi)K,該數(shù)據(jù)校驗?zāi)K用于比較第一數(shù)據(jù)庫與第二數(shù)據(jù)庫中的數(shù)據(jù),校驗在遷移過程中數(shù)據(jù)是否有缺失以及數(shù)據(jù)是否不完整。
[0016]與現(xiàn)有技術(shù)相比,本申請數(shù)據(jù)庫數(shù)據(jù)遷移方法及系統(tǒng)將每個數(shù)據(jù)表當(dāng)作一個遷移任務(wù),以數(shù)據(jù)庫導(dǎo)入導(dǎo)出工具或者定制程序作為異構(gòu)數(shù)據(jù)庫讀寫數(shù)據(jù)的主要手段,在分布式集群中運行這些任務(wù),同時在數(shù)據(jù)處理中加入自定義的分庫算法,將讀出的數(shù)據(jù)劃分到多個文件中,再在任務(wù)中調(diào)用數(shù)據(jù)庫導(dǎo)入導(dǎo)出工具或者定制程序?qū)?shù)據(jù)導(dǎo)入到多個新的數(shù)據(jù)庫中。由于每個表都是一個遷移任務(wù),使得不同表不同數(shù)據(jù)源的問題能夠有清晰的劃分,可以支持多個任務(wù)批量同時進(jìn)行而不互相影響,大大的加快了數(shù)據(jù)遷移的速度。在遷移完成后,可以對新庫和舊庫之間的數(shù)據(jù)進(jìn)行校驗,找出不一致的數(shù)據(jù)。因此本申請相對傳統(tǒng)的處理數(shù)據(jù)導(dǎo)入導(dǎo)出的方法,提高了遷移的速度,提供了數(shù)據(jù)校驗功能,保證了遷移過程中的穩(wěn)定性及遷移過程中的數(shù)據(jù)正確性。
【主權(quán)項】
1.一種數(shù)據(jù)庫數(shù)據(jù)遷移方法,應(yīng)用在分布式系統(tǒng)集群環(huán)境中,用于在第一數(shù)據(jù)庫和第二數(shù)據(jù)庫之間遷移數(shù)據(jù),其特征在于,該方法包括:配置數(shù)據(jù)庫遷移任務(wù)的被批量調(diào)度的多個表任務(wù)對應(yīng)的表任務(wù)信息,所述每個表任務(wù)將第一數(shù)據(jù)庫中與該表任務(wù)對應(yīng)的源數(shù)據(jù)表進(jìn)行數(shù)據(jù)遷移;從第一數(shù)據(jù)庫讀出該表任務(wù)中需遷移的源數(shù)據(jù)表的數(shù)據(jù);并對該源數(shù)據(jù)表的數(shù)據(jù)進(jìn)行分庫得到多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)入到分布式文件系統(tǒng)中;及從所述分布式文件系統(tǒng)中將該多個分庫數(shù)據(jù)表導(dǎo)出到第二數(shù)據(jù)庫中。2.如權(quán)利要求1所述的數(shù)據(jù)庫數(shù)據(jù)遷移方法,其特征在于,通過表配置文件來配置多個表任務(wù)對應(yīng)的表任務(wù)信息。3.如權(quán)利要求2所述的數(shù)據(jù)庫數(shù)據(jù)遷移方法,其特征在于,對應(yīng)每個表任務(wù),所述表配置文件包括源配置和目標(biāo)配置,所述源配置給出了第一數(shù)據(jù)庫中需要遷移的源數(shù)據(jù)表的信息,所述目標(biāo)配置給出了要把需要遷移的源數(shù)據(jù)表遷往的第二數(shù)據(jù)庫中的目標(biāo)數(shù)據(jù)表的信肩、O4.如權(quán)利要求1所述的數(shù)據(jù)庫數(shù)據(jù)遷移方法,其特征在于,將第一數(shù)據(jù)庫中數(shù)據(jù)導(dǎo)入到分布式文件系統(tǒng)中的過程包括:獲取并加載所調(diào)度的表任務(wù)的表任務(wù)信息,所述表任務(wù)信息中包括該表任務(wù)對應(yīng)需要遷移的源數(shù)據(jù)表的切分字段及分庫字段信息;根據(jù)所述表任務(wù)信息中的切分字段將需要遷移的源數(shù)據(jù)表分成第一數(shù)量的多個切片,并請求分布式系統(tǒng)集群對應(yīng)每個切片形成一個第一映射任務(wù),所述每個第一映射任務(wù)都與第一數(shù)據(jù)庫連接并讀取源數(shù)據(jù)表的一個切片;進(jìn)一步請求分布式系統(tǒng)集群在所述每個第一映射任務(wù)中,根據(jù)所述表任務(wù)信息中的分庫字段對該第一映射任務(wù)讀取的每個切片進(jìn)行分庫得到第二數(shù)量的分庫數(shù)據(jù)表,進(jìn)一步請求分布式系統(tǒng)集群根據(jù)所述分庫后得到的每個分庫數(shù)據(jù)表對應(yīng)形成一個第一化簡任務(wù);及由每個第一化簡任務(wù)將分庫后得到的每個分庫數(shù)據(jù)表的數(shù)據(jù)寫入到分布式文件系統(tǒng)中。
【專利摘要】本申請?zhí)峁┮环N數(shù)據(jù)庫數(shù)據(jù)遷移方法,應(yīng)用在分布式系統(tǒng)集群環(huán)境中,用于在第一數(shù)據(jù)庫和第二數(shù)據(jù)庫之間遷移數(shù)據(jù),該方法包括:配置數(shù)據(jù)庫遷移任務(wù)的多個表任務(wù)對應(yīng)的表任務(wù)信息,所述多個表任務(wù)能夠被批量調(diào)度;根據(jù)所調(diào)度的表任務(wù)從第一數(shù)據(jù)庫讀出該表任務(wù)中需遷移的源數(shù)據(jù)表的數(shù)據(jù),并對該源數(shù)據(jù)表的數(shù)據(jù)進(jìn)行分庫得到多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)入到分布式文件系統(tǒng)中;及從所述分布式文件系統(tǒng)中讀出所述多個分庫數(shù)據(jù)表,再將該多個分庫數(shù)據(jù)表導(dǎo)出到第二數(shù)據(jù)庫中。所述遷移方法只需要一次配置即可將不同的數(shù)據(jù)從一種數(shù)據(jù)庫遷移到另外一種數(shù)據(jù)庫,提高了數(shù)據(jù)遷移的速度及穩(wěn)定性。本申請還提供一種數(shù)據(jù)庫數(shù)據(jù)遷移系統(tǒng)。
【IPC分類】G06F17/30
【公開號】CN105528381
【申請?zhí)枴緾N201410583273
【發(fā)明人】李 東
【申請人】青島金訊網(wǎng)絡(luò)工程有限公司
【公開日】2016年4月27日
【申請日】2014年10月27日