在產品反覆式開發法發布過程中,由於業務需求的增加,資料庫難免會有結構調整等操作.
在每個版本發布過程中怎麼控制每個版本server端程式與資料庫版本保持一致,以及資料庫升級、復原等操作.
本博文宅鳥將向大家推薦一款mysql資料庫遷移工具mysql-php-migrations
由於具體需求不同,宅鳥根據自己公司的情況將mysql-php-migrations做了一些修改來滿應用!
宅鳥修改程式後的mysql遷移程式有以下目錄:
config 設定檔
dbscript sql指令碼目錄
lib 遷移程式類庫
migrate.php 遷移命令執行入口
執行php migrate.php
可以看到如下結果
我們可以看到migrate.php有很多命令
php migrate.php add test
結果:
__ __ __ __
|\/| (_ / \| __ |__)|__||__) __ |\/|. _ _ _ |_. _ _ _
| |\/__)\_\/|__ | | || | ||(_)| (_||_|(_)| )_)
/ _/
******************************************************************** v2.0.1 ***
New migration created: file
/var/www/mysqlMigrations/dbscript/2013_12_18_14_50_45_test.php
*******************************************************************************
cd dbscript
total 16
-rw-r--r-- 1 www-data www-data 4837 Sep 29 09:21 2013_06_18_17_14_16_v1.php
-rw-r--r-- 1 www-data www-data 802 Sep 29 13:29 2013_09_29_12_00_12_v1.php
-rw-r--r-- 1 root www-data 240 Dec 18 14:50 2013_12_18_14_50_45_test.php
此時dbscript目錄已經新添加一個2013_12_18_14_50_45_test.php檔案,改檔案格式如下:
<?php
class Migration_2013_12_18_14_50_45 extends MpmMysqliMigration
{
public function up(ExceptionalMysqli &$mysqli)
{
$mysqli->exec("DO 0");
}
public function down(ExceptionalMysqli &$mysqli)
{
$mysqli->exec("DO 0");
}
}
?>
把需要修改的資料庫指令碼寫在up函數中:
把對應修改修改所做的復原操作卸載down函數中
注意:在生產環境下建議只做資料庫的向上變遷,不做down操作,避免使用者有用資料丟失.