上上週末在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.";
}
?>
留言