Skip to content

Instantly share code, notes, and snippets.

@ajohnstone
Created October 30, 2013 17:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ajohnstone/7236258 to your computer and use it in GitHub Desktop.
Save ajohnstone/7236258 to your computer and use it in GitHub Desktop.
# MySQL Service
description "MySQL Server"
author "Mario Limonciello <superm1@ubuntu.com>"
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [016]
respawn
env HOME=/mnt/mysqlmem
umask 007
# The default of 5 seconds is too low for mysql which needs to flush buffers
kill timeout 300
pre-start script
mkdir -p /var/log/mysql/
exec > /var/log/mysql/upstart 2>&1
set -x
MOUNTPOINT=/mnt/mysqlmem/mysql
DIRLIST="/mnt/mysqlmem/mysql /mnt/mysqlmem/log /mnt/mysqlmem/tmp"
MYCNF="/mnt/mysqlmem/my.cnf"
[ -S /mnt/mysqlmem/mysqld.sock ] && {
echo "WARN: $$ MySQL Socket exists"
exit 0;
}
mkdir -pv /mnt/mysqlmem/mysql /mnt/mysqlmem/log /mnt/mysqlmem/tmp;
chown -Rv mysql: /mnt/mysqlmem/mysql /mnt/mysqlmem/log /mnt/mysqlmem/tmp;
[ ! -f "${MYCNF}" ] && {
echo "FATAL" $$ " Cannot find ${MYCNF}"
exit 1;
}
# Check if filesystem is mounted
if ! mount | grep mysql >/dev/null ; then
sudo mount -t tmpfs -o size=1024M tmpfs $MOUNTPOINT
if [ "$?" != 0 ] ; then
echo "FATAL" $$ " Cannot create tmpfs for $MOUNTPOINT"
exit 2
fi
fi
chown -R mysql: "${MOUNTPOINT}"
if [ -S /mnt/mysqlmem/mysqld.sock ] ; then
echo "WARN" $$ "PID Already exists"
exit 3;
fi
if [ ! -d "${MOUNTPOINT}/mysql" ] ; then
/usr/bin/mysql_install_db --defaults-file="${MYCNF}" 2>&1
if [ "$?" -ne 0 ] ; then
echo "FATAL" $$ "mysql_install_db failed"
exit 4;
fi
fi
end script
exec sudo -u mysql sh -c "/usr/sbin/mysqld --defaults-file=/mnt/mysqlmem/my.cnf 2>&1 | logger -tmysqlmem"
post-start script
exec >> /var/log/mysql/upstart 2>&1
MYCNF="/mnt/mysqlmem/my.cnf"
echo "grant all on *.* to 'root'@'10.%'; grant all on *.* to root@'jenkins'" | mysql --defaults-file=${MYCNF}
mysql_tzinfo_to_sql /usr/share/zoneinfo 2>/dev/null | mysql --defaults-file="${MYCNF}" mysql
[ -e "/mnt/mysqlmem/mysqld.sock" ] && rm -fv /mnt/mysqlmem/mysqld.sock
end script
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment