将表從一個引擎改為另一個引擎的方法
最簡單的方法
但是如果表資料量大,則需要執行很長時間。因為mysql會按行将資料從原表複制到新表,在複制期間可能會消耗系統所有的IO,同時原表上會加讀鎖,是以業務繁忙的表要小心該操作。
一種解決方案是使用導出導入
- 使用mysqldump導出檔案
- 修改檔案中的create table語句的存儲引擎選項,同時修改表名(注意:mysqldump會在create table前加上drop table語句,不注意可能導緻資料丢失)
- 導入檔案
-
先建立新存儲引擎的表,然後使用insert。。。select文法導資料
資料量不大時:
資料量大時,可以分批處理,避免大事務産生過多的undo
使用percona toolkit提供的pt_online-schema-change的工具實作線上schema變更
該工具詳細使用方式請參考
<a href="https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html">https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html</a>