安装步骤
- 安装依赖包
yum -y install perl-Digest-MD5
yum install perl-DBI
yum install perl-DBD-MySQL
yum install perl-Time-HiRes
yum install perl-IO-Socket-SSL
- 下载工具包
percona-toolkit-3.0.13_x86_64.tar.gz - 解压
tar -zxvf percona-toolkit-3.0.13_x86_64.tar.gz
cd percona-toolkit-3.0.13
操作示例
- 添加字段
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --alter=" add COLUMN order_code varchar(300) not null default 1 COMMENT '告警规则id'" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
注:添加的字段为not null 时必须制定default 值,所有新字段数据会被置为default值
- 更改字段长度
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --alter=" modify order_code varchar(300) not null default 1 COMMENT '告警规则id'" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
- 删除字段
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --alter=" drop COLUMN order_code" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
- 添加索引
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --alter=" add index idx_ordercode(order_code)" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
- 添加唯一索引
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --nocheck-unique-key-change --alter=" add unique index idx_ordercode(order_code) COMMENT '告警规则id'" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
注:添加唯一索引时如果表中有重复数据会造成数据丢失,同时在操作进行中如果有duplicate key插入也会丢失数据
- 删除索引
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --alter=" drop index idx_ordercode" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
- 单表多个操作
注:对同一个表的多个操作可以在–alter 中使用逗号分隔,同时处理
示例如下:
time ./pt-online-schema-change --charset=utf8 --user="root" --password="xxxxxx" --no-version-check --nocheck-unique-key-change --alter=" drop COLUMN order_code,add unique index idx_orderitemid(order_item_id)" D=vems_order,t=t_order_merc,h=127.0.0.1,P=3307 --execute
测试记录
pt-osc
1400W
添加索引:real 14m6.270s
alter table t_order_merc add index idx_ordercode(order_code);
1400W
添加索引:
时间: 706.722s
阻塞所有节点alter 之后的事务
pt-osc
1400W
删除索引:real 11m3.267s
alter table t_order_merc drop index idx_ordercode;
1400W
删除索引