diff -r d91edeb58b50 patch_info/mysqld_safe_syslog.info --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patch_info/mysqld_safe_syslog.info Mon Sep 01 21:58:00 2008 -0700 @@ -0,0 +1,6 @@ +File=mysqld_safe_syslog.patch +Name=Patch allows redirect output of error.log to syslog-ng +Version=1.0 +Author=Percona +License=GPL +Comment=Ported from Debian diff -r d91edeb58b50 scripts/mysqld_safe.sh --- a/scripts/mysqld_safe.sh Mon Sep 01 21:57:21 2008 -0700 +++ b/scripts/mysqld_safe.sh Mon Sep 01 21:58:00 2008 -0700 @@ -10,12 +10,16 @@ # mysql.server works by first doing a cd to the base directory and from there # executing mysqld_safe -KILL_MYSQLD=1; MYSQLD= trap '' 1 2 3 15 # we shouldn't let anyone kill us umask 007 + +KILL_MYSQLD=1; + +# This command can be used as pipe to syslog. With "-s" it also logs to stderr. +ERR_LOGGER="logger -p daemon.err -t mysqld_safe -i" defaults= case "$1" in @@ -177,7 +181,6 @@ # these rely on $DATADIR by default, so we'll set them later on pid_file= -err_log= # Get first arguments from the my.cnf file, groups [mysqld] and [mysqld_safe] # and then merge with the command line arguments @@ -245,7 +248,6 @@ * ) pid_file="$DATADIR/$pid_file" ;; esac fi -test -z "$err_log" && err_log=$DATADIR/`@HOSTNAME@`.err if test -n "$mysql_unix_port" then @@ -315,8 +317,6 @@ then USER_OPTION="--user=$user" fi - # If we are root, change the err log to the right user. - touch $err_log; chown $user $err_log if test -n "$open_files" then ulimit -n $open_files @@ -341,18 +341,16 @@ then if @FIND_PROC@ then # The pid contains a mysqld process - echo "A mysqld process already exists" - echo "A mysqld process already exists at " `date` >> $err_log + echo "A mysqld process already exists" | $ERR_LOGGER -s exit 1 fi fi rm -f $pid_file if test -f $pid_file then - echo "Fatal error: Can't remove the pid file: $pid_file" - echo "Fatal error: Can't remove the pid file: $pid_file at " `date` >> $err_log - echo "Please remove it manually and start $0 again" - echo "mysqld daemon not started" + echo "Fatal error: Can't remove the pid file: $pid_file" | $ERR_LOGGER -s + echo "Please remove it manually and start $0 again" | $ERR_LOGGER -s + echo "mysqld daemon not started" | $ERR_LOGGER -s exit 1 fi fi @@ -377,15 +375,15 @@ # ulimit -n 256 > /dev/null 2>&1 # Fix for BSD and FreeBSD systems #fi -echo "`date +'%y%m%d %H:%M:%S mysqld started'`" >> $err_log +echo "started" | $ERR_LOGGER -s while true do rm -f $safe_mysql_unix_port $pid_file # Some extra safety if test -z "$args" then - $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ >> $err_log 2>&1 + $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ 2>&1 | $ERR_LOGGER -t mysqld else - eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ $args >> $err_log 2>&1" + eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ $args 2>&1 | $ERR_LOGGER -t mysqld" fi if test ! -f $pid_file # This is removed if normal shutdown then @@ -402,7 +400,7 @@ # kill -9 is used or the process won't react on the kill. numofproces=`ps xaww | grep -v "grep" | grep "$ledir/$MYSQLD\>" | grep -c "pid-file=$pid_file"` - echo -e "\nNumber of processes running now: $numofproces" | tee -a $err_log + echo -e "\nNumber of processes running now: $numofproces" | $ERR_LOGGER -s I=1 while test "$I" -le "$numofproces" do @@ -415,16 +413,14 @@ # echo "TEST $I - $T **" if kill -9 $T then - echo "$MYSQLD process hanging, pid $T - killed" | tee -a $err_log + echo "$MYSQLD process hanging, pid $T - killed" | $ERR_LOGGER -s else break fi I=`expr $I + 1` done fi - echo "`date +'%y%m%d %H:%M:%S'` mysqld restarted" | tee -a $err_log + echo "restarted" | $ERR_LOGGER -s done -echo "`date +'%y%m%d %H:%M:%S'` mysqld ended" | tee -a $err_log -echo "" | tee -a $err_log - +echo "ended" | $ERR_LOGGER -s