工作原理及步骤
1. 创建需要执行alter操作的原表的一个临时表,然后在临时表中更改表结构。
2. 在原表中创建触发器(3个)三个触发器分别对应insert,update,delete操作
3. 从原表拷贝数据到临时表,拷贝过程中在原表进行的写操作都会更新到新建的临时表。
4. Rename 原表到old表中,在把临时表Rename为原表,最后将原表删除,将原表上所创建的触发器删除。
使用举例:
pt-online-schema-change --host=127.0.0.1--user=root --password=123456 --port=6209 --lock-wait-time=120--alter "add column ca1 int(11)" D=file,t=cc –execute
特别说明的几个参数:
--dry-run 这个参数不建立触发器,不拷贝数据,也不会替换原表。只是创建和更改新表。
--execute 这个参数的作用和前面工作原理的介绍的一样,会建立触发器,来保证最新变更的数据会影响至新表。
--chunk-size对每次导入行数进行控制,已减少对原表的锁定时间。
使用注意事项:
1. 该工具所适用的表必须是单一列的主键或者单一唯一键。
2. 在使用之前需要对磁盘容量进行评估,使用OSC会使增加一倍的空间。
结论:
1. 该工具有一定的风险,对表批量更新、锁表、优化表的操作时,OSC的性能受到一定的影响。
2. 在表不进行批量的更新操作的时候,OSC是能满足我们的需求的。