有没有办法在Apache Instance on Scale之前启动MySQL实例?

时间:2011-03-31 21:57:14

标签: mysql apache tomcat5.5 scalr sakai

我正在使用Scalr来扩展网站服务器。

在Apache服务器上,我安装了Sakai,并为Linux机器创建了一个启动脚本。

问题是,如何在Apache服务器启动之前确保启动并运行MySQL实例,因为如果Apache服务器首先启动,那么运行Sakai的连接将失败,这会导致所有类型问题。

如何确保实例以我需要的方式启动?我仍然是Scalr的新手,所以任何帮助都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:1)

如果您自己编写了Apache启动脚本,则可以检查数据库实例是否已在运行。

您可以包含一个简单的等待循环:

MYSQL_OK=1
while ["$MYSQL_OK" -ne 0] ; do
   echo "SELECT version();" | mysql -utestuser -ptestpassword testdb
   MYSQL_OK=$?
   sleep 5
done

很明显,您必须在Mysql中创建一些testuser和test-database:

CREATE DATABASE testdb;
GRANT USAGE,SELECT ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'testpassword';
FLUSH PRIVILEGES;

简单地将while循环放在脚本中的某个位置)。如果您的系统是某种Redhat系统,您会注意到start-script /etc/init.d/httpd有这样一行:

Required-Start: $local_fs $remote_fs $network $named

如果你将$ mysqld添加到该行,Apache将在启动前坚持运行mysqld:

Required-Start: $local_fs $remote_fs $network $named $mysqld

但是,缺点是Apache启动失败而不是等待运行mylsqd。

祝你好运, 亚历克斯。