
1、增加列[add
列名]J
例:alter
table
test
add
username
char(20)
not
null
default
''
2、删除列[drop
列名]
alter
table
test
drop
pid
3、修改列[modife
列名]
alter
table
test
modify
gender
char(4)
not
null
default
''
Online DDL 工具:pt-osc
对于 MySQL Online DDL 目前主流的有三种工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。
一、原理及限制
1.1 原理
1. 创建一个与原表结构相同的空表,表名是 _new 后缀;
2. 修改步骤 1 创建的空表的表结构;
3. 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;
4. 将原表数据以数据块(chunk)的形式 copy 到新表;
5. rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;
6. 删除触发器。
有时候,会很不小心,在业务运行中执行了一条锁表语句。这时候该怎么办?
例如:修改元数据。
SHOW FULL PROCESSLIST 查看一下:
发现修改之后,锁表了。这时候怎么办? 杀死它 KILL 4623660
然后一切又恢复正常了。
一般对于数据量较大的表,需要修改表结构,或者做一些耗时比较久的锁表 *** 作,建议在晚上(业务闲时)执行。这个时候可以配合使用任务处理一下。
如:修改一个表的字段长度,和添加索引
名词解释:
接着回家睡觉,第二天回来检查结果就好了。
附:添加唯一索引示例
MYSQL存储过程结合任务处理耗时 *** 作
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)