MySQL 大表備份、改表

0、背景:

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

a、dump 數據sql

b、delete 數據shell

c、alter 表ip

 

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

 


一、dump 數據

注意:配置

默認會鎖表,須要增長參數 --skip-opt -qdate

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

-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


二、delete 數據

delete from table_name where xxx;

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


三、alter 表

alter table table_name  xxx;

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


四、數據恢復

mysql -uroot -ppwd database_name < dump_file

相關文章
相關標籤/搜索