首页 > 代码库 > percona-toolkit在线添加删除mysql索引、字段(不锁表)

percona-toolkit在线添加删除mysql索引、字段(不锁表)

1.安装配置

 yum install perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-DBI perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y
 cd /root/soft
 tar zxvf percona-toolkit_2.2.11.tar.gz
 cd percona-toolkit-2.2.11
 perl Makefile.PL
 make
 make install

2.pt-online-schema-change工具使用

  #查看操作的数据表结构

wKioL1SGv67j6-wJAAF_MMumV7I425.jpg

2.1在线添加字段,不锁表

pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock  --alter=‘add column name char(4)‘ --execute D=test,t=user

 #-S 如果有sock需要添加sock路径, name表示要添加的一个字符型字段名, D 表示test数据库名,t 表示user表名 

 #执行结果如下:

wKioL1SGwHrQOoX7AAFRA6Q1O2w119.jpg

2.2在线增加索引,不锁表

pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --alter=‘add index user_id(u_id,g_id)‘ --execute D=test,t=user

 #创建一个组合索引user_id(u_id,g_id)

 #执行结果如下:

wKioL1SGwQTy2UW9AAFPdHiNtr4400.jpg

2.3在线删除索引,不锁表

pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --alter=‘drop index user_id‘ --execute D=test,t=user

 #-S 如果有sock需要添加sock路径,user_id表示要删除的索引名, D 表示test数据库名,t 表示user表名

 #执行结果如下:

 wKiom1SGwL2hx2EvAAE0TzAgn78491.jpg

2.4在线删除字段,不锁表

pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --alter=‘drop column name‘ --execute D=test,t=user

 #-S 如果有sock需要添加sock路径, name表示要添加的一个字段名, D 表示test数据库名,t 表示user表名

 #执行结果如下:

 wKioL1SGwZfzN0EZAAEgxdSAc5c665.jpg



备注:操作的表必须有主键否则将会报错,此工具适合MyISAM和InnoDB引擎,缺点是执行时间比较慢,但是不会锁表,如果想同时执行几个操作,直接逗号分隔就好。

本文出自 “成都@阿状” 博客,请务必保留此出处http://azhuang.blog.51cto.com/9176790/1588019

percona-toolkit在线添加删除mysql索引、字段(不锁表)