Mysql在线DDL工具

一 背景

在实际生产应用中,经常会有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参数启用,此模式适用于测

你可能感兴趣的:(mysql,mysql)