摘要:隨著國產(chǎn)化替代需求日益迫切,在完成硬件國產(chǎn)化替代的基礎上,如何將現(xiàn)有系統(tǒng)遷移至國產(chǎn)化環(huán)境已成為亟待解決的問題。文章以某系統(tǒng)為例,研究了國產(chǎn)化遷移的工作步驟,包括風險評估、方案制定、系統(tǒng)適配、數(shù)據(jù)遷移、部署測試、問題歸零及驗收等,并基于Docker實現(xiàn)了系統(tǒng)的遷移部署。
關鍵詞:國產(chǎn)化遷移;Docker;系統(tǒng)適配;數(shù)據(jù)遷移;達夢數(shù)據(jù)庫
中圖分類號:TP301文獻標識碼:A
文章編號:1009-3044(2024)35-0047-03開放科學(資源服務)標識碼(OSID):
0引言
近年來,西方國家在一些關鍵技術方面對我國實施嚴格封鎖,危及國家信息安全命脈。信息安全已成為我國社會面臨的嚴峻問題,因此實現(xiàn)信息產(chǎn)品軟硬件國產(chǎn)化具有重大意義和緊迫性。
目前,國產(chǎn)化產(chǎn)品不僅在計算機、操作系統(tǒng)、數(shù)據(jù)庫、辦公軟件、中間件等方面日趨成熟,而且與云計算、Docker等虛擬化技術結合更加緊密。采用基于Docker容器的國產(chǎn)化遷移,可以有效降低開發(fā)成本,簡化部署多種應用實例的工作[1],快速實現(xiàn)國產(chǎn)化替代。研究辦公信息系統(tǒng)的國產(chǎn)化遷移,對于保障國家信息安全、提升自主可控能力具有重要意義。對于已具備遷移條件的成熟系統(tǒng),采用國產(chǎn)化遷移方式可以有效降低開發(fā)成本,快速實現(xiàn)國產(chǎn)化替代。
1現(xiàn)狀分析
對待遷移系統(tǒng)的現(xiàn)狀進行分析,并明確遷移工作步驟。
遷移前:系統(tǒng)采用虛擬化部署方式,運行于X86平臺的VMware虛擬機中,操作系統(tǒng)為WindowsServer,數(shù)據(jù)庫為MySQL。
遷移后:系統(tǒng)將遷移至基于國產(chǎn)銀河麒麟操作系統(tǒng)的云計算平臺,部署于Docker容器中,數(shù)據(jù)庫采用國產(chǎn)達夢數(shù)據(jù)庫。與傳統(tǒng)的使用虛擬機進行虛擬化方式相比,Docker容器具有簡化部署、快速可用和更高速的虛擬化等優(yōu)勢[2]。
國產(chǎn)化遷移工作通常包括以下步驟:風險評估、方案制定、系統(tǒng)適配、數(shù)據(jù)遷移、部署測試、問題歸零及驗收。遷移工作步驟如表1所示。
2風險評估
2.1兼容性風險評估
系統(tǒng)可能與國產(chǎn)化硬件和軟件存在兼容性問題,例如驅(qū)動程序不兼容、接口標準不一致等,可能導致系統(tǒng)無法正常運行或功能受限。解決對策:充分調(diào)研系統(tǒng)對軟硬件的要求,論證是否能夠通過修改代碼完成適配,制定詳細的測試計劃,進行充分的技術研究和測試。
2.2進度風險評估
系統(tǒng)遷移過程中的技術難題、環(huán)境搭建、測試驗證等環(huán)節(jié)都可能導致進度延誤,影響項目整體進度。解決對策:制定詳細的項目計劃,明確每個階段的時間節(jié)點和責任人;采用敏捷開發(fā)等靈活的開發(fā)模式,加快開發(fā)進度;加強風險監(jiān)控和預警,及時采取措施應對進度風險。
2.3穩(wěn)定性風險評估
國產(chǎn)化遷移后的系統(tǒng)可能會面臨穩(wěn)定性問題,如系統(tǒng)崩潰、功能不完善等,影響用戶體驗。解決對策:進行充分的系統(tǒng)測試,包括功能測試、性能測試、安全測試、可用性測試和兼容性測試等;建立完善的運維監(jiān)控體系,及時發(fā)現(xiàn)和解決系統(tǒng)問題;與國產(chǎn)化平臺廠商合作,共同提升系統(tǒng)的穩(wěn)定性和可靠性。
2.4安全性風險評估
國產(chǎn)化遷移后的系統(tǒng)可能會面臨安全性問題,例如漏洞攻擊、數(shù)據(jù)泄露等。解決對策:進行全面的安全風險評估,識別系統(tǒng)存在的安全漏洞和風險點;制定詳細的安全防護方案,采取多層次的安全防護措施,例如防火墻、入侵檢測和數(shù)據(jù)加密等;加強安全意識培訓,提高用戶和管理員的安全意識和技能。
3系統(tǒng)適配
為了更好地進行適配,需要了解系統(tǒng)的結構,明確適配內(nèi)容。該系統(tǒng)采用SpringBoot框架開發(fā),后臺提供了動態(tài)的數(shù)據(jù)庫結構管理。底層數(shù)據(jù)庫連接池采用Druid,是一種支持實時分析的分布式數(shù)據(jù)存儲系統(tǒng)[3]。數(shù)據(jù)庫查詢封裝組件采用MyBatis-Plus,查詢數(shù)據(jù)庫底層代碼采用QueryWrapper進行查詢條件的組合。系統(tǒng)使用JDBC連接數(shù)據(jù)庫,采用MySQL語句實現(xiàn)對數(shù)據(jù)庫表的創(chuàng)建、編輯和刪除等操作。遷移至國產(chǎn)環(huán)境前,需要修改配置文件及動態(tài)數(shù)據(jù)庫表的增刪改查操作,在原有代碼的基礎上,按照達夢數(shù)據(jù)庫表的語法對其代碼進行優(yōu)化升級,新增對達夢數(shù)據(jù)庫的操作語句和代碼。具體包含以下內(nèi)容。
3.1修改配置文件
需要修改pom.xml文件,例如添加達夢數(shù)據(jù)庫的依賴項等;在application.yml文件中配置數(shù)據(jù)源信息,更換數(shù)據(jù)庫的方言、連接地址、用戶名和密碼等。
3.2底層代碼適配
包括創(chuàng)建表代碼、編輯表字段代碼、重命名字段代碼、創(chuàng)建主鍵、普通索引和刪除索引等。
創(chuàng)建表代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改創(chuàng)建數(shù)據(jù)表的SQL語句,包括數(shù)據(jù)類型、默認值和約束等。
編輯表字段代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改編輯數(shù)據(jù)表字段的SQL語句,包括修改字段類型、長度和默認值等。
重命名字段代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改重命名字段的SQL語句。
創(chuàng)建主鍵:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改創(chuàng)建主鍵的SQL語句。
普通索引和刪除索引代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改創(chuàng)建和刪除索引的SQL語句。
創(chuàng)建全文索引代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改創(chuàng)建全文索引的SQL語句。
修改表名稱代碼:根據(jù)達夢數(shù)據(jù)庫的語法規(guī)范,修改表名稱的SQL語句。
4數(shù)據(jù)遷移
數(shù)據(jù)遷移包括數(shù)據(jù)庫遷移和文件系統(tǒng)遷移兩部分。數(shù)據(jù)庫遷移需要將原MySQL數(shù)據(jù)庫中的數(shù)據(jù)導入達夢數(shù)據(jù)庫,文件系統(tǒng)遷移需要將系統(tǒng)相關的文件和目錄遷移至目標環(huán)境。在國產(chǎn)化替代進程中,如何實現(xiàn)主流數(shù)據(jù)庫中的歷史數(shù)據(jù)向國產(chǎn)數(shù)據(jù)庫的遷移成為推進過程中的重點和難點,也制約著部分機構推進國產(chǎn)化的積極性[4]。在數(shù)據(jù)遷移過程中遇到了以下問題:
4.1數(shù)據(jù)庫無法直接連接
在遷移前后的兩個數(shù)據(jù)庫可以直連的情況下,使用達夢數(shù)據(jù)庫的遷移工具可以直接連接MySQL數(shù)據(jù)庫,將所有數(shù)據(jù)表復制到達夢數(shù)據(jù)庫中,通過創(chuàng)建遷移任務,按照遷移步驟進行配置。由于遷移前后的兩個系統(tǒng)無法直接連接,因此無法使用這種方法。
在遷移前后的兩個數(shù)據(jù)庫無法直連的情況下,有兩種數(shù)據(jù)遷移方式:其中一種是將MySQL數(shù)據(jù)庫導出的.sql文件,按照達夢數(shù)據(jù)庫的語法對導出的.sql文件進行編輯修改,包括但不限于字段類型定義的語法、索引創(chuàng)建的語法、編碼格式定義的語法和函數(shù)使用的語法等,再將修改后的數(shù)據(jù)導入達夢數(shù)據(jù)庫,該方法費時費力、效率較低;另一種方法是在MySQL安裝環(huán)境預先安裝達夢數(shù)據(jù)庫,將MySQL表通過達夢數(shù)據(jù)庫的遷移工具遷移到達夢數(shù)據(jù)庫中,再將該環(huán)境中的達夢數(shù)據(jù)庫中的表全部導出,然后新建遷移任務,將數(shù)據(jù)導入目標環(huán)境中的達夢數(shù)據(jù)庫,該方法無須人工修改,高效便捷。
4.2字段信息不匹配
在數(shù)據(jù)遷移過程中,可能會出現(xiàn)由于數(shù)據(jù)庫字段類型或長度不匹配導致的錯誤。例如,MySQL數(shù)據(jù)庫中的VARCHAR類型字段在達夢數(shù)據(jù)庫中可能需要轉(zhuǎn)換為TEXT類型。針對這類問題,需要根據(jù)實際情況修改數(shù)據(jù)庫表結構或數(shù)據(jù)轉(zhuǎn)換規(guī)則。
4.3大小寫敏感
達夢數(shù)據(jù)庫默認情況下對數(shù)據(jù)庫對象名稱大小寫敏感。為避免數(shù)據(jù)遷移過程中出現(xiàn)大小寫敏感問題,建議在安裝達夢數(shù)據(jù)庫時選擇大小寫不敏感模式。如果已經(jīng)安裝了大小寫敏感的數(shù)據(jù)庫,需要將其卸載后重新安裝,并在安裝過程中選擇大小寫不敏感選項。
5部署測試
系統(tǒng)采用Docker容器化部署,可以有效提高資源利用率,簡化部署流程,并提高系統(tǒng)的可移植性和可擴展性。基于Dockerfile創(chuàng)建Docker鏡像是最常用的方式,須按照Dockerfile的語法編寫文件,根據(jù)軟件的實際情況添加配置項。通過上云測試后,將鏡像文件保存到本地。接著安裝打包工具,獲得授權文件并將其保存在指定目錄下。完成CPU數(shù)、占用空間等基本配置、健康檢查參數(shù)設置、掛載卷設置和容器端口映射等后,完善基本信息及數(shù)據(jù)配置、應用配置等,預覽cpk文件整體結構和數(shù)據(jù),確認無誤后即可進行打包,將生成的cpk文件上傳至鏡像倉庫并進行部署。
軟件測試作為軟件研發(fā)領域中的重要環(huán)節(jié),直接影響軟件產(chǎn)品質(zhì)量,一直備受重視[5]。軟件測試是軟件開發(fā)過程中不可或缺的環(huán)節(jié),直接影響軟件質(zhì)量。國產(chǎn)化平臺的軟件測試技術相對欠缺,需要加強相關研究和實踐。系統(tǒng)在完成國產(chǎn)化適配和部署后,通過進行功能測試、接口測試、兼容性測試和安全性能測試等,進行了全面測試驗證。
功能測試:驗證系統(tǒng)功能是否符合預期,包括核心業(yè)務功能、用戶界面和數(shù)據(jù)處理等方面的測試。
性能測試:測試系統(tǒng)的性能指標,包括響應時間、吞吐量和并發(fā)用戶數(shù)等,以評估系統(tǒng)是否滿足性能需求。
兼容性測試:測試系統(tǒng)與目標國產(chǎn)化環(huán)境的兼容性,包括硬件兼容性、操作系統(tǒng)兼容性和數(shù)據(jù)庫兼容性等。
安全測試:測試系統(tǒng)的安全性,包括用戶認證、權限控制和數(shù)據(jù)加密等,以評估系統(tǒng)是否滿足安全需求。
以功能測試中的“用戶管理”為例,表2為具體的測試內(nèi)容。
根據(jù)測試計劃和用例,準備測試數(shù)據(jù)并執(zhí)行測試。對測試過程中發(fā)現(xiàn)的問題進行記錄、分析和跟蹤,直至問題得到解決。測試結果表明,系統(tǒng)功能正常,性能滿足要求,兼容性良好,安全性符合標準,滿足國產(chǎn)化改造要求。
6總結與展望
通過對遷移過程的精心準備和實施,系統(tǒng)成功遷移至國產(chǎn)化平臺,并經(jīng)過嚴格的測試驗證,運行穩(wěn)定,功能正常。建議在系統(tǒng)設計和開發(fā)階段就充分考慮國產(chǎn)化需求,預留接口和擴展機制,以便于后續(xù)進行國產(chǎn)化適配和遷移。此外,從用戶角度出發(fā),逐步建立對國產(chǎn)化軟硬件平臺的信任,幫助用戶提高工作效率??梢栽谝韵禄A上逐步實現(xiàn)升級:持續(xù)改進系統(tǒng)功能和性能,提升用戶體驗;加強與國產(chǎn)化平臺廠商的合作,及時解決系統(tǒng)兼容性和穩(wěn)定性問題;關注新技術發(fā)展趨勢,如云計算、大數(shù)據(jù)和人工智能等,探索將新技術應用于系統(tǒng)中,進一步提升系統(tǒng)的智能化和自動化水平。
參考文獻:
[1]張建,謝天鈞.基于Docker的平臺即服務架構研究[J].信息技術與信息化,2014(10):131-134.
[2]武志學.云計算虛擬化技術的發(fā)展與趨勢[J].計算機應用,2017,37(4):915-923.
[3]歐陽辰,劉麒赟,張海雷,等.Druid實時大數(shù)據(jù)分析原理與實踐[M].北京:電子工業(yè)出版社,2017.
[4]姜湘崗,劉瑾,張曉昆,等.Oracle數(shù)據(jù)庫向國產(chǎn)數(shù)據(jù)庫遷移的技術分析[J].北京電子科技學院學報,2017,25(4):39-44.
[5]薛巖,姜鑫,陳坤喬.指揮信息系統(tǒng)軟件測試研究[J].工業(yè)控制計算機,2020,33(6):25-27.
【通聯(lián)編輯:謝媛媛】