Mysql
MySQL:如何在生產數據庫中將許多 MyISAM 表轉換為 InnoDB?
我們有一個完全由 MyISAM 表組成的生產數據庫。我們正在考慮將它們轉換為 InnoDB 以獲得更好的並發性和可靠性。
- 我可以在不關閉 MySQL 的情況下將 myISAM 表更改為 InnoDB 嗎?這裡推薦的程序是什麼?
- 這種轉換需要多長時間?所有表的總大小約為 700MB
- 有相當多的桌子。有什麼方法可以
ALTER TABLE
一次應用到所有 MyISAM 表而不是一個一個地應用?- 我需要注意哪些陷阱?
謝謝
你能行的。從 MyISAM 轉換到 InnoDB 應該不是問題,因為 InnoDB 具有 MyISAM 中不可用的更多功能,例如事務。
您可以在數據庫執行時更改表。無需關閉,但此操作將鎖定表。
對於所需的時間,這取決於伺服器規格/負載/數據庫大小等。
您可以使用腳本來自動執行此過程。使用命令
show tables
,您可以獲得表列表。然後,使用一個簡單的腳本,您可以讀取此列表並執行 alter table 命令。這是一個簡單的 perl 腳本,它將從文件中讀取表列表並將 SQL 查詢寫入另一個文件。呼叫此腳本後,您可以將輸出文件提供給
mysql
命令以進行所需的更改。open(INFILE, "< tables_list.txt"); open(OUTFILE, "> alter_tables.sql"); foreach my $name (<INFILE>) { chomp($name); print OUTFILE "ALTER TABLE $name engine=InnoDB;\n"; } close(INFILE); close(OUTFILE);