supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: Vincent Danen <vdanen@annvix.org>
Cc: supervision@list.skarnet.org
Subject: Re: Warning about mysqld's behaviour
Date: Thu, 14 Apr 2005 12:05:48 -0600	[thread overview]
Message-ID: <970f15f9f68f816a06c38ffb05a4e274@annvix.org> (raw)
In-Reply-To: <20050414085007.3830.qmail@b6398251b71d42.315fe32.mid.smarden.org>

[-- Attachment #1: Type: text/plain, Size: 3168 bytes --]


On Apr 14, 2005, at 2:53, Gerrit Pape wrote:

> On Sun, Apr 10, 2005 at 11:16:06PM -0400, Charlie Brady wrote:
>> Version of mysql is 3.23.58. I haven't looked at other versions, so 
>> don't
>> know whether this is new or old brain-damage.
>>
>> I have a straightforward run file:
>>
>> #!/bin/sh
>> exec /usr/libexec/mysqld \
>>  --defaults-file=/etc/my.cnf \
>>  --basedir=/usr \
>>  --datadir=/var/lib/mysql \
>>  --user=mysql \
>>  --pid-file=/var/run/mysqld/mysqld.pid
>>
>> This starts a set of four mysqld processes/threads:
>
>> But notice that the pid file doesn't reference the parent process:
>>
>> sh-2.05a# svstat .
>> .: up (pid 31796) 123 seconds, normally down
>> sh-2.05a# cat /var/run/mysqld/mysqld.pid ; echo
>> 31798
>> sh-2.05a#
>
>> But, it's worse than that, Jim! The parent process - the one that
>> supervise is watching and "controlling" ignores INT, TERM and QUIT
>> signals.
>
>> So we lose control of the daemon:
>
>> Fortunately runit provides an easy solution to this problem (although 
>> we
>> are left with no option but to trust a pid file, with all the problems
>> that entails). We just create control/t and control/d files (at 
>> least),
>> containing:
>>
>> #! /bin/sh
>> exec kill -TERM $(cat /var/run/mysqld/mysqld.pid)
>
>> [Gerrit, if you can verify this, you'll need to update your run script
>> list.]
>
> I personally don't use mysql, I won't verify it.  I think instead of
> updating the run script on the web page, I'll remove mysql completely
> from the list.  This service daemon causes so many troubles for a
> supervisor, that's not worth it imho, it even seems to change behavior
> from version to version.

I don't have a problem here running the latest mysql (4.1.11) using the 
following scripts:

[root@titan mysqld]# cat run
#!/bin/sh
PATH="/sbin:/usr/sbin:/bin:/usr/bin"

# this runs mysqld supervised

umask 077

DATADIR="/var/lib/mysql"
PID_FILE="$DATADIR/`/bin/hostname`.pid"
MYSQLD_OPTS=""
LOG=""

# overwrite the above
if [ -f /etc/sysconfig/mysqld ]; then
   . /etc/sysconfig/mysqld
fi

if [ "$LOG" != "" ]; then
   LOGFILE="--log=$LOG"
fi

/usr/sbin/mysqld --basedir=/ --datadir=$DATADIR --user=mysql 
--pid-file=$PID_FILE $LOGFILE --skip-locking $MYSQLD_OPTS 2>&1
[root@titan mysqld]# cat finish
#!/bin/sh
PATH="/sbin:/usr/sbin:/bin:/usr/bin"

# this uses mysqladmin to shutdown mysqld, but we have to tell it where 
to find .my.cnf

HOME=/root /usr/bin/mysqladmin shutdown

As you can see, we can start and stop it all we like, provided we store 
the root user's password (for the db root user) in root's (system root) 
~/.my.cnf:

[root@titan mysqld]# srv stop mysqld
Stopping mysqld: mysqld mysqld/log done
[root@titan mysqld]# srv status mysqld
/service/mysqld: down 1 seconds
/service/mysqld/log: down 5 seconds
[root@titan mysqld]# srv start mysqld
Starting mysqld: mysqld/log mysqld done
[root@titan mysqld]# srv status mysqld
/service/mysqld: run (pid 3590) 9 seconds
/service/mysqld/log: run (pid 3580) 9 seconds

-- 
Annvix - Secure Linux Server: http://annvix.org/
"lynx -source http://linsec.ca/vdanen.asc | gpg --import"
{FEE30AD4 : 7F6C A60C 06C2 4811 FA1C  A2BC 2EBC 5E32 FEE3 0AD4}

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 186 bytes --]

      parent reply	other threads:[~2005-04-14 18:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-11  3:16 Charlie Brady
2005-04-14  8:53 ` Gerrit Pape
2005-04-14 12:07   ` Alex Efros
2005-04-14 15:29     ` Charlie Brady
2005-04-14 18:05   ` Vincent Danen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=970f15f9f68f816a06c38ffb05a4e274@annvix.org \
    --to=vdanen@annvix.org \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).