在线ddl变更工具gh-ost

简介

相对pt-online-schema-change而言,看介绍gh-ost省去了创建触发器的动作,这就带来了解决了之前我经常用pt做ddl变更时的痛点:pt更变表结构时,如果当前有关于这个表的长事务在运行,那么创建触发器必然引起medata lock锁等待导致服务不可用。

官方地址

https://github.com/github/gh-ost/releases

不过gh-ost有以下限制

1 binlog_format必须为row

2 更改的表必须有主键或唯一键


使用

参数含义略,典型使用如下

./gh-ost --max-load=Threads_connected=3000 --critical-load=Threads_connected=5000 --chunk-size=1000 -initially-drop-ghost-table  --initially-drop-socket-file --ok-to-drop-table --host="xxxxxxx" --port=3306 --user="ucloudbackup" --password='xxxxxx' --database='xxxxx' --table="xx" -verbose --alter="add column rrr varchar(11)" --cut-over=default --panic-flag-file=/tmp/ghost.panic.flag  --execute --allow-on-master


实测感受

实际上变更的表如果有超长事务,依然存在mdl锁问题导致失败,因为在最后的新表旧表交替阶段,会有一个短暂的加锁操作,而长事务会阻塞这个加锁操作。所以对我的业务场景来说,这个工具没啥实质提升,只是减少了mdl锁可能的次数,还得在ddl前确认无长事务


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值