【Mysql】- pt-online-schema-change在线更新大表字段、加索引

线上order表的数据已经将近千万,需要启动一个废弃的字段,更新字段长度,并且加索引:

更新字段类型:

pt-online-schema-change --charset=utf8 --no-check-replication-filters --no-version-check --user=user --password=pass --host=host_addr P=3306,D=shop,t=order --alter "MODIFY COLUMN parent_id int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '上级id' AFTER is_separate" --execute

添加索引:

pt-online-schema-change --charset=utf8 --no-check-replication-filters --no-version-check --user=user --password=pass --host=host_addr  P=3306,D=shop,t=order --alter "add INDEX parent_id(parent_id)" --execute

关于online-schema-change

是percona推出的一个针对mysql在线ddl的工具

percona是一个mysql分支维护公司,专门提供mysql技术服务的。我的理解,类似于linux的分支redhat公司

官网下载地址为:http://www.percona.com/redir/downloads/percona-toolkit/2.2.1/percona-toolkit-2.2.1.tar.gz

原理上:

在进行表结构的修改的时候,会先建立一个临时的表,然后进行原表的数据拷贝与结构修改,与此同时会在原表上建立触发器(update,insert,delete),把数据同步到临时表上,当临时表修改完毕后,最后进行一下表明的更改,所以理论上锁表的时间会很短。

注:表一定要有主键

得意时做事,失意时读书
原文地址:https://www.cnblogs.com/lanse1993/p/12519228.html