Mysql在线DDL工具

本文介绍了在面临大量数据时,如何使用在线DDL工具避免长时间锁表影响业务。对比了gh-ost和pt-online-schema-change的原理、使用注意事项及测试案例,gh-ost通过从库拉取binlog,pt-osc建立触发器,两者在执行速度和适用场景上有差异。
摘要由CSDN通过智能技术生成

一 背景

在实际生产应用中,经常会有mysql表结构修改的场景,涉及到的表数据量大,如果直接修改,锁表时间过长,影响正常业务。因此,寻求通过在线DDL工具进行表结构修改。

这里选择了常用的2个在线DDL工具gh-ost 和pt-online-schema-change进行测试。

 

二 gh-ost 是github贡献的一款online DDL工具。大致原理如下

1 根据原表新建一个临时表,与原表表结构一致,然后执行表结构修改

2 拷贝原表的已有数据到新的临时表

3 通过伪装成mysql的一个slave,读取mysql binlog日志,同步实时的更新数据到新表

4 数据copy完成以后,锁住旧表,交换临时表和旧表的表名

5 删除旧表,操作完成

 

注意事项:

1 Gh-ost 有三种工作模式,可以根据情况选择

连上从库,修改应用到主库:此模式会自动搜索从库,在从库上拉取binlog,但是表结构的修改直接应用到主库。默认是采用此模式

直接应用到主库:直接从主库拉取binlog日志,修改也是应用到主库,通过--allow-on-master来启用

在从库修改和测试:所有操作都在从库上进行,通过--migrate-on-replica参数启用,此模式适用于测

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值