據(jù)庫升級指南:從migration腳本看跨版本平滑遷移全流程)
iDempiere數(shù)據(jù)庫升級指南從migration腳本看跨版本平滑遷移全流程【免費下載鏈接】idempiereiDempiere. Community Powered Enterprise. Full Open Source Business Suite ERP/CRM/MFG/SCM/POS項目地址: https://gitcode.com/gh_mirrors/id/idempiereiDempiere 數(shù)據(jù)庫升級并不復雜——它的核心是一套按版本歸檔的 migration SQL 腳本和一條同步命令。iDempiere 是一套完整的開源企業(yè)級業(yè)務套件ERP/CRM/MFG/SCM/POS元數(shù)據(jù)全部存放在數(shù)據(jù)庫中因此版本升級的本質就是按時間順序補齊數(shù)據(jù)庫腳本。本文將帶你完整走一遍 iDempiere 數(shù)據(jù)庫升級流程從腳本目錄結構講起到一鍵同步與生產監(jiān)控方案幫助你安全地完成跨版本平滑遷移。為什么 iDempiere 的升級是補腳本iDempiere 采用元數(shù)據(jù)驅動架構窗口、表格、字段、流程等 UI 與業(yè)務定義都以數(shù)據(jù)形式存放在AD_Window、AD_Table、AD_Column等字典表中。所以升級應用代碼的同時必須同步升級數(shù)據(jù)庫里的元數(shù)據(jù)和業(yè)務表結構官方為每個大版本提供成對的postgresql/與oracle/腳本升級 把尚未執(zhí)行的腳本按時間戳順序補跑一遍每個腳本執(zhí)行后都會調用register_migration_script()函數(shù)把文件名登記到AD_MigrationScript表系統(tǒng)借此判斷哪些腳本還沒跑。一個典型的腳本開頭migration/iD14/postgresql/202511201738_IDEMPIERE-6733.sql就是先登記、再改表、再同步字典數(shù)據(jù)三步一體SELECT register_migration_script(202511201738_IDEMPIERE-6733.sql) FROM dual; ALTER TABLE T_ReportStatement ADD COLUMN Account_ID NUMERIC(10) DEFAULT 0; INSERT INTO AD_Column (...) VALUES (...);migration 目錄結構一眼看懂版本遷移路線所有遷移腳本集中在倉庫根目錄的migration/下每個子文件夾對應一個歷史版本按字母序即升級順序版本目錄說明migration/i4.1~migration/iD92008–2021 年間的歷史版本腳本4.1 起步migration/iD10~migration/iD14近年主版本如 iD14 是最新的 31 個腳本local_sql/你自建的安裝級定制腳本見下文processes_post_migration/所有腳本跑完后統(tǒng)一執(zhí)行的收尾腳本zip_2pack/存放自建的 2Pack 元數(shù)據(jù)包 zip 文件每個版本目錄內部固定分postgresql/和oracle/兩個子目錄腳本命名約定為yyyymmddHHMM_信息描述.sql時間戳前綴 說明例如202511201738_IDEMPIERE-6733.sql時間戳前綴決定了執(zhí)行順序——系統(tǒng)按文件名排序依次應用與所在文件夾無關這正是平滑遷移的關鍵設計。一鍵升級用 SyncDB 同步數(shù)據(jù)庫開發(fā)環(huán)境RUN_SyncDBDev.sh如果你在 Eclipse 中用 install 應用初始化過數(shù)據(jù)庫倉庫根目錄的 RUN_SyncDBDev.sh 會直接從idempiere.properties讀取連接信息并執(zhí)行同步bash RUN_SyncDBDev.sh # 或指定屬性文件和遷移目錄 bash RUN_SyncDBDev.sh adempiere.properties migration/iD14生產/服務器環(huán)境utils.unix 工具集服務器安裝版使用org.adempiere.server-feature/utils.unix/下的工具鏈RUN_SyncDB.sh→ 按數(shù)據(jù)庫類型調用postgresql/SyncDB.sh或oracle/SyncDB.sh。核心機制非常直白見utils.unix/postgresql/SyncDB.sh查詢AD_MigrationScript表得到已執(zhí)行腳本清單掃描migration/目錄下當前數(shù)據(jù)庫類型的.sql文件得到全部腳本清單兩者求差集得到待執(zhí)行腳本按文件名排序逐個用psql執(zhí)行任一腳本輸出中檢測到ERROR:/FATAL:等錯誤標志時立即停止并把每個腳本的完整輸出留存在/tmp/SyncDB_out_*/供排查全部成功后追加執(zhí)行processes_post_migration/里的收尾腳本。已同步時會看到友好提示Database is already in sync - no scripts pending to apply重復執(zhí)行完全安全冪等。生產級升級MonitoredSyncDB 監(jiān)控模式正式環(huán)境推薦用RUN_MonitoredSyncDB.sh底層是utils.unix/postgresql/MonitoredSyncDB.sh它比普通同步多了三樣保障錯誤留痕腳本報錯時自動把AD_MigrationScript中該記錄標記為ERError并保存腳本輸出方便定位修復包機制.fix供應商/社區(qū)可發(fā)布修復腳本命名與原腳本一致但后綴改為.001.fix、.002.fix……放入同一目錄即可程序會自動查找并應用修復無需手工干預郵件告警若AD_System表配置了 SupportEMail 且系統(tǒng)有 sendmail出錯時自動把錯誤詳情發(fā)郵件給支持方。官方建議的流程是先在測試/預發(fā)環(huán)境跑一遍→ 集成修復腳本 → 再在生產環(huán)境執(zhí)行屆時修復會被自動帶上。加入自己的定制腳本local_sql 規(guī)范如果升級時還需要執(zhí)行安裝級定制改動比如自建字段、視圖把腳本放進migration/local_sql/規(guī)則見該目錄的 README.txt目錄內同樣分postgresql/和oracle/命名沿用yyyymmddHHMM_說明.sql約定它在所有版本目錄i4.1 … iD14之后、收尾腳本之前被執(zhí)行。類似地自建的元數(shù)據(jù)包可放入migration/zip_2pack/命名為yyyymmddHHMM_客戶端代碼_說明.zip由org.adempiere.plugin.utils插件在服務器啟動后自動應用。升級前檢查清單與常見坑 步驟要點1?? 備份數(shù)據(jù)庫升級前執(zhí)行一次完整備份utils 提供RUN_DBExport.sh/RUN_DBRestore.sh工具2?? 測試環(huán)境先行用 MonitoredSyncDB 先跑通全量遷移3?? 版本按序補齊從 i4.1 一路到 iD14腳本必須按時間戳順序執(zhí)行不要手工亂序補跑4?? 注意數(shù)據(jù)庫方言postgresql 與 oracle 腳本不可混用腳本按AD_Client/方言獨立維護5?? 檢查錯誤輸出失敗時查看/tmp/SyncDB_out_*/下的 .out 日志按提示手工修復后重跑即可續(xù)傳6?? 收尾腳本別漏processes_post_migration只在有腳本被應用時才執(zhí)行手工跳步容易遺漏 小貼士連接信息模板可參考倉庫根目錄的adempiere-local-template.properties把Connection一行的數(shù)據(jù)庫主機、端口、庫名、賬號改好即可復用給同步腳本。小結iDempiere 的數(shù)據(jù)庫升級可以歸納為三句話腳本按版本目錄 時間戳命名歸檔天然形成可追溯的遷移流水線SyncDB 通過AD_MigrationScript表做增量對比一鍵補跑、冪等安全MonitoredSyncDB .fix 修復包 郵件告警為生產環(huán)境提供完整的出錯兜底方案。掌握這套機制后無論是從 i9 跨到 iD14還是日常跟進小版本補丁你都能在測試環(huán)境驗證后一條命令完成生產數(shù)據(jù)庫的平滑遷移。【免費下載鏈接】idempiereiDempiere. Community Powered Enterprise. Full Open Source Business Suite ERP/CRM/MFG/SCM/POS項目地址: https://gitcode.com/gh_mirrors/id/idempiere創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考