pt-online-schema-change在线修改脚本
经过几次在测试环境中使用,发现5.6和5.7可以正常使用。mysql8.0.18版本中,竟然无法使用,感到惊讶。难道mysql8.0.18强大到无需再用这个外围工具了吗?反过来说过,mysql8.0.18确实在很多ddl中可以在线操作了。
[root@bj-db-manage scripts]# cat dbtest.oneline_ddl_.sh #!/bin/bash source /etc/profile Db="dbtest" Tab="t2" # pre Master_Host="172.16.0.100" Backup_Host="172.16.0.101" # prod #Master_Host="10.10.0.100" #Backup_Host="10.10.0.105" Dump_Command="/usr/bin/mysqldump" Sql_Operators="add index idx_sale_uid (sale_uid);" Charset="utf8mb4" User="username" Passwd="xxxxx" Tool="/usr/bin/pt-online-schema-change" Base_Dir="/data/backup" Data_Dir="${Base_Dir}/data/$(date +%F)" Log_Dir="${Base_Dir}/logs" Log_File="${Log_Dir}/${Db}.log" [[ -d "$Data_Dir" ]] || mkdir -p $Data_Dir File=${Data_Dir}/${Db}-${Tab}_$(date +%F_%H_%M).sql echo -e "$(date) 开始备份表 $Table" "${Dump_Command}" -u$User -p$Passwd -h $Backup_Host --default-character-set=$Charset --skip-tz-utc --single-transaction --master-data=2 --set-gtid-purged=OFF $Db $Tab > $File if [ $? -eq 0 ];then ls -lth "${File}" $Tool --user=$User --password=$Passwd -h $Master_Host --critical-load="Threads_running=200" --no-check-replication-filters --no-check-unique-key-change D=$Db,t=$Tab --charset=$Charset --alter=" "${Sql_Operators}" " --execute >> $Log_File 2>> $Log_File else echo "备份失败,退出修改程序" exit fi