1

在 Ubuntu 服务器上启动 mysql 之前,我需要运行另一个脚本来设置一些东西。mysql由Upstart系统启动。我从未听说过 Upstart,但我现在已经阅读了文档,并且我认为对于如何实现这一点有一些选择,但我会感谢更有经验的 Upstart 用户确认或以其他方式确认我的结论。

在下面的四个选项中,我更喜欢最后一个,因为它不涉及更改 mysql.conf 作业。

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

谢谢,保罗

4

1 回答 1

2

你的最后一个想法是完全正确的:

神话.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

启动事件会阻止任何在其上启动的任务,直到所述任务完成。

于 2012-09-07T18:49:58.230 回答