user265330
user265330

Reputation: 2553

Ubuntu Upstart - running script before MySQL is started

Before starting mysql on an Ubuntu server, I need to run another script that sets a few things up. mysql is started by the Upstart system. I had never heard of Upstart, but I have now read the documentation and I think there are a few options as to how this could be achieved, but I would be grateful for a more experienced Upstart user to confirm, or otherwise, my conclusions.

Of the four options below, I am favouring the last one because it does not involve changing the mysql.conf job.

mysql.conf:
pre-start script
    mkdir -p /mnt/mysql
    [ -L /var/lib/mysql ] || ln -s /mnt/mysql /var/lib/mysql
    /usr/bin/mysql_install_db --user=mysql
chown mysql:mysql /var/lib/mysql/mysql/.
chown mysql:mysql /var/lib/mysql/mysql/*
end script

mysql.conf
pre-start exec /var/myscriptfile (where myscriptfile contains mkdir -p /mnt/mysql etc)

mysql.conf
start on started mysql-primer
(where mysql-primer is an Upstart job that does mkdir etc)

mything.conf
start on starting mysql
task
script
    mkdir -p /mnt/mysql
    [ -L /var/lib/mysql ] || ln -s /mnt/mysql /var/lib/mysql
    /usr/bin/mysql_install_db --user=mysql
chown mysql:mysql /var/lib/mysql/mysql/.
chown mysql:mysql /var/lib/mysql/mysql/*
end script

Thanks, Paul

Upvotes: 1

Views: 2096

Answers (1)

SpamapS
SpamapS

Reputation: 1115

Your last idea is exactly right:

mything.conf:

start on starting mysql
task
script
    mkdir -p /mnt/mysql
    [ -L /var/lib/mysql ] || ln -s /mnt/mysql /var/lib/mysql
    /usr/bin/mysql_install_db --user=mysql
    chown mysql:mysql /var/lib/mysql/mysql/.
    chown mysql:mysql /var/lib/mysql/mysql/*
end script

The starting event blocks on any tasks that start on it until said tasks complete.

Upvotes: 2

Related Questions