功能
支持不锁表在线修改表结构
原理
以 test.employees
为例:
- 创建新表,
test.employees_new
表结构与test.employees
一致 test.employees_new
执行 SQLtest.employees
添加触发器 (DELETE/UPDATE/INSERT
)- 批量从
test.employees
拷贝数据到test.employees_new
,拷贝过程中通过触发器自动更新 - 修改表名,
test.employees
修改为test.employees_old
,test.employees_new
修改为test.employees
- 删除
test.employees_old
和触发器
使用
参数说明
1 | --host=xxx |
添加索引
1 | $ pt-online-schema-change --user=root --password='xx' --socket=/data/mysql-tdds/mysql.sock --alter "ADD INDEX idx_address(address)" D=test,t=employees --print --execute |
删除索引
1 | $ pt-online-schema-change --user=root --password='xx' --socket=/data/mysql-tdds/mysql.sock --alter "DROP INDEX idx_address" D=test,t=employees --print --execute |