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

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"

猜你喜欢

转载自blog.csdn.net/c5113620/article/details/104775972