scalpels/scripts/mysql-live.sh

56 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# Author: Kun Huang <academicgareth@gmail.com>
#
# Basic Usage: TODO
#
# TODO announce the advantage and disadvantages
#
log_file_var=general_log_file
log_switch_var=general_log
log_file=/tmp/mysqllive.log
old_log_file=`mysql -e "SELECT @@$log_file_var" | grep -v $log_file_var | grep -v '\-\-\-\-\-'`
old_log_switch=`mysql -e "SELECT @@$log_switch_var" | grep -v $log_switch_var | grep -v '\-\-\-\-\-'`
reset () {
echo -------------------------------------
echo reset $log_file_var to $old_log_file
echo reset $log_switch_var to $old_log_switch
mysql -e "SET GLOBAL $log_switch_var = $old_log_switch;"
mysql -e "SET GLOBAL $log_file_var = '$old_log_file';"
echo remove $log_file
echo -------------------------------------
sudo rm $log_file
}
trap "reset" SIGINT SIGTERM
echo -------------------------------------
echo reserve $log_file_var: $log_file
echo reserve $log_switch_var: ON
echo -------------------------------------
mysql -e "SET GLOBAL $log_file_var = '$log_file';"
mysql -e "SET GLOBAL $log_switch_var = ON;"
sleep 1
sudo chmod +r $log_file
# TODO use awk /reg/ statement instead
tailf $log_file | awk '{
if ( $1 + 0 != $1 )
# TODO cat this line on its above line
print $0;
else if ( $1 + 0 == $1 && $2 == "Query" && $3 == "SELECT" && $4 == "1" )
;
else if ( $1 + 0 == $1 && $2 == "Query" && $3 == "COMMIT" )
;
else if ( $1 + 0 == $1 && $2 == "Query" && $3 == "ROLLBACK" )
;
else
# TODO flag to control empty line
{ $1=$2=""; print $0; print ""}
}
'