我正在使用 Scalar 来扩展网站服务器。
在 Apache 服务器上,我安装了 Sakai,并为 Linux 机器创建了一个启动脚本。
问题是,如何确保 MySQL Instance 在 Apache 服务器启动之前启动并运行,因为如果 Apache 服务器先启动,那么运行 Sakai 的连接就会失败,从而导致各种问题。
如何确保实例以我需要的方式启动?我还是 Scalr 的新手,所以任何帮助都将不胜感激。
谢谢
如果您自己编写了 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 系统,您会注意到启动脚本 /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。
祝你好运,亚历克斯。