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工具使用

#查看操作的数据表结构

a65c9a25c0992c22edd2d80957ce6fba.png

2.1在线添加字段,不锁表pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --charset utf8  --alter='add column name char(4)' --execute D=test,t=user

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

#执行结果如下:

4067f4a371bc8e1f83cd58c43e4dd921.png

2.2在线增加索引,不锁表pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock  --charset utf8  --alter='add index user_id(u_id,g_id)' --execute D=test,t=user

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

#执行结果如下:

2a8a2c43793a25d11f2a346b4812c036.png

2.3在线删除索引,不锁表pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --charset utf8 --alter='drop index user_id' --execute D=test,t=user

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

#执行结果如下:

656f7a769e02eed0a65663c2df629faa.png

2.4在线删除字段,不锁表pt-online-schema-change -uroot -hlocalhost -p123 -S /tmp/mysql.sock --charset utf8 --alter='drop column name' --execute D=test,t=user

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

#执行结果如下:

21481c69ad2c7326bb29edc77af7cf06.png

备注:操作的表必须有主键否则将会报错,此工具适合MyISAM和InnoDB引擎,缺点是执行时间比较慢,但是不会锁表,如果想同时执行几个操作,直接逗号分隔就好,如果有主从关系的,修改数据前一定要确保修改的表存储引擎是否一致,如果不一致会发生错误的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值