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

相关文章
相关标签/搜索