Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 195740 Details for
Bug 275371
dev-db/mysql-5.0.60-r1 does not start (1)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
mysql init script
init.txt (text/plain), 10.54 KB, created by
Joe Vitti
on 2009-06-25 09:26:28 UTC
(
hide
)
Description:
mysql init script
Filename:
MIME Type:
Creator:
Joe Vitti
Created:
2009-06-25 09:26:28 UTC
Size:
10.54 KB
patch
obsolete
>#!/sbin/runscript > ># external binaries used: which, sed, tac > ># int in_list(char * elem, char * list) >function in_list() { > local elem=${1:-"none"} > local list=${2:-","} > > [[ "${list}" == "${list/,${elem},/}" ]] \ > && return 1 \ > || return 0 >} > >function wdebug() { > if [[ "${DEBUG}" -ge "${1}" ]] ; then > shift > echo "dbg: ${@}" > fi >} > >depend() { > use dns net localmount netmount nfsmount >} > >do_escape() { > # Ihatethisreallyverymuch > #echo "$1" | sed -e "s|'| |" -e "s|=|='|" -e "s|$|'|" > echo "$1" >} > ># int get_slot_config(srv_slot=0, srv_num) >get_slot_config() { > wdebug 4 ">>> get_slot_config()" > > local srv srv_slot srv_num > srv_slot="${1:-"0"}" > srv_num="${2}" > MY_SUFFIX="-${srv_slot}" > # srv=array(0 => [srv_slot], 1 => [srv_num] ) > srv=( ${srv_slot} ${srv_num} ) > > local tmp_eval="mysql_slot_${srv_slot}${srv_num:+"_"}${srv_num}[@]" > local conf_d_parameters="${!tmp_eval}" > if [[ "${srv_slot}" == "0" ]] ; then > MY_SUFFIX='' > # try some other default for the default server > [[ -z "${conf_d_parameters[@]}" ]] && conf_d_parameters=${mysql_slot[@]} > fi > [[ -z "${conf_d_parameters[@]}" ]] && conf_d_parameters=( ) > basedir="" datadir="" pidfile="" socket="" > CHROOT="" NICE="" STARTUPTIMEOUT=5 STOPTIMEOUT=120 > > wdebug 3 "srv ${srv[@]}" > wdebug 3 "srv_slot ${srv_slot}" > wdebug 3 "srv_num ${srv_num}" > wdebug 3 "tmp_eval ${tmp_eval}" > wdebug 3 "conf_d_parameters ${conf_d_parameters[@]}" > wdebug 3 "MY_SUFFIX ${MY_SUFFIX}" > > local tmp_eval="mysql_slot_${srv_slot}${srv_num:+"_"}${srv_num}[@]" > local conf_d_parameters="${!tmp_eval}" > # collations need to be defined *after* the character sets, > # so we will duplicate them > local collations="" > [[ ${conf_d_parameters[*]} == '()' ]] && conf_d_parameters='' > > MY_CNF="/etc/mysql${MY_SUFFIX}/my.cnf" > # summa of unmanaged parameters > # some parameters may be present multiple times > unmanagedparams="" > > # grab the parameters from conf.d/mysql definition > for my_default in ${conf_d_parameters[*]} ; do > case "${my_default}" in > nice=*) > NICE="${my_default#nice=}" > nice -n $NICE ls /tmp &>/dev/null || NICE="" > ;; > mycnf=*) MY_CNF="${my_default#mycnf=}" ;; > startup_timeout=*) > STARTUPTIMEOUT="${my_default#startup_timeout=}" ;; > basedir=*) basedir="${my_default#basedir=}" ;; > datadir=*) datadir="${my_default#datadir=}" ;; > pid-file=*) pidfile="${my_default#pid-file=}" ;; > socket=*) socket="${my_default#socket=}" ;; > *collation*=) > collations="${collations} --$( do_escape "${my_default}" )" > ;; > *=*) > # list of parameters we already have > # prepend "--" because my_print_defaults do it > unmanagedparams="${unmanagedparams} --$( do_escape "${my_default}" )" > ;; > *) > unmanagedparams="${unmanagedparams} --${my_default}" > ;; > esac > done > > if [[ ! -r "${MY_CNF}" ]] ; then > ewarn "Cannot access ${MY_CNF} !" > MY_CNF="" > my_defaults="" > else > local my_print_defaults="$(which my_print_defaults${MY_SUFFIX} 2>/dev/null)" > if [[ ! -x "${my_print_defaults}" ]] ; then > eerror "my_print_defaults NOT found or not executable" > my_defaults="" > else > my_defaults=$( ${my_print_defaults} \ > --loose-verbose \ > --config-file="${MY_CNF}" \ > mysqld server ) > fi > fi > > # grab needed parameters from my.cnf, don't override the ones from > # conf.d/mysql > for my_default in ${my_defaults} ; do > case "${my_default}" in > --chroot=*) > [[ -z "${chroot}" ]] && chroot="${my_default#--chroot=}" ;; > --basedir=*) > [[ -z "${basedir}" ]] && basedir="${my_default#--basedir=}" ;; > --datadir=*) > [[ -z "${datadir}" ]] && datadir="${my_default#--datadir=}" ;; > --pid-file=*) > [[ -z "${pidfile}" ]] && pidfile="${my_default#--pid-file=}" ;; > --socket=*) > [[ -z "${socket}" ]] && socket="${my_default#--socket=}" ;; > --*collation*=) > # the order is inversed because we want the conf.d ones overriden > collations="$( do_escape "${my_default}" ) ${collations}" > ;; > esac > done > > # some parameters > basedir="${basedir:-"/usr"}" > datadir="${datadir:-"/var/lib/mysql${MY_SUFFIX}"}" > pidfile="${pidfile:-"/var/run/mysqld/mysqld${MY_SUFFIX}.pid"}" > socket="${socket:-"/var/run/mysqld/mysqld${MY_SUFFIX}.sock"}" > unmanagedparams="${unmanagedparams} ${collations}" > > wdebug 3 "chroot dir => ${chroot}" > wdebug 3 "niceness => ${NICE}" > wdebug 3 "basedir => ${basedir}" > wdebug 3 "datadir => ${datadir}" > wdebug 3 "pidfile => ${pidfile}" > wdebug 3 "socket => ${socket}" > wdebug 3 "Unamanged => ${unmanagedparams}" > > # extension for sleep tenth of seconds, not very portable so check it before > if sleep 0.01 ; then > STARTUPTIMEOUT=$(( STARTUPTIMEOUT * 10 )) > STOPTIMEOUT=$(( STOPTIMEOUT * 10 )) > TIMEUNIT=0.1 > else > TIMEUNIT=1 > fi > > # push these out to the script > export MY_SUFFIX NICE MY_CNF pidfile datadir basedir socket CHROOT > export unmanagedparams STARTUPTIMEOUT STOPTIMEOUT TIMEUNIT > wdebug 4 "<<< get_slot_config() ok" > return 0 >} > >checkconfig() { > wdebug 4 ">>> checkconfig(\"${1}\")" > local datadir="${1}" pidfile="${2}" socket="${3}" > > if [[ -n "${NOCHECK}" ]] ; then > rm -f "${pidfile}" "${socket}" > return 0 > fi > > if [[ ! -d "${chroot}${datadir}" ]] ; then > eerror "MySQL datadir is empty or invalid" > eerror "Please check your my.cnf : ${MY_CNF}" > wdebug 4 "<<< checkconfig() KO" > return 1 > fi > > if [[ ! -d "${chroot}${datadir}/mysql" ]] ; then > eerror "You don't appear to have the mysql database installed yet." > eerror "Please run /usr/bin/mysql_install_db to have this done..." > wdebug 4 "<<< checkconfig() KO" > return 1 > fi > > if [[ -f "${chroot}${pidfile}" ]] ; then > kill -15 $(< ${pidfile}) 2>/dev/null > if [[ $? -eq 0 ]] ; then > # the process exist, we have a problem > eerror "\"${chroot}${pidfile}\" is still present and the process is running." > eerror "Please stop it \"kill $(< ${chroot}${pidfile})\" maybe ?" > wdebug 4 "<<< checkconfig() KO" > return 1 > else > rm -f "${chroot}${pidfile}" > fi > fi > > if [[ -S "${chroot}${socket}" ]] ; then > ewarn "Strange, the socket file already exist in \"${chroot}${socket}\"" > ewarn "it will be removed now and re-created by the MySQL server" > ewarn "BUT please make your checks." > rm -f "${chroot}${socket}" > fi > > wdebug 4 "<<< checkconfig() ok" > return 0 >} > >start() { > wdebug 4 ">>> start()" > > MYSQL_GLOB_PID_FILE=${MYSQL_GLOB_PID_FILE:-"/var/run/svc-started-${SVCNAME/mysql/mysqld}"} > # servers are defined in /etc/conf.d/mysql > local serverlist=${!mysql_slot_*} > # provide default for empty conf.d/mysql > if [[ -z "${serverlist}" ]] ; then > serverlist=0 > export mysql_slot_0=( ) > fi > local retstatus timeout > local globretstatus=1 > local srv_slot srv_num > # server MUST NOT share same location for these > local pidfilelist=',' datadirlist=',' socketlist=',' > local ssd_thing=1 > local mysqld_thing tmpnice > > # Ensure that LD_PRELOAD is really exported > [[ -n ${LD_PRELOAD} ]] && export LD_PRELOAD="${LD_PRELOAD}" > > ebegin "Starting ${myservice}" > # try to start each server > for srv in ${serverlist[*]} ; do > > srv_slot="${srv#mysql_slot_}" > if [[ "${srv_slot}" == "${srv_slot#*_}" ]] ; then > srv_num='' > else > srv_num="${srv_slot#*_}" > fi > srv_slot="${srv_slot%%_*}" > > retstatus=0 > get_slot_config "${srv_slot}" "${srv_num}" || retstatus=1 > > # checks > if ! checkconfig "${datadir}" "${pidfile}" "${socket}" ; then > retstatus=2 ; continue > fi > if in_list "${chroot}${pidfile}" "${pidfilelist}" ; then > eerror "Sorry, won't start with same pid-file: ${pidfile}" > retstatus=3 ; continue > fi > if in_list "${chroot}${datadir}" "${datadirlist}" ; then > eerror "Sorry, won't start with same datadir: ${datadir}" > retstatus=4 ; continue > fi > if in_list "${chroot}${socket}" "${socketlist}" ; then > eerror "Sorry, won't start with same socket: ${socket}" > retstatus=5 ; continue > fi > > einfo "Starting ${myservice} (${MY_CNF})" > > mysqld_thing="${MY_CNF:+"--defaults-file="}${MY_CNF}" > mysqld_thing="${mysqld_thing} ${unmanagedparams}" > mysqld_thing="${mysqld_thing} --basedir=${basedir}" > mysqld_thing="${mysqld_thing} --datadir=${datadir}" > mysqld_thing="${mysqld_thing} --pid-file=${pidfile}" > mysqld_thing="${mysqld_thing} --socket=${socket}" > > wdebug 2 "starting mysqld with: ${mysqld_thing}" > > if [[ ${ssd_thing} -eq 1 ]] ; then > tmpnice="${NICE:+"--nicelevel "}${NICE}" > start-stop-daemon --quiet ${DEBUG/*/"--verbose"} --start \ > --background ${tmpnice} --pidfile ${chroot}${pidfile} \ > --exec ${basedir}/sbin/mysqld${MY_SUFFIX} -- ${mysqld_thing} > retstatus=$? > else > tmpnice="${NICE:+"nice -n "}${NICE}" > ${tmpnice} ${basedir}/sbin/mysqld${MY_SUFFIX} ${mysqld_thing} & > retstatus=0 > fi > > # only the first run is done by start-stop-daemon > ssd_thing="" > > # wait for socket creation > wdebug 1 > while ! [[ -S "${chroot}${socket}" || "${STARTUPTIMEOUT}" -lt 1 || "${retstatus}" -ne 0 ]] ; do > STARTUPTIMEOUT=$(( STARTUPTIMEOUT - 1 )) > [[ ${DEBUG} -ge 1 ]] && echo -n "${STARTUPTIMEOUT}," > sleep ${TIMEUNIT} > done > wdebug 1 "" > if [[ ! -S "${chroot}${socket}" ]] ; then > eerror "MySQL${MY_SUFFIX} NOT started (${retstatus})" > retstatus=1 > else > globretstatus=0 > pidfilelist="${pidfilelist}${chroot}${pidfile}," > datadirlist="${datadirlist}${chroot}${datadir}," > socketlist="${socketlist}${chroot}${socket}," > echo "${srv_slot}${srv_num:+"_"}${srv_num}=${pidfile}" >> "${MYSQL_GLOB_PID_FILE}" > fi > done > # successfull if at least one mysqld started > wdebug 4 "<<< start()" > eend $globretstatus >} > >stop() { > get_slot_config &> /dev/null > MYSQL_GLOB_PID_FILE=${MYSQL_GLOB_PID_FILE:-"/var/run/svc-started-${SVCNAME/mysql/mysqld}"} > local runwhat pidfile shutdown_elem > local PID cnt timeout=${STOPTIMEOUT:-"120"} > local retstatus=0 > local shutdown_list="$(< "${MYSQL_GLOB_PID_FILE}" )" > > ebegin "Stopping ${myservice}" > wdebug 5 "MYSQL_GLOB_PID_FILE: ${MYSQL_GLOB_PID_FILE}" > wdebug 5 "shutdown_list: ${shutdown_list}" > for shutdown_elem in ${shutdown_list} ; do > runwhat=${shutdown_elem%%=*} > pidfile=${shutdown_elem#*=} > timeout=${STOPTIMEOUT:-"120"} > PID=$(< "${chroot}${pidfile}" ) > wdebug 3 "runwhat ${runwhat}" > wdebug 3 "pidfile ${chroot}${pidfile}" > wdebug 3 "timeout ${timeout}" > wdebug 3 "PID ${PID}" > > einfo "Stopping mysqld (${runwhat})" > > start-stop-daemon --quiet ${DEBUG/*/"--verbose"} --stop --pidfile "${chroot}${pidfile}" & > wdebug 1 "" > while [[ -n "$PID" ]] \ > && $( ps -Ao pid | grep -q "^ *$PID$" ) \ > && [[ "${timeout}" -ge 1 ]] > do > timeout=$(($timeout - 1)) > [[ ${DEBUG} -ge 1 ]] && echo -n "$(( $STOPTIMEOUT - $timeout ))," > sleep ${TIMEUNIT} > done > [[ "${timeout}" -lt 1 ]] && retstatus=1 > done > sleep ${TIMEUNIT} > [[ "$retstatus" -eq 0 ]] && rm -f "$MYSQL_GLOB_PID_FILE" > eend ${retstatus} >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 275371
: 195740 |
196288