Reputation: 2553
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
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