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