9.4.太極平臺舊版本升級部署——非全新安裝

1.升級需求

客戶系統一旦部署上線,開始使用後,以後再進行更新升級,就不會像以前全新部署那樣簡單和方便了。

在升級的過程中,需要考慮以下幾個問題:

  1. 系統正在生產和使用,不能停工。升級過程中,不能影響到客戶使用。
  2. 原有系統中的數據不能丟失。數據包括文件數據和數據庫數據。
    1. 文件數據比較簡單,直接複製拷貝即可同步。
    2. 數據庫文件則比較麻煩,不僅要考慮到數據庫表結構的變動,還涉及到每個表數據內容的變動。

針對升級過程中要注意的問題,特制定升級指導書。

2.升級過程

2.1.文件同步

文件的同步,只需要將最新的文件包上傳到舊系統的文件夾,進行覆蓋即可。

在覆蓋之前,要進行備份,以免覆蓋之後出現問題,還可以進行還原。

目前我們的文件,主要是指項目打包後,生成的war的文件包,需要放到Tomcat下的站點中。

2.2.數據庫同步

數據庫同步分爲表結構同步和表數據同步。

2.2.1.表結構同步

首先需要弄清楚新舊數據庫表結構存在哪些差異。

在開發的過程中,開發人員可能會記錄改動了哪些表字段,以便將來升級時進行同步修改。但是這樣記錄就會存在很多遺漏。首先沒法確保每次調整表結構都有記錄備案,其次當多人同時維護數據庫表結構時,也沒法清楚其他人修改了哪些字段。因此,表結構的變動,我們要藉助對比工具進行分析。

阿里雲的DMS裏面,自帶有數據庫表結構對比功能。當需要對比時,我們可以進行付費開通(按量購買,使用1天)。結束使用後,關閉服務(否則如果是按量購買,會持續每天進行扣費,而不會自動停掉,這是一個坑)。

以後在我們自己的太極平臺中,要集成這個數據庫表結構對比功能。

通過對比後,可以看到數據庫表結構存在哪些差異。系統會自動生成差異的SQL語句。如下所示,是對比後產生的差異SQL腳本。通過執行這個腳本,即可實現表結構的同步。

ALTER TABLE `qd_user` 
	ADD KEY `FK_User_DutyId`(`DutyId`) USING BTREE,
	ADD KEY `FK_User_RoleId`(`RoleId`) USING BTREE,
	DROP KEY `Index_RoleId`;

ALTER TABLE `qd_user`
 ADD CONSTRAINT `FK_User_DutyId` FOREIGN KEY (`DutyId`) REFERENCES `taiji_dev`.`qd_user_duty` (`Id`) ON DELETE SET NULL ON UPDATE NO ACTION;

ALTER TABLE `qd_user`
 ADD CONSTRAINT `FK_User_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `taiji_dev`.`qd_user_role` (`Id`) ON UPDATE NO ACTION;

特別注意:表結構的對比也存在不完善的地方即沒法區分一個新的字段(名稱不同的字段)到底是新增的字段,還是原來改名的字段。因爲通過字段名稱進行比對時,只會發現舊錶中少了某個字段,新表中多了某個字段,不會自動的關聯舊錶少的字段就是新表增加的字段。

所以當看到有新增字段時,要特別注意到底是不是字段改名。切勿直接執行刪除字段後,再添加字段,否則就會導致數據丟失。

另外,在需要太極平臺內核升級時,要先進行內核升級,再進行表結果對比。因爲框架升級也會自動變更一部分表結構。

2.2.2.表數據同步

表數據的同步,主要是指如果有新增表,且新增表中有初始化數據,那麼也需要將初始化數據同步到新的數據庫中。這方面可以通過執行insert腳本即可。將表數據導出爲insert執行腳本,在新的數據庫中執行即可。

2.3.太極框架升級

太極平臺框架升級後,會變動數據庫表結構,也會更新框架包文件。因此升級時,既要注意數據庫表結構的升級,也要注意引入框架包的升級。

所以,切勿盲目衝動的進行數據庫內核升級。因爲如果僅僅只升級數據庫內核,而不引入新版本的依賴包,並進行重新打包發佈更新,那麼當前正在運行的系統就會出錯。因爲數據庫表結構已是新版本,但依賴包文件還是舊版本,必然會出錯。

框架內核升級分爲三個步驟:數據庫升級、依賴包升級、項目文件升級。

2.3.1數據庫升級

在太極平臺管理後臺,有2個地方可以進行數據庫升級。

1、在我的項目數據庫中,對相應的項目進行升級。點開我的項目數據庫,如下圖所示。

在列表數據的最後面,有升級內核操作。同時,在旁邊也可以看到當前系統的內核版本號。

點擊升級內核後,會彈出升級對話框。

1)升級過程會驗證當前數據庫賬號權限。因爲要修改表結構,所以需要賬號有DDL權限。

2)也會驗證版本號是否是最新,是否需要升級。

3)不是最新版本,纔可以升級。點擊“升級”按鈕,即可對當前數據庫進行內核升級。

每次升級都只能升級一個版本號。版本號相隔太遠,也只能一次次升級。升級過程執行完畢後,可以看到升級日誌,知道是否升級成功。

2、單獨的數據庫表升級

針對有些沒有添加到項目中的數據庫,也可以進行單獨的升級。在“我的”菜單中有“數據庫升級”菜單,點擊後加載升級頁面。如下圖所示,可以進行單獨的升級。

此時升級,需要手動的把數據庫的連接地址、賬號、密碼輸入進去。測試連接成功後,纔可以進行升級。升級過程一樣,系統同樣會驗證賬號權限、版本號等。

2.3.2.依賴包升級

數據庫升級後,依賴包也必須升級到對應的版本,否則就會不匹配。

在IDEA編輯器中,打開pom.xml文件,找到奇點框架的依賴包配置項。如下圖所示,確保數據庫內核的版本號,與依賴包的版本號一致。

內核依賴包有2個文件:QiDianAdminCommon和QiDianAdminTemplate文件,分別是Java文件包和前端的jsp文件包。

另外還有一個QiDianWebCommon,這個是QiDianAdminCommon的依賴包,以後會考慮直接整合到QiDianAdminCommon中,以免版本號不好控制。

2.3.3項目文件升級

引入最新的依賴包後,項目文件需要重新編譯打包。並用最新的包文件替換掉之前的舊版本,從而完成項目文件的升級。

可通過FTP上傳最新項目文件,或遠程桌面進行更新。更新完畢後,重啓站點,完成升級。

注意覆蓋文件後,進行數據庫連接地址的調整修改。

發佈成功後,訪問系統,進入後臺,在主頁面的最底部右下角,查看版本號是否是最新版本。

至此,升級過程完畢。

3.生產環境升級

如果數據庫已經加入到了太極平臺的管理後臺,那麼數據庫的升級會非常方便。但是在真實環境中,特別是當系統部署在企業內網,連不上外網時,升級也不會這麼方便。可以按下面的步驟進行升級。

  1. 將客戶的數據庫導出一份出來。如果涉及到敏感數據,只需要導出太極框架相關的表數據即可,其他業務數據不需要導出。
  2. 將導出的數據,導入到測試庫中。可以是自己的測試庫,或者是當前項目的測試版本庫,或者重寫再建一個數據庫。
  3. 通過太極平臺的升級功能,連接上這個數據庫,進行升級。
  4. 升級完成,測試是否功能升級成功。
  5. 導出升級後的數據庫腳本,再次導入到生產環境中進行覆蓋。
  6. 覆蓋之前,一定要先備份數據庫。以免出錯後,可以還原。
發佈了89 篇原創文章 · 獲贊 71 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章