pt-online-schema-change在线修改脚本

  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
原文地址:https://www.cnblogs.com/bjx2020/p/11799898.html