Sunday, November 6, 2016

db patch

公司的系統一直在增加功能,資料庫也會不斷地更改 schema 。然而,已經存在生產環境 (production environment) 中的資料庫,卻不能直接套用新的 schema ,而是要用 patch 的方式,將舊的 schema 改成新的 schema 。於是開發的工作就會有一項,是要比較新舊的 schema 來寫出 transformation script 。

很幸運的是,這個似乎已經是前人研究過的問題了。有現成的工具可以使用。

(1) 安裝 mysqldiff
      $ sudo apt-get install mysql-utilities
   
(2) 如果因為遇到一些奇奇怪怪 python library 的問題導致裝不起來時,也可以用考慮使用 docker 來迴避安裝的困難。
      $ docker pull samfulton/mysql-utilities
      $ docker run -ti samfulton/mysql-utilities

(3) 使用的實例1:比較兩張資料表 
   $ mysqldiff --server1=root:password@10.20.30.40 \
   boss.contacts:coss.contacts \
   --difftype=sql -v

(4)使用的實例2:比較兩個完整的資料庫,且遇到錯誤不停止,繼續比較。
   $ mysqldiff --server1=root:password@10.20.30.40 \
   boss:coss \  
   --difftype=sql -v --force