mysql數據遷移

 本文總結各種場景下的數據複製、遷移、轉換。

1、導入、導出

利用mysqldump命令將數據文件導出成一個文本文件,這在不同場景下具有更高的安全性。如:表引擎改變。

數據導出:mysqldump -uroot -p dbname  > dbname.sql (包含表結構和表數據)

數據導入:mysql -uroot -p dbname < dbname.sql

注意:導出的sql文件包含舊錶信息,請修改其中的create table語句。在create之前會有一個DROP table 操作。如果沒有注意到這點,原數據就會被刪除。這種情況可以用下列的sql操作:

只導出:數據:mysqldump -uroot -p -t dbname > dbname.sql

只導出表結構:mysqldump -uroot -p -d dbname > dbname.sql

 

2、將一張表的數據轉換到另一張表、並且更新表結構

a、以下sql適用於小量數據,速度快。

  1. mysql>create table innodb_table like myisam_table;  
  2. mysql>alter table innodb_table engine=innodb; 
  3. mysql>insert into innodb_table select * from myisam_table; 

b、更高效的辦法是增量的填充表,在填充每個增量數據塊時都提交事務,這樣就不會導致撤銷日誌過大,假設id是主鍵,可以重複運行一下查詢(每次逐漸增大x和y值)直到所有數據都複製到新表。

  1. mysql>start transaction
  2. mysql>insert into innodb_table select * from myisam_table where id between x and y;  
  3. mysql>commit;  

轉移操作完成後,源表仍會保留,可以在完成操作後DROP它,注意:如有必要,在轉換時加鎖源表,防止在轉換時數據不一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章