码迷,mamicode.com
首页 > 其他好文 > 详细

在线更改表结构pt-onling-schema-change

时间:2016-03-02 20:15:07      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:在线更改表结构pt-onling-schema-change

pt-online-schema-change是perona公司的工具,它解决了更改表时不锁表的问题,且不会影响到业务,其原理是:

  • 如果有外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,针对相应的设置进行处理。

  • 创建一个新的表,表结构为修改后的表结构,用于从源数据表向新数据表导数据。

  • 创建触发器,在复制数据开始后,将对源数据表继续进行数据修改的数据记录下来,以便在数据复制结束后执行这些操作,保证数据不丢失。

  • 复制数据,从源数据表中复制数据到新表中。

  • 修改外键相应的子表,根据修改后的数据,修改外键的关联的子表。

  • 更改源数据表为old表,把新表改名为源表名,并将old表删除。

测试结果:支持那种形式的修改。

  1. 对没有主键的表增加字段,该工具会报错。

  2. 对没有主键的表增加主键,可以创建成功。

  3. 从库上有replicate_do_table=book.t1,在master上增加字段,会报错,不会对把主库上产生的临时表复制到从库上。在把临时表改名成原表名时会报错。

  4. 对有外键的表,对父表增加字段,可以创建成功。

  5. 对有外键的表,对子表增加字段,可以创建成功。

  6. 字段含有not null不为空,会报错,需要增加默认值才可以更改成功。

在线更改表结构pt-onling-schema-change

标签:在线更改表结构pt-onling-schema-change

原文地址:http://7078981.blog.51cto.com/7068981/1746851

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!