auto startup/shutdown question

From: Kurt A. Buckardt (kurtb@konsultek.com)
Date: Thu Mar 13 2003 - 07:12:00 EST


I'm trying to get MySQL to run as a service at system start, and I can't
seem to get it. I'm not sure if it's a MySQL issue or a Solaris issue.
I can execute the /etc/init.d/mysql.server script from command prompt
and it will work, so I believe the issue may be a Solaris issue. I've
followed the MySQL instructions at
http://www.mysql.com/doc/en/Automatic_start.html I'm looking for some
troubleshooting tips. Any assistance is appreciated!

OS=Solaris 5.8

Path to mysql = /export/home/usr/local/mysql

# ls -la /etc/my.cnf

-rw-r--r-- 1 root other 2681 Mar 12 18:23 my.cnf

# ls -la /etc/init.d/mysql.server

-rwxr--r-- 3 root sys 5062 Mar 12 17:55 mysql.server

# ls -la /etc/rc3.d/S99mysql

-rwxr--r-- 3 root sys 5062 Mar 12 17:55
/etc/rc3.d/S99mysql

# ls -la /etc/rc0.d/K01mysql

-rwxr--r-- 3 root sys 5062 Mar 12 17:55
/etc/rc0.d/K01mysql

CONTENTS OF /etc/my.cnf

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

datadir = /export/home/usr/local/mysql/var

user = mysql

port = 3306

socket = /tmp/mysql.sock

skip-locking

set-variable = key_buffer=16M

set-variable = max_allowed_packet=1M

set-variable = table_cache=64

set-variable = sort_buffer=512K

set-variable = net_buffer_length=8K

set-variable = myisam_sort_buffer_size=8M

log-bin

server-id = 1

[mysql_server]

basedir=/export/home/usr/local/mysql

[mysqldump]

quick

set-variable = max_allowed_packet=16M

[mysql]

no-auto-rehash

[isamchk]

set-variable = key_buffer=20M

set-variable = sort_buffer=20M

set-variable = read_buffer=2M

set-variable = write_buffer=2M

[myisamchk]

set-variable = key_buffer=20M

set-variable = sort_buffer=20M

set-variable = read_buffer=2M

set-variable = write_buffer=2M

[mysqlhotcopy]

interactive-timeout

CONTENTS of /etc/init.d/mysql.server

#!/bin/sh

# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB &
Detron HB

# This file is public domain and comes with NO WARRANTY of any kind

# MySQL daemon start/stop script.

# Usually this is put in /etc/init.d (at least on machines SYSV R4 based

# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.

# When this is done the mysql server will be started when the machine is

# started and shut down when the systems goes down.

# Comments to support chkconfig on RedHat Linux

# chkconfig: 2345 90 90

# description: A very fast and reliable SQL database engine.

# Comments to support LSB init script conventions

### BEGIN INIT INFO

# Provides: mysql

# Required-Start: $local_fs $network $remote_fs

# Required-Stop: $local_fs $network $remote_fs

# Default-Start: 3 5

# Default-Stop: 3 5

# Short-Description: start and stop MySQL

# Description: MySQL is a very fast and reliable SQL database engine.

### END INIT INFO

# If you install MySQL on some other places than
/export/home/usr/local/mysql, then you

# have to do one of the following things for this script to work:

#

# - Run this script from within the MySQL installation directory

# - Create a /etc/my.cnf file with the following information:

# [mysqld]

# basedir=<path-to-mysql-installation-directory>

# - Add the above to any other configuration file (for example
~/.my.ini)

# and copy my_print_defaults to /usr/bin

# - Add the path to the mysql-installation-directory to the basedir
variable

# below.

#

# If you want to affect other MySQL variables, you should make your
changes

# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.

basedir=

# The following variables are only set for letting mysql.server find
things.

# Set some defaults

datadir=/export/home/usr/local/mysql/var

pid_file=

if test -z "$basedir"

then

  basedir=/export/home/usr/local/mysql

  bindir=/export/home/usr/local/mysql/bin

else

  bindir="$basedir/bin"

fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin

export PATH

if test -z "$pid_file"

then

  pid_file=$datadir/`/usr/bin/hostname`.pid

else

  case "$pid_file" in

    /* ) ;;

    * ) pid_file="$datadir/$pid_file" ;;

  esac

fi

mode=$1 # start or stop

parse_arguments() {

  for arg do

    case "$arg" in

      --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;

      --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;

      --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;

    esac

  done

}

# Get arguments from the my.cnf file,

# groups [mysqld] [mysql_server] and [mysql.server]

if test -x ./bin/my_print_defaults

then

  print_defaults="./bin/my_print_defaults"

elif test -x $bindir/my_print_defaults

then

  print_defaults="$bindir/my_print_defaults"

elif test -x $bindir/mysql_print_defaults

then

  print_defaults="$bindir/mysql_print_defaults"

else

  # Try to find basedir in /etc/my.cnf

  conf=/etc/my.cnf

  print_defaults=

  if test -r $conf

  then

    subpat='^[^=]*basedir[^=]*=\(.*\)$'

    dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`

    for d in $dirs

    do

      d=`echo $d | sed -e 's/[ ]//g'`

      if test -x "$d/bin/my_print_defaults"

      then

        print_defaults="$d/bin/my_print_defaults"

        break

      fi

      if test -x "$d/bin/mysql_print_defaults"

      then

        print_defaults="$d/bin/mysql_print_defaults"

        break

      fi

    done

  fi

  # Hope it's in the PATH ... but I doubt it

  test -z "$print_defaults" && print_defaults="my_print_defaults"

fi

parse_arguments `$print_defaults mysqld mysql_server mysql.server`

# Safeguard (relative paths, core dumps..)

cd $basedir

case "$mode" in

  'start')

    # Start daemon

    if test -x $bindir/safe_mysqld

    then

      # Give extra arguments to mysqld with the my.cnf file. This script
may

      # be overwritten at next upgrade.

      $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file &

      # Make lock for RedHat / SuSE

      if test -w /var/lock/subsys

      then

        touch /var/lock/subsys/mysql

      fi

    else

      echo "Can't execute $bindir/safe_mysqld from dir $basedir"

    fi

    ;;

  'stop')

    # Stop daemon. We use a signal here to avoid having to know the

    # root password.

    if test -s "$pid_file"

    then

      mysqld_pid=`cat $pid_file`

      echo "Killing mysqld with pid $mysqld_pid"

      kill $mysqld_pid

      # mysqld should remove the pid_file when it exits, so wait for it.

      sleep 1

      while [ -s $pid_file -a "$flags" !=
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]

      do

        [ -z "$flags" ] && echo "Wait for mysqld to exit\c" || echo
".\c"

        flags=a$flags

        sleep 1

      done

      if [ -s $pid_file ]

         then echo " gave up waiting!"

      elif [ -n "$flags" ]

         then echo " done"

      fi

      # delete lock for RedHat / SuSE

      if test -f /var/lock/subsys/mysql

      then

        rm /var/lock/subsys/mysql

      fi

    else

      echo "No mysqld pid file found. Looked for $pid_file."

    fi

    ;;

  *)

    # usage

    echo "usage: $0 start|stop"

    exit 1

    ;;

esac
_______________________________________________
sunmanagers mailing list
sunmanagers@sunmanagers.org
http://www.sunmanagers.org/mailman/listinfo/sunmanagers



This archive was generated by hypermail 2.1.7 : Wed Apr 09 2008 - 23:25:58 EDT