張海全 金貝貝 陳春樺 李赫然 李浩
(國電南瑞科技股份有限公司)
自中美貿(mào)易爭端以來,美國多次對中國企業(yè)進行制裁,對中國科技企業(yè)進行打壓、封鎖,以其科技霸權(quán)來遏制中國的發(fā)展。電力行業(yè)是能源領(lǐng)域的支柱行業(yè),更是國家未來能源戰(zhàn)略的重中之重。因此在XC產(chǎn)業(yè)中,電力信息系統(tǒng)的XC改造更應(yīng)該首當(dāng)其沖地跟進產(chǎn)業(yè)浪潮發(fā)展,積極改造創(chuàng)新,完成國家戰(zhàn)略部署。電力信息系統(tǒng)間集成關(guān)系復(fù)雜,開發(fā)語言多樣、嚴(yán)重依賴國外數(shù)據(jù)庫產(chǎn)品,如Oracle、SQLserver、DB2等。數(shù)據(jù)庫作為底層數(shù)據(jù)存儲與管理的系統(tǒng),是電力信息系統(tǒng)的核心,在電力信息系統(tǒng)的XC改造工作中,進行國產(chǎn)數(shù)據(jù)庫的適配測試與遷移具有重要意義。
數(shù)據(jù)庫作為信息化的基礎(chǔ),是企業(yè)IT系統(tǒng)必不可少的核心技術(shù),通過對數(shù)據(jù)的管理賦能上層應(yīng)用。在XC實踐中,重點是在保障客戶關(guān)鍵數(shù)據(jù)資產(chǎn)的安全性的前提下,幫助用戶從原有的數(shù)據(jù)庫系統(tǒng)切換到國產(chǎn)數(shù)據(jù)庫系統(tǒng),達到業(yè)務(wù)應(yīng)用和數(shù)據(jù)順利地遷移,數(shù)據(jù)庫適配遷移及穩(wěn)定性保障異常復(fù)雜與重要。
數(shù)據(jù)庫適配遷移就是從一個數(shù)據(jù)庫到另一個數(shù)據(jù)庫之間的數(shù)據(jù)移動,兩端的數(shù)據(jù)庫可能是PostgreSql、mysql、oracle、Sql Server、國產(chǎn)數(shù)據(jù)庫等。遷移過程是一個具有挑戰(zhàn)性的復(fù)雜過程,需要對數(shù)據(jù)庫的原理以及各自的特性了如指掌。
根據(jù)實際的適配遷移流程,可以分為前期評估,數(shù)據(jù)遷移,應(yīng)用遷移,項目測試4個階段,具體如下:
(1)前期評估
根據(jù)應(yīng)用程序功能模塊、數(shù)據(jù)庫中對象及類型對工作量進行評估,并設(shè)計數(shù)據(jù)遷移方案同時做相應(yīng)的遷移準(zhǔn)備工作。設(shè)計數(shù)據(jù)遷移方案主要包括以下幾個方面工作:研究與數(shù)據(jù)遷移相關(guān)的資料,評估和選擇數(shù)據(jù)遷移的軟硬件平臺、選擇數(shù)據(jù)遷移方法、選擇數(shù)據(jù)備份和恢復(fù)策略、設(shè)計數(shù)據(jù)遷移和測試方案等。遷移準(zhǔn)備工作主要包括數(shù)據(jù)庫的檢查與準(zhǔn)備工作,硬件環(huán)境的檢查與準(zhǔn)備工作,相關(guān)人員的準(zhǔn)備等。
(2)數(shù)據(jù)遷移
遷移數(shù)據(jù)庫對象包括應(yīng)用系統(tǒng)所使用的數(shù)據(jù)庫基本對象和高級對象的遷移。基本對象包括數(shù)據(jù)庫、用戶/模式、表、約束、索引、視圖和數(shù)據(jù)等;高級對象包括序列、同義詞、數(shù)據(jù)庫鏈接、觸發(fā)器、函數(shù)、存儲過程和包等。
(3)應(yīng)用遷移
在正式實施遷移后,開始進行應(yīng)用的遷移,包括數(shù)據(jù)庫的連接,數(shù)據(jù)庫連接驅(qū)動的調(diào)整、外鏈接的調(diào)整、SQL語句的調(diào)整等。
(4)功能測試
調(diào)整完成后,測試應(yīng)用連接目標(biāo)國產(chǎn)數(shù)據(jù)庫是否還存在問題,如果沒有問題發(fā)生,表示應(yīng)用遷移完成,如果還存在問題,及時調(diào)整數(shù)據(jù)庫中的一些設(shè)置等。
2.2.1 確定遷移對象,組建遷移團隊
應(yīng)用系統(tǒng)的數(shù)據(jù)庫遷移,首先需要確定遷移對象。開始遷移前,首先根據(jù)實際需要和應(yīng)用系統(tǒng)大小制定遷移目標(biāo),確定遷移對象。根據(jù)需要遷移的應(yīng)用系統(tǒng)或功能模塊,確定要遷移的具體數(shù)據(jù)庫對象。組建一個健全、良好的應(yīng)用系統(tǒng)遷移團隊是非常有必要的。有一個健全、良好的遷移團隊互相配合、支持,可以規(guī)避很多遷移風(fēng)險。遷移團隊必須有對要遷移的應(yīng)用系統(tǒng)架構(gòu)和應(yīng)用功能實現(xiàn)了解非常清楚的開發(fā)和測試人員,即必須有該應(yīng)用系統(tǒng)的開發(fā)人員、測試人員參與。其次遷移的工作最好由開發(fā)人員去完成,這樣效率和準(zhǔn)確性都會有所保證。
2.2.2 遷移評估
實施階段一般包括表結(jié)構(gòu)遷移、數(shù)據(jù)的遷移、視圖的遷移、存儲過程和函數(shù)的遷移、應(yīng)用程序的遷移等。根據(jù)適配遷移過程,項目不同,所用時間彈性較大的步驟在于實施階段中對存儲過程、函數(shù)、應(yīng)用程序等的遷移。借助適配遷移工具實施遷移,可實現(xiàn)遷移周期最短化。
2.2.3 準(zhǔn)備遷移環(huán)境
首先需要準(zhǔn)備軟硬件環(huán)境。如果要遷移的源數(shù)據(jù)庫數(shù)據(jù)量較大,如大于10GB,那么建議源數(shù)據(jù)庫和目標(biāo)國產(chǎn)數(shù)據(jù)庫分別部署在不同的物理機器上,并考慮源和目的服務(wù)器的硬件配置,CPU、內(nèi)存、網(wǎng)絡(luò)環(huán)境盡量配置得好一些,以保證遷移速度。如果數(shù)據(jù)量較大,建議先對目標(biāo)國產(chǎn)數(shù)據(jù)庫進行基本的優(yōu)化,如增大共享內(nèi)存分配、添加較大的日志文件,預(yù)先申請足夠的表空間數(shù)據(jù)庫文件等。
2.2.4 遷移基本對象和數(shù)據(jù)
首先遷移基本對象和數(shù)據(jù),然后進行高級對象的遷移。做好準(zhǔn)備工作,即可使用適配遷移工具遷移基本對象和數(shù)據(jù),主要包括表、數(shù)據(jù)、約束(外鍵、缺省、檢查約束、唯一性約束)、索引、視圖和序列等。
2.2.5 遷移應(yīng)用程序
遷移應(yīng)用程序,主要是接口API和應(yīng)用中涉及的數(shù)據(jù)庫交互SQL的遷移,目前國產(chǎn)數(shù)據(jù)庫在接口、SQL方面的標(biāo)準(zhǔn)兼容性做得比較好,所以,應(yīng)用程序的遷移,一般也較容易完成。應(yīng)用的遷移往往和應(yīng)用系統(tǒng)功能測試同時進行,在功能測試的過程中,發(fā)現(xiàn)問題,及時修改。對于使用JDBC標(biāo)準(zhǔn)連接協(xié)議的應(yīng)用程序,只需要替換為目標(biāo)國產(chǎn)數(shù)據(jù)庫的jdbc接口驅(qū)動,在應(yīng)用程序中修改數(shù)據(jù)庫連接字符串即可,根據(jù)JDK的版本選擇合適的驅(qū)動。
2.2.6 應(yīng)用系統(tǒng)功能測試和排錯
任何一個成熟的應(yīng)用系統(tǒng)有關(guān)鍵代碼的變動后,都應(yīng)該進行全面細致的測試,更換后臺數(shù)據(jù)庫系統(tǒng)更需對遷移后的應(yīng)用系統(tǒng)進行全面的功能測試和性能測試。功能測試即對該應(yīng)用系統(tǒng)的每一個大小模塊、功能進行全面的系統(tǒng)回歸測試,以確保新的應(yīng)用系統(tǒng)的各個功能都可以正常使用,且能保證數(shù)據(jù)的正確性。因此完成數(shù)據(jù)庫和應(yīng)用程序遷移后,必須對應(yīng)用系統(tǒng)進行全面的功能測試,對測試出來的問題,及時分析、排查和修改。對那些很難定位的問題,建議由測試、開發(fā)人員等一起共同追蹤、診斷解決。
針對適配遷移過程中可能出現(xiàn)的各種問題,制定相應(yīng)的應(yīng)急預(yù)案:
1)數(shù)據(jù)遷移測試中或正式遷移如果對業(yè)務(wù)系統(tǒng)性能產(chǎn)生影響,應(yīng)該立即停止遷移操作,待數(shù)據(jù)庫壓力空閑時再進行。②如果在部署數(shù)據(jù)庫遷移過程中出現(xiàn)硬件故障或者操作失誤可以使用備份進行恢復(fù)。③如果在切換過程中發(fā)生數(shù)據(jù)異常,可以在不影響業(yè)務(wù)數(shù)據(jù)的情況下,對數(shù)據(jù)庫進行恢復(fù)。④如果切換完成之后發(fā)現(xiàn)數(shù)據(jù)異常,應(yīng)立即停止應(yīng)用對目標(biāo)國產(chǎn)數(shù)據(jù)庫的連接,這時,如果應(yīng)用系統(tǒng)需要處于運行狀態(tài),可以把應(yīng)用連接指向原來的數(shù)據(jù)庫。問題解決后,再把應(yīng)用連接指向目標(biāo)國產(chǎn)數(shù)據(jù)庫。⑤應(yīng)用回退,如果應(yīng)用系統(tǒng)已經(jīng)從源數(shù)據(jù)庫切換到目標(biāo)國產(chǎn)數(shù)據(jù)庫,并且目標(biāo)國產(chǎn)數(shù)據(jù)庫相關(guān)的應(yīng)用服務(wù)已經(jīng)產(chǎn)生了部分的增量數(shù)據(jù),這時出現(xiàn)了異常和故障,必須開始執(zhí)行應(yīng)用系統(tǒng)回退。這時由于源數(shù)據(jù)庫的系統(tǒng)環(huán)境仍然被保留,仍只需要將客戶端重新指向源數(shù)據(jù)庫就可以完成回退。目標(biāo)國產(chǎn)數(shù)據(jù)庫由于接管業(yè)務(wù)所產(chǎn)生的增量數(shù)據(jù),要根據(jù)應(yīng)用的具體情況來進行考慮,用手工方式將數(shù)據(jù)最大程度地完整保留并導(dǎo)入到源數(shù)據(jù)庫中。
在國家XC產(chǎn)業(yè)的推進進程中,數(shù)據(jù)庫作為三大核心基礎(chǔ)軟件之一,也是國產(chǎn)替代的核心部分,雖然遷移適配過程困難且復(fù)雜,且在遷移適配工作中,有時還需要應(yīng)用開發(fā)商的配合進行架構(gòu)的優(yōu)化、兼容性的支持和性能的提升等,必要時需要進行程序的調(diào)整及優(yōu)化,但是通過專業(yè)的技術(shù)團隊加上專業(yè)的遷移工具,再經(jīng)過專業(yè)的測試流程,在電力行業(yè)中是可以實現(xiàn)國產(chǎn)化替代的,后續(xù)希望多開展國產(chǎn)化替代項目,豐富電力行業(yè)數(shù)據(jù)庫遷移適配經(jīng)驗的同時也加速國家XC產(chǎn)業(yè)在電力行業(yè)的推進工作。通過上述研究與實踐能夠幫助電力信息系統(tǒng)進行XC改造。