From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RuNW1-0008S9-Oi for garchives@archives.gentoo.org; Mon, 06 Feb 2012 12:17:50 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 00086E0774; Mon, 6 Feb 2012 12:17:34 +0000 (UTC) Received: from mail-ww0-f53.google.com (mail-ww0-f53.google.com [74.125.82.53]) by pigeon.gentoo.org (Postfix) with ESMTP id D2B01E0592 for ; Mon, 6 Feb 2012 12:16:24 +0000 (UTC) Received: by wgbdr12 with SMTP id dr12so5841994wgb.10 for ; Mon, 06 Feb 2012 04:16:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=date:from:to:subject:message-id:in-reply-to:references:organization :x-mailer:mime-version:content-type:content-transfer-encoding; bh=DtTq3qKunHHWSVrZqdzRBYuMuQ/q4fwYLAS/AT40Fy8=; b=dIXZtETamP71RNfwwK/9AR9M6RqYdsrTQzjjNcOOjqSJezvdubRIddIjw65Ss8ydYA SE6iyMqjxzO2sFay4bJFhEV1GGsMdL5YCKiSanBdwHk6BoRxeI2QuG4nBGuZbTHe/ydS zhA9DB8vOJjuFfOijUIqATawHsjeUXxYuXBGE= Received: by 10.180.95.1 with SMTP id dg1mr26904757wib.21.1328530584000; Mon, 06 Feb 2012 04:16:24 -0800 (PST) Received: from khamul.example.com (196-215-2-107.dynamic.isadsl.co.za. [196.215.2.107]) by mx.google.com with ESMTPS id l6sm24893068wiv.11.2012.02.06.04.16.21 (version=SSLv3 cipher=OTHER); Mon, 06 Feb 2012 04:16:22 -0800 (PST) Date: Mon, 6 Feb 2012 14:15:32 +0200 From: Alan McKinnon To: gentoo-user@lists.gentoo.org Subject: Re: [gentoo-user] Warning about old init scripts when updating dev-db/mysql-init-scripts-2.0_pre1-r2 Message-ID: <20120206141532.3d18d312@khamul.example.com> In-Reply-To: <4F2FC187.50402@libertytrek.org> References: <4F2EB5BC.2070803@libertytrek.org> <4F2EBA25.9020802@libertytrek.org> <20120205220642.2b43e7e7@khamul.example.com> <4F2FC187.50402@libertytrek.org> Organization: Internet Solutions X-Mailer: Claws Mail 3.8.0 (GTK+ 2.24.9; x86_64-pc-linux-gnu) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Archives-Salt: e64cdbed-cf11-4948-84f4-7fce3894f2ca X-Archives-Hash: 6281dee79dd80f1c0cf8fa55fe2cf4c0 On Mon, 06 Feb 2012 07:03:19 -0500 Tanstaafl wrote: > On 2012-02-05 3:06 PM, Alan McKinnon wrote: > > In your shoes what I would be doing now is backup your entire mysql > > install (everything listed in "equery files mysql"), delete the > > package (emerge -C) and remerge mysql. > > > > Then check if starting and stopping works correctly. I suspect > > you'll find it will. Now you just need to diff these new files with > > your backups and find differences. > > > > Yes, this is sort of the long way round but you're not having much > > luck asking "anyone seen this before?", so now it's time to bring > > out the big guns > > Well, I'd much prefer some more basic troubleshooting first... > > I've asked for some kind soul/souls to share their init scripts so I > can compare - but I guess I couldg go first... here is the contents > of /etc/init.d/mysql: > > #!/sbin/runscript > # Copyright 1999-2011 Gentoo Foundation > # Distributed under the terms of the GNU General Public License v2 > # $Header: > /var/cvsroot/gentoo-x86/dev-db/mysql-init-scripts/files/mysql-5.1.53-init.d,v > 1.1 2011/01/13 20:06:06 robbat2 Exp $ > > depend() { > use net.lo > # localmount needed for $basedir > need localmount > } > > get_config() { > my_print_defaults --config-file="$1" mysqld | > sed -n -e "s/^--$2=//p" > } > > mysql_svcname() { > local ebextra= > case "${SVCNAME}" in > mysql*) ;; > *) ebextra=" (mysql)" ;; > esac > echo "${SVCNAME}${ebextra}" > } > > start() { > # Check for old conf.d variables that mean migration was not > yet done. > local varlist="${!mysql_slot_*} ${!MYSQL_BLOG_PID_FILE*} > ${!STOPTIMEOUT*}" > varlist="${varlist// /}" > # Yes, MYSQL_INIT_I_KNOW_WHAT_I_AM_DOING is a hidden > variable. # It does have a use in testing, as it is possible to build > a config file > # that works with both the old and new init scripts > simulateously. if [ -n "${varlist}" -a -z > "${MYSQL_INIT_I_KNOW_WHAT_I_AM_DOING}" ]; then > eerror "You have not updated your conf.d for the new > mysql-init-scripts-2 revamp." > eerror "Not proceeding because it may be dangerous." > return 1 > fi > > # Now we can startup > ebegin "Starting $(mysql_svcname)" > > MY_CNF="${MY_CNF:-/etc/${SVCNAME}/my.cnf}" > > if [ ! -r "${MY_CNF}" ] ; then > eerror "Cannot read the configuration file > \`${MY_CNF}'" return 1 > fi > > # tail -n1 is critical as these we only want the last > instance of the option > local basedir=$(get_config "${MY_CNF}" basedir | tail -n1) > local datadir=$(get_config "${MY_CNF}" datadir | tail -n1) > local pidfile=$(get_config "${MY_CNF}" pid-file | tail -n1) > local socket=$(get_config "${MY_CNF}" socket | tail -n1) > > if [ ! -d "${datadir}" ] ; then > eerror "MySQL datadir \`${datadir}' is empty or > invalid" eerror "Please check your config file \`${MY_CNF}'" > return 1 > fi > > if [ ! -d "${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..." > return 1 > fi > > local piddir="${pidfile%/*}" > if [ ! -d "$piddir" ] ; then > mkdir "$piddir" && \ > chown mysql "$piddir" > rc=$? > if [ $rc -ne 0 ]; then > eerror "Directory $piddir for pidfile does > not exist and cannot be created" > return 1 > fi > fi > > local startup_timeout=${STARTUP_TIMEOUT:-900} > local startup_early_timeout=${STARTUP_EARLY_TIMEOUT:-1000} > local tmpnice="${NICE:+"--nicelevel "}${NICE}" > local tmpionice="${IONICE:+"--ionice "}${IONICE}" > start-stop-daemon \ > ${DEBUG/*/"--verbose"} \ > --start \ > --exec "${basedir}"/sbin/mysqld \ > --pidfile "${pidfile}" \ > --background \ > --wait ${startup_early_timeout} \ > ${tmpnice} \ > ${tmpionice} \ > -- --defaults-file="${MY_CNF}" ${MY_ARGS} > local ret=$? > if [ ${ret} -ne 0 ] ; then > eend ${ret} > return ${ret} > fi > > ewaitfile ${startup_timeout} "${socket}" > eend $? || return 1 > > save_options pidfile "${pidfile}" > save_options basedir "${basedir}" > } > > stop() { > ebegin "Stopping $(mysql_svcname)" > > local pidfile="$(get_options pidfile)" > local basedir="$(get_options basedir)" > local stop_timeout=${STOP_TIMEOUT:-120} > > start-stop-daemon \ > ${DEBUG/*/"--verbose"} \ > --stop \ > --exec "${basedir}"/sbin/mysqld \ > FWIW, here's mine (spaced between lines of "====" to be easy to find). Both are largely unchanged from default: ======= /etc/conf.d/mysql: # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-db/mysql-init-scripts/files/mysql-5.1.53-conf.d,v 1.2 2011/01/15 17:54:31 robbat2 Exp $ # If you want a non-stock location for the config file, uncomment or update # either of these as needed. If you do use it, you must make sure that none of # your socket, pidfile, datadir, logfiles, binary logs, relay logs or InnoDB # files collide with each other. MY_CNF="/etc/mysql/my.cnf" #MY_CNF="${MY_CNF:-/etc/${SVCNAME}/my.cnf}" #MY_CNF="${MY_CNF:-/etc/mysql/my-${SVCNAME/mysql.}.cnf}" # Place any additional arguments here that you might need # Common/useful options: # --skip-slave-start=1 - For bringing up replication initially # --server-id=NNN - Server ID for replication # --skip-networking - lock it down to UNIX sockets only MY_ARGS="" # This setting (in seconds) should be high enough to allow InnoDB to do a full # checkpoint recovery. 900 is the default used in the upstream RPM startup # scripts. 30 seconds should be sufficent if you just have a tiny <1GiB # database. After the core startup is done, we wait this long for the UNIX # socket to appear. STARTUP_TIMEOUT="900" # This is how long, in milliseconds, we wait for pidfile to be created, early # in the startup. STARTUP_EARLY_TIMEOUT="1000" # How long (in seconds) should we wait for shutdown? STOP_TIMEOUT=120 # integer [-20 .. 19 ] default 0 # change the priority of the server -20 (high) to 19 (low) # see nice(1) for description #NICE=0 # See start-stop-daemon(8) for possible settings #IONICE=2 # If defined, --verbose gets passed to S-S-D #DEBUG=1 # Depending on your usage of MySQL, you may also wish to start it after some # other services are up. Uncomment the lines below as needed. If these aren't # enough for you, we encourage you to file a bug, and help us understand how # you are using MySQL. # Do your MySQL ACLs refer to hostnames not in your /etc/hosts? # If so, you need DNS before you can accept connections. # Avoid dependency circular loops if you use MySQL to power a local DNS server. #rc_use="dns" #rc_after="dns" # Does your MySQL bind to an IP on an interface other than net.lo? # Alternatively you might wish to specify the exact interface here. #rc_use="net" #rc_after="net" # Do you store your MySQL files on a SAN or other network filesystem, that is # provided by the netmount init script? #rc_need="netmount" # Or from NFS? P.S. This is not a good idea in most cases, but does have some # valid usage cases, so we provide the option. #rc_need="nfsmount" # Should any one of the instances satisfy the requirement for MySQL coming up? # By default, we say no. [ "${SVCNAME}" != mysql ] && rc_provide="!mysql" # But uncomment this next instead if you think it should. #rc_provide="mysql" # The conditional above has a false-positive "failure" return value as a # side-effect, and since it's the last statement, without the next line, this # script returns failure. return 0 # vim: ft=gentoo-conf-d et ts=4 sw=4: ======= ======= /etc/init.smysql: #!/sbin/runscript # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-db/mysql-init-scripts/files/mysql-5.1.53-init.d,v 1.1 2011/01/13 20:06:06 robbat2 Exp $ depend() { use net.lo # localmount needed for $basedir need localmount } get_config() { my_print_defaults --config-file="$1" mysqld | sed -n -e "s/^--$2=//p" } mysql_svcname() { local ebextra= case "${SVCNAME}" in mysql*) ;; *) ebextra=" (mysql)" ;; esac echo "${SVCNAME}${ebextra}" } start() { # Check for old conf.d variables that mean migration was not yet done. local varlist="${!mysql_slot_*} ${!MYSQL_BLOG_PID_FILE*} ${!STOPTIMEOUT*}" varlist="${varlist// /}" # Yes, MYSQL_INIT_I_KNOW_WHAT_I_AM_DOING is a hidden variable. # It does have a use in testing, as it is possible to build a config file # that works with both the old and new init scripts simulateously. if [ -n "${varlist}" -a -z "${MYSQL_INIT_I_KNOW_WHAT_I_AM_DOING}" ]; then eerror "You have not updated your conf.d for the new mysql-init-scripts-2 revamp." eerror "Not proceeding because it may be dangerous." return 1 fi # Now we can startup ebegin "Starting $(mysql_svcname)" MY_CNF="${MY_CNF:-/etc/${SVCNAME}/my.cnf}" if [ ! -r "${MY_CNF}" ] ; then eerror "Cannot read the configuration file \`${MY_CNF}'" return 1 fi # tail -n1 is critical as these we only want the last instance of the option local basedir=$(get_config "${MY_CNF}" basedir | tail -n1) local datadir=$(get_config "${MY_CNF}" datadir | tail -n1) local pidfile=$(get_config "${MY_CNF}" pid-file | tail -n1) local socket=$(get_config "${MY_CNF}" socket | tail -n1) if [ ! -d "${datadir}" ] ; then eerror "MySQL datadir \`${datadir}' is empty or invalid" eerror "Please check your config file \`${MY_CNF}'" return 1 fi if [ ! -d "${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..." return 1 fi local piddir="${pidfile%/*}" if [ ! -d "$piddir" ] ; then mkdir "$piddir" && \ chown mysql "$piddir" rc=$? if [ $rc -ne 0 ]; then eerror "Directory $piddir for pidfile does not exist and cannot be created" return 1 fi fi local startup_timeout=${STARTUP_TIMEOUT:-900} local startup_early_timeout=${STARTUP_EARLY_TIMEOUT:-1000} local tmpnice="${NICE:+"--nicelevel "}${NICE}" local tmpionice="${IONICE:+"--ionice "}${IONICE}" start-stop-daemon \ ${DEBUG/*/"--verbose"} \ --start \ --exec "${basedir}"/sbin/mysqld \ --pidfile "${pidfile}" \ --background \ --wait ${startup_early_timeout} \ ${tmpnice} \ ${tmpionice} \ -- --defaults-file="${MY_CNF}" ${MY_ARGS} local ret=$? if [ ${ret} -ne 0 ] ; then eend ${ret} return ${ret} fi ewaitfile ${startup_timeout} "${socket}" eend $? || return 1 save_options pidfile "${pidfile}" save_options basedir "${basedir}" } stop() { ebegin "Stopping $(mysql_svcname)" local pidfile="$(get_options pidfile)" local basedir="$(get_options basedir)" local stop_timeout=${STOP_TIMEOUT:-120} start-stop-daemon \ ${DEBUG/*/"--verbose"} \ --stop \ --exec "${basedir}"/sbin/mysqld \ --pidfile "${pidfile}" \ --retry ${stop_timeout} eend $? } # vim: filetype=gentoo-init-d sw=2 ts=2 sts=2 noet: ======= -- Alan McKinnnon alan.mckinnon@gmail.com