欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql一条binlog使用shell脚本打印出原始sql

程序员文章站 2022-07-13 17:15:15
...

row格式的binlog,打印出原始sql语句,
one.sql是一个sql的binlog日志

# 一条binlog使用 --base64-output=decode-rows 解析出的sql,加上字段名,需要表面为 数据库.表名,或者自己加上表名
bin_sql_one=$(grep '### .*' one.sql| sed 's/### //')
# echo "bin_sql_one:$bin_sql_one"
table_name=$(echo "$bin_sql_one" |grep UPDATE |sed 's/UPDATE //')
# echo "table_name:$table_name"
columns=$(mysql --defaults-file=/u01/my3306/my.cnf -uroot -p123Mysql] -e "select * from $table_name limit 1\G" 2>/dev/null | tail -n +2 | cut -d':' -f1)
# echo "columns:$columns"
count=0
for column in $columns
do
  (( count++ ))
  bin_sql_one=$(echo "$bin_sql_one" | sed -e "s/@$count/$column/g")
done
echo "$bin_sql_one"