利用liquibase自動化數據庫變更、持續集成

目前現狀,數據庫是與應用程序完全脫離的單獨實體

  1. 手工變更數據庫(環境變多時,易出錯)
  2. 使用低效的手工比對方法管理數據庫版本之間的變更(耗時長、易出錯)
  3. 不能與團隊的其他成員分享數據庫變更
  4. 代碼與DDL或DML不同時提交更新,會出現不一致的情況

實現形式

以XML存儲數據庫變化,其中以作者和ID唯一標識一個變化(ChangSet)。
在數據庫中保存數據庫修改歷史(DatabaseChangeHistory),在數據庫升級時自動跳過已應用的變化

開始使用 LiquiBase需要以下步驟

  1. 創建一個數據庫變更日誌(change log)文件
    liquibase-data.xml
    liquibase-table.xml
    liquibase-view.xml
  2. 在變更日誌文件內部創建一個變更集(change set)
<changeSet id="2018100801" author="wangshuo">
        <sql>
            update t_system_dict a set  a.can_update = '0',a.can_del = '0' where a.groupcode = 'ZD_SKFS' and a.dictcode = '4';
        </sql>
        <comment>t_system_dict網絡教學不允許刪除和修改</comment>
    </changeSet>
  1. 提交代碼時同步提交變更集
  2. 通過Jenkins更新時運行變更集
  3. 檢驗數據庫中的變更
  4. 驗證程序功能的正確性

changeSet維護說明

  1. 選擇腳本放置在對應XML文件中
  2. ID命名規則:日期+兩位數序號
  3. 註明作者
  4. context設置需要更新或者不更新到指定環境 注:不需要特殊指定時,忽略context即可
  5. 中一次可以維護多個sql
  6. comment寫明對應實現功能、腳本實現目的

樣例

<changeSet id="2018100801" author="wangshuo" context="!jwgly and !beta and !test"/context="jwgly,beta">
    <sql>
        update t_system_dict a set  a.can_update = '0',a.can_del = '0' where a.groupcode = 'ZD_SKFS' and a.dictcode = '4';
    </sql>
    <comment>t_system_dict網絡教學不允許刪除和修改</comment>
</changeSet>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章