percona-toolkit中在线ddl
percona-toolkit中在线ddl
percona-toolkit工具提供了一组用于mysql操作的工具,比如主从复制,在线更改mysql表ddl等
一.安装
1.安装perl(略)
yum install perl
2.安装必要软件:
yum install perl-DBI yum install perl-DBD-MySQL yum install perl-Time-HiRes
3.安装percona-toolkit
wget http://percona.com/get/percona-toolkit.tar.gz
tar zxvf percona-toolkit-2.1.5.tar.gz
cd percona-toolkit-2.1.5
perl Makefile.PL
make
make test
make install
或者用yum安装
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm yum install percona-toolkit
二.使用pt-online-schema-change在线更改ddl
D代表数据库
t代表数据表
alter 代表操作语句,但无需alter table,pt-online-schema-change不能rename table.
*表必须要有主键,删除主键的更改不会被接受
1.增加列(操作)
pt-online-schema-change -u root -h 127.0.0.1 -p test --alter='drop column vid' --charset=utf8 --execute D=test,t=test
注意:需要增加--charset,否则可能会造成数据表结构注释的乱码
2.增加列(只显示操作过程)
pt-online-schema-change -u root -h 127.0.0.1 -p test --alter='drop column vid' --charset=utf8 --print D=test,t=test
3.删除列
pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "DROP COLUMN content " D=aaa,t=tmp_tes
4.修改字段
pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "MODIFY COLUMN age TINYINT NOT NULL DEFAULT 0" D=aaa,t=tmp_test --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --execute
5.字段改名
pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "CHANGE COLUMN age address
6.增加索引
pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "ADD INDEX idx_address(address)" D=aaa,t=tmp_test --no-check-alter --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --print --execute
7.删除索引
pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "DROP INDEX idx_address" D=aaa,t=tmp_test --no-check-alter --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --print --execute
需要注意:在生产环境中更改,需要备份,及测试,测试无误后再做更改