然后使用scp直接把虚拟机的文件传输到主机上,执行命令为scp percona-toolkit-3.2.0-1.el7.x86_64.rpm root@ip:/
使用语法非常简单scp local_file remote_username@remote_ip:remote_folder
local_file :本地文件
remote_username:远程用户名
remote_ip:远程机器IP地址
remote_folder 远程目录
执行完成后需要输入服务器密码,然后等待传输完成就可以在服务器上看到对应的文件
这里分别在虚拟机、服务器查看了文件大小,文件是没有一点问题的
到这里对于pt-online-schema-change的安装才完成,接下来重试之前执行的命令
./bin/pt-online-schema-change --charset=utf8 --no-version-check --user="root" --password="Fang1996" --host="127.0.0.1" D="kaka",t=evt_sms --alter "add column email varchar(255) not null default '' after phone" --print --execute
以上就是修改成功的信息,可以看到处理数据有46W,基本是毫无压力,建议大家实测一下
可以看到要加的email字段已经加上了,这个就是我们想要的结果
四、简化pt-online-schema-change的执行命令
在执行修改表结构命令时输入了很多配置信息, 这些信息可以放在脚本里边复用的
#!/bin/bash database=$1 table=$2 alter_conment=$3 pt_host='127.0.0.1' pt_user='root' pt_pwd='Fang1996' echo "$table" echo "$alter_conment" /bin/pt-online-schema-change --charset=utf8 --no-version-check --user=${pt_user} --password=${pt_pwd} --host=${pt_host} P=3306,D=$database,t=$table --alter "${alter_conment}" --print --execute
那么使用pt-online-schema-change则可以这样写
sh pt.sh kaka evt_sms "add column kaka1 varchar(255) default '咔咔'"
这里给大家提供了添加字段的方法,修改、删除都是一致的,只需要把对应的语句放到引号里边即可
在这里你会发现只有进到脚本的目录才能执行对应的脚本,那么如何让你的脚本可以在任意地方都可以执行呢?
五、总结
本期文章给大家详细说明了为什么不建议大家直接在线DDL,因为会阻塞SQL导致业务停摆
给大家介绍了第三方脚本pt-online-schema-change的安装、使用,使用还是非常简单的,参数也只给大家说明了常用的,如果要放到生产环境使用,你需要把所有的参数都简单过一遍。
最后用一个脚本优化了修改表信息时需要输入的一大堆重复信息。