Commit 039b461d authored by vogelor's avatar vogelor

rescue-module: now rescue of mysql works fine, even if the admin wanted to NOT rescue mysql

parent 849624af
......@@ -30,6 +30,9 @@
</div>
</div>
</fieldset>
Information: If you want to shut down mysql you have to disable "rescue mysql" and then wait 2-3 minutes.<br>
if you do not wait 2-3 minutes, rescue will try to restart mysql!
<input type="hidden" name="id" value="{tmpl_var name='id'}">
......
......@@ -519,7 +519,7 @@ class monitor_tools {
$server_id = intval($conf['server_id']);
/** get the "active" Services of the server from the DB */
$services = $app->dbmaster->queryOneRecord('SELECT * FROM server WHERE server_id = ' . $server_id);
$services = $app->db->queryOneRecord('SELECT * FROM server WHERE server_id = ' . $server_id);
/*
* If the DB is down, we have to set the db to "yes".
* If we don't do this, then the monitor will NOT monitor, that the db is down and so the
......
......@@ -89,14 +89,14 @@ class rescue_core_module {
$this->_rescueData = $this->_getRescueData();
/*
* rescue apache if needed
* rescue mysql if needed (maybe apache depends on mysql, so try this first!)
*/
$this->_rescueApache();
$this->_rescueMySql();
/*
* rescue mysql if needed
* rescue apache if needed
*/
$this->_rescueMySql();
$this->_rescueApache();
/*
* The last step is to save the rescue-data
......@@ -273,7 +273,6 @@ class rescue_core_module {
$app->log('Apache is down! Try rescue apache (try:' . $tryCount . ')...', LOGLEVEL_WARN);
// echo 'Apache is down! Try rescue apache (try:' . $tryCount . ')...';
if(is_file($conf['init_scripts'] . '/' . 'httpd')) {
$daemon = 'httpd';
......@@ -340,7 +339,6 @@ class rescue_core_module {
$app->log('MySQL is down! Try rescue mysql (try:' . $tryCount . ')...', LOGLEVEL_WARN);
// echo 'MySQL is down! Try rescue mysql (try:' . $tryCount . ')...';
if(is_file($conf['init_scripts'] . '/' . 'mysqld')) {
$daemon = 'mysqld';
......
<?php
/*
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
Copyright (c) 2007-2011, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
......@@ -54,33 +54,68 @@ $conf['server_id'] = intval($conf['server_id']);
* Try to Load the server configuration from the master-db
*/
if ($app->dbmaster->connect()) {
// get the dalaog_id of the last performed record
$server_db_record = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $conf['server_id']);
$conf['last_datalog_id'] = (int) $server_db_record['updated'];
$conf['mirror_server_id'] = (int) $server_db_record['mirror_server_id'];
// Load the ini_parser
$app->uses('ini_parser');
// Get server configuration
$conf['serverconfig'] = $app->ini_parser->parse_ini_string(stripslashes($server_db_record['config']));
// Set the loglevel
$conf['log_priority'] = intval($conf['serverconfig']['server']['loglevel']);
// we do not need this variable anymore
unset($server_db_record);
/*
* Save the rescue-config, maybe we need it (because the database is down)
*/
$tmp['serverconfig']['server']['loglevel'] = $conf['log_priority'];
$tmp['serverconfig']['rescue'] = $conf['serverconfig']['rescue'];
file_put_contents(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt", serialize($tmp));
unset($tmp);
// protect the file
chmod(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt", 0600);
} else {
/*
* The master-db is not available.
* Problem: because we need to start the rescue-module (to rescue the DB if this IS the
* server, the master-db is running at) we have to initialize some config...
*/
$conf['last_datalog_id'] = intval('9223372036854775807'); // maxint at 32 and 64 bit systems
$conf['mirror_server_id'] = 0; // no mirror
// Set the loglevel to warning
$conf['log_priority'] = LOGLEVEL_WARN;
/*
* If there is a temp-file with the data we could get from the database, then we use it
*/
$tmp = array();
if (file_exists(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt")){
$tmp = unserialize(file_get_contents(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt"));
}
// maxint at 32 and 64 bit systems
$conf['last_datalog_id'] = intval('9223372036854775807');
// no mirror
$conf['mirror_server_id'] = 0;
// Set the loglevel
$conf['log_priority'] = (isset($tmp['serverconfig']['server']['loglevel']))? $tmp['serverconfig']['server']['loglevel'] : LOGLEVEL_ERROR;
/*
* Set the configuration to rescue the database
*/
$conf['serverconfig']['rescue']['try_rescue'] = 'y';
$conf['serverconfig']['rescue']['do_not_try_rescue_mysql'] = 'n';
if (isset($tmp['serverconfig']['rescue'])){
$conf['serverconfig']['rescue'] = $tmp['serverconfig']['rescue'];
}
else{
$conf['serverconfig']['rescue']['try_rescue'] = 'n';
}
// we do not need this variable anymore
unset($tmp);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment