InnoDB 轉換工具

上上週末在COSCUP聽MySQL穩定性的議題,有一句話讓我感觸很深:「資料庫可以慢、可以斷線,資料就是不能不見」

再加上講者提到一些InnoDB的改進,讓效能不再像以前一樣可怕

於是我就考慮將自己的資料庫引擎從MyISAM換成InnoDB

上網找了些資料之後,打算用PHP來撰寫這支工具

這工具長這樣,很簡陋但真的可以用(無誤

<?php
/* 定義MySQL連線參數 */
define("HOST_ADDR", "addrhere"); // 主機位址
define("USERNAME", "userhere"); // 使用者名稱
define("PASSWORD", "passhere"); // 使用者密碼
define("DBNAME", "dbnamehere"); // 資料庫名稱

/* 開始執行 */
$link = mysqli_connect(HOST_ADDR, USERNAME, PASSWORD, DBNAME);
if ($link) {
    echo "Connected Successfully to " . HOST_ADDR . " using " . USERNAME ." identity.\n";
    echo "Database swtiched to " . DBNAME . " .\n\n";
    echo "Start converting tables to InnoDB.\n";
    $list = "SHOW TABLES";
    $rs = mysqli_query($link, $list);
    $table_num = 0;
    while ($row = mysqli_fetch_array($rs)) {
        $tbl = $row[0];
        $sql = "ALTER TABLE " . $tbl . " ENGINE=InnoDB";
        if (mysqli_query($link, $sql)) {
            echo $tbl . " converted.\n";
            $table_num++;
        } else {
            echo "**Fail to convert " . $tbl . ".**\n";
        }
    }
    echo "Successfully converted " . $table_num . " tables.";
} else {
    echo "Connection failed.";
}
?>

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *