components/mysql-5-5/Solaris/mysql_55
branchs11u3-sru
changeset 7765 3495fc32877e
parent 2890 47c675945a45
equal deleted inserted replaced
7764:be0c0ee57436 7765:3495fc32877e
    17 # fields enclosed by brackets "[]" replaced with your own identifying
    17 # fields enclosed by brackets "[]" replaced with your own identifying
    18 # information: Portions Copyright [yyyy] [name of copyright owner]
    18 # information: Portions Copyright [yyyy] [name of copyright owner]
    19 #
    19 #
    20 # CDDL HEADER END
    20 # CDDL HEADER END
    21 #
    21 #
    22 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
    22 # Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
    23 #
    23 #
    24 
    24 
    25 . /lib/svc/share/smf_include.sh
    25 . /lib/svc/share/smf_include.sh
    26 
    26 
    27 # SMF_FMRI is the name of the target service. This allows multiple instances 
    27 # SMF_FMRI is the name of the target service. This allows multiple instances 
    38 }
    38 }
    39 
    39 
    40 MYSQLCNF=`getproparg mysql/cnf`
    40 MYSQLCNF=`getproparg mysql/cnf`
    41 MYSQLBIN=`getproparg mysql/bin`
    41 MYSQLBIN=`getproparg mysql/bin`
    42 MYSQLDATA=`getproparg mysql/data`
    42 MYSQLDATA=`getproparg mysql/data`
    43 PIDFILE=${MYSQLDATA}/`/usr/bin/uname -n`.pid
    43 STARTTIMEOUT=180
    44 
    44 
    45 if [ -z ${MYSQLCNF} ]; then
    45 if [ -z ${MYSQLCNF} ]; then
    46         echo "mysql/cnf property not set"
    46         echo "mysql/cnf property not set"
    47         exit $SMF_EXIT_ERR_CONFIG
    47         exit $SMF_EXIT_ERR_CONFIG
    48 fi
    48 fi
    65 if [ ! -d ${MYSQLDATA}/mysql ]; then
    65 if [ ! -d ${MYSQLDATA}/mysql ]; then
    66 	echo ${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA}
    66 	echo ${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA}
    67 	${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA}
    67 	${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA}
    68 fi
    68 fi
    69 
    69 
       
    70 
       
    71 getpidfile() {
       
    72  ret=$(${MYSQLBIN}/my_print_defaults --defaults-file=${MYSQLCNF} \
       
    73  mysqld | grep '^--pid-file=' | cut -d= -f2- | tail -1)
       
    74  [ -z "$ret" ] && ret="${MYSQLDATA}/$(/usr/bin/uname -n).pid"
       
    75  echo $ret
       
    76 }
       
    77 
       
    78 getsockfile() {
       
    79  ret=$(${MYSQLBIN}/my_print_defaults --defaults-file=${MYSQLCNF} \
       
    80  mysqld | grep '^--socket=' | cut -d= -f2- | tail -1)
       
    81  [ -z "$ret" ] && ret="/tmp/mysql.sock"
       
    82  echo $ret
       
    83 }
       
    84 
       
    85 PIDFILE=$(getpidfile)
       
    86 SOCKFILE=$(getsockfile)
       
    87 
       
    88 # ping function which return success when mysqld starts accepting connections
       
    89 # or return failure in case of timeout after $STARTTIMEOUT seconds.
       
    90 # using this function in mysql_start(), method waits/blocks to mysqld is really ready,
       
    91 # which might take some time in case of recovery.
       
    92 
       
    93 mysql_pinger() {    
       
    94     mysqld_safe_pid=$1
       
    95     timer=$STARTTIMEOUT
       
    96     ret=0
       
    97     while [ $timer -gt 0 ]; do
       
    98         sleep 1
       
    99         ${MYSQLBIN}/mysqladmin --no-defaults --socket=${SOCKFILE} --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break
       
   100 	timer=$(expr $timer - 1)
       
   101 
       
   102 	# Check if mysqld_safe is still alive, if not there is no hope
       
   103 	if ! kill -0 $mysqld_safe_pid >/dev/null 2>&1 ; then
       
   104 	    ret=1
       
   105 	    break
       
   106 	fi
       
   107     done
       
   108     
       
   109     # Did we timeout?
       
   110     if [ $timer = 0 ]; then
       
   111 	echo "MySQL Database start up timeout after ${STARTTIMEOUT}s"
       
   112 	ret=1
       
   113     fi
       
   114     return $ret
       
   115 }
       
   116 
    70 # refresh method for this service is not defined because mysqld by itself
   117 # refresh method for this service is not defined because mysqld by itself
    71 # cannot accept a HUP signal to reload the configuration file my.cnf
   118 # cannot accept a HUP signal to reload the configuration file my.cnf
    72 
   119 
    73 mysql_start() 	{
   120 mysql_start() 	{
    74 	echo ${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE}
   121 	echo ${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE}
    75 	${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE} > /dev/null &
   122 	${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE} > /dev/null &
    76 
   123 
    77 }
   124         if mysql_pinger $! ; then
    78 
   125             echo "Starting service MySQL"
    79 	
   126         else
    80 mysql_stop()	{
   127             echo "Failed to start service MySQL"
    81 	if [ -f ${PIDFILE} ]; then
   128             exit $SMF_EXIT_ERR
    82 	smf_kill_contract $1 KILL 1 30
   129         fi
    83 	fi
       
    84 }
   130 }
    85 
   131 
    86 case "$1" in
   132 case "$1" in
    87 'start')
   133 'start')
    88 	mysql_start 
   134 	mysql_start 
    89 	;;
   135 	;;
    90 
   136 
    91 'stop')
       
    92 	mysql_stop $2
       
    93 	;;
       
    94 
       
    95 
       
    96 *)
   137 *)
    97 	echo "Usage: $0 {start|stop}"
   138 	echo "Usage: $0 start"
    98 	exit 1
   139 	exit 1
    99 	;;
   140 	;;
   100 
   141 
   101 esac
   142 esac
   102 exit $SMF_EXIT_OK
   143 exit $SMF_EXIT_OK