利用percona-toolkit中pt-online-schema-change功能对表进行online ddl

来源:互联网 发布:淘宝网开放平台 编辑:程序博客网 时间:2024/06/15 23:22

在线上系统经常遇到对表进行ddl,大家都知道,在线ddl会阻塞所有insert,一直到ddl结束才释放,的如果表比较小的话,对业务影响不大,如果表非常大的话,则应用是无法忍受的,这里可以利用percona-toolkit中的pt-online-schema-change工具来对表进行online。

MySQL默认online ddl的原理如下:

1、创建一个和原来表结构一样的临时表并ddl

2、锁住原表,所有数据都无法写入(insert,update,delete)

3、将原表数据写入到临时表中(通过insert ...select方式)

4、写入完后,重命名临时表和原表名称

5、删除原表,释放锁

pt-online-schema-change在线ddl原理如下:

1、创建一个和原来表结构一样的临时表并ddl

2、将原表数据写入到临时表中(通过insert ...select方式),并且在原表上创建触发器,如果原表有数据写入,通过触发器方式将新增的数据写入临时表中(前提该表之前没有触发器)

3、写入完后,重命名临时表和原表名称

4、删除原表

pt-online-schema-change使用介绍:

操作的表必须有主键

[mysql@mysqldb01 bin]$./pt-online-schema-change -h 192.168.11.123 -u root -pwanwen1027  --alter='add column 

阅读全文
0 0