25372130 Upgrade the version of MySQL 5.5 to 5.5.54 on Solaris
25364635 Upgrade the version of MySQL 5.6 to 5.6.35 on Solaris
25372106 Upgrade the version of MySQL 5.7 to 5.7.17 on Solaris
24835634 Upgrade MySQL server 5.7 to 5.7.15 on Solaris
24688109 Upgrade MySQL 5.5 to 5.5.52 on Solaris
23227671 Upgrade MySQL 5.5 to 5.5.49 on Solaris
15818149 mysql stop method unsafe
18605985 Need to resolve dependencies between MySQL 5.5 database and client pkgs
23227615 Port fix for Bug 23022999 from MySQL 5.6 to 5.5
23227642 Port fix for Bug 23053990 from MySQL 5.6 to 5.5
21150630 mysql SMF instances should check to see if it's really online before returning
22959660 mysql SMF service must not hardcode pid-file, socket and log-error
24708946 Upgrade the version of MySQL 5.6 to 5.6.33 on Solaris
25236651 COMPONENT_ARCHIVE_URL for MySQL-5.6 Makefile is not working
24924801 problem in DATABASE/MYSQL
25427164 problem in DATABASE/MYSQL
25215584 problem in DATABASE/MYSQL
25427149 problem in DATABASE/MYSQL
24923761 problem in DATABASE/MYSQL
25427194 problem in DATABASE/MYSQL
#!/sbin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
#
. /lib/svc/share/smf_include.sh
# SMF_FMRI is the name of the target service. This allows multiple instances
# to use the same script.
if [ -z $SMF_FMRI ]; then
echo "SMF framework variables are not initialized."
exit $SMF_EXIT_ERR
fi
getproparg() {
val=`svcprop -p $1 $SMF_FMRI`
[ -n "$val" ] && echo $val
}
MYSQLCNF=`getproparg mysql/cnf`
MYSQLBIN=`getproparg mysql/bin`
MYSQLDATA=`getproparg mysql/data`
STARTTIMEOUT=180
if [ -z ${MYSQLCNF} ]; then
echo "mysql/cnf property not set"
exit $SMF_EXIT_ERR_CONFIG
fi
if [ -z ${MYSQLBIN} ]; then
echo "mysql/bin property not set"
exit $SMF_EXIT_ERR_CONFIG
fi
if [ -z ${MYSQLDATA} ]; then
echo "mysql/data property not set"
exit $SMF_EXIT_ERR_CONFIG
fi
if [ ! -d ${MYSQLDATA} ]; then
echo "mysql/data directory ${MYSQLDATA} is not a valid MySQL data directory"
exit $SMF_EXIT_ERR_CONFIG
fi
if [ ! -d ${MYSQLDATA}/mysql ]; then
echo ${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA} --defaults-file=${MYSQLCNF}
${MYSQLBIN}/mysql_install_db --user=mysql --datadir=${MYSQLDATA} --defaults-file=${MYSQLCNF}
fi
getpidfile() {
ret=$(${MYSQLBIN}/my_print_defaults --defaults-file=${MYSQLCNF} \
mysqld | grep '^--pid-file=' | cut -d= -f2- | tail -1)
[ -z "$ret" ] && ret="${MYSQLDATA}/$(/usr/bin/uname -n).pid"
echo $ret
}
getsockfile() {
ret=$(${MYSQLBIN}/my_print_defaults --defaults-file=${MYSQLCNF} \
mysqld | grep '^--socket=' | cut -d= -f2- | tail -1)
[ -z "$ret" ] && ret="/tmp/mysql.sock"
echo $ret
}
PIDFILE=$(getpidfile)
SOCKFILE=$(getsockfile)
# ping function which return success when mysqld starts accepting connections
# or return failure in case of timeout after $STARTTIMEOUT seconds.
# using this function in mysql_start(), method waits/blocks to mysqld is really ready,
# which might take some time in case of recovery.
mysql_pinger() {
mysqld_safe_pid=$1
timer=$STARTTIMEOUT
ret=0
while [ $timer -gt 0 ]; do
sleep 1
${MYSQLBIN}/mysqladmin --no-defaults --socket=${SOCKFILE} --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break
timer=$(expr $timer - 1)
# Check if mysqld_safe is still alive, if not there is no hope
if ! kill -0 $mysqld_safe_pid >/dev/null 2>&1 ; then
ret=1
break
fi
done
# Did we timeout?
if [ $timer = 0 ]; then
echo "MySQL Database start up timeout after ${STARTTIMEOUT}s"
ret=1
fi
return $ret
}
# refresh method for this service is not defined because mysqld by itself
# cannot accept a HUP signal to reload the configuration file my.cnf
mysql_start() {
echo ${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE}
${MYSQLBIN}/mysqld_safe --defaults-file=${MYSQLCNF} --user=mysql --datadir=${MYSQLDATA} --pid-file=${PIDFILE} > /dev/null &
if mysql_pinger $! ; then
echo "Starting service MySQL"
else
echo "Failed to start service MySQL"
exit $SMF_EXIT_ERR
fi
}
case "$1" in
'start')
mysql_start
;;
*)
echo "Usage: $0 start"
exit 1
;;
esac
exit $SMF_EXIT_OK