原理:
根据原表结构创建一个新表;
按照pt-osc的alter语句修改新表;
将原表中的数据copy到新表中去;
通过触发器将原表copy数据期间的数据更新应用到新表中去;
将原表重命名,将新表重命名成原表,然后删除原表。
pt-osc的优点:
执行alter阶段不阻塞读和写。
pt-osc的缺点:
1.原表不能存在触发器,因为pt-osc需要通过触发器将原表copy数据阶段产生的数据应用到新表去。
2.表必须具有主键和唯一键。
3.原表不能是其他外键的父表,需要添加—alter-foreign-keys-method参数即可。
4.字段属性为NOT NULL时,必须有DEFAULT属性,否则会报错。
5.可能会导致主从数据延迟
6.如果运行过程中报错了,无法从上一个位置继续进行,需要从头开始
7.不支持MySQL5.7的虚拟列功能
根据原表结构创建一个新表;
按照pt-osc的alter语句修改新表;
将原表中的数据copy到新表中去;
通过触发器将原表copy数据期间的数据更新应用到新表中去;
将原表重命名,将新表重命名成原表,然后删除原表。
pt-osc的优点:
执行alter阶段不阻塞读和写。
pt-osc的缺点:
1.原表不能存在触发器,因为pt-osc需要通过触发器将原表copy数据阶段产生的数据应用到新表去。
2.表必须具有主键和唯一键。
3.原表不能是其他外键的父表,需要添加—alter-foreign-keys-method参数即可。
4.字段属性为NOT NULL时,必须有DEFAULT属性,否则会报错。
5.可能会导致主从数据延迟
6.如果运行过程中报错了,无法从上一个位置继续进行,需要从头开始
7.不支持MySQL5.7的虚拟列功能
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2156471/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15498/viewspace-2156471/