MySQL 大表備份、改表


0、背景:

需要對一個千萬行數據的表新增字段,具體操作:

a、dump 數據

b、delete 數據

c、alter 表

 

MySQL  版本為5.5,alter表時MySQL會鎖表;表行數雖多,當數據較少,每行數據平均2KB。

 


1、dump 數據

注意:

默認會鎖表,需要增加參數 --skip-opt -q

單個dump文件太大需要調整配置: max_allowed_packet(單次最大傳輸量)

-w 后可添加dump 篩選條件

mysqldump --skip-opt -q -uroot -ppwd -hlocalhost databasename table_name -w "" 

我使用腳本處理,條件是按表某日期字段分割

(附shell時間轉換:date -d "2017-04-30 00:00:00" + %s)

結果:同時處理了兩個表,數據21G,耗時15h


2、delete 數據

delete from table_name where xxx;

刪除了900W行數據,耗時50min


3、alter 表

alter table table_name  xxx;

修改180W行數據,耗時8min


4、數據恢復

mysql -uroot -ppwd database_name < dump_file


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM