function instance_delete() { $instance_id = $_GET["instance_id"]; $pidfile = "/var/run/mysqld/mysqld{$instance_id}.pid"; $ini = new iniFrameWork("/etc/mysql-multi.cnf"); $database_path = $ini->get("mysqld{$instance_id}", "datadir"); $unix = new unix(); if (is_file("/usr/sbin/mysqlmulti-start{$instance_id}")) { @unlink("/usr/sbin/mysqlmulti-start{$instance_id}"); } if (is_file("/usr/sbin/mysqlmulti-stop{$instance_id}")) { @unlink("/usr/sbin/mysqlmulti-stop{$instance_id}"); } if (is_file("/etc/monit/conf.d/mysqlmulti{$instance_id}.monitrc")) { @unlink("/etc/monit/conf.d/mysqlmulti{$instance_id}.monitrc"); } $unix->THREAD_COMMAND_SET("/usr/share/artica-postfix/bin/artica-install --monit-check"); $rm = $unix->find_program("rm"); $kill = $unix->find_program("kill"); $php5 = $unix->LOCATE_PHP5_BIN(); $pid = $unix->get_pid_from_file($pidfile); writelogs_framework("{$pidfile} -> {$pid}", __FUNCTION__, __FILE__, __LINE__); if ($unix->process_exists($pid)) { $cmd = "{$kill} -9 {$pid}"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); shell_exec($cmd); } writelogs_framework("database path -> '{$database_path}'", __FUNCTION__, __FILE__, __LINE__); if (is_dir($database_path)) { $cmd = "{$rm} -rf \"{$database_path}\" 2>&1"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); shell_exec($cmd); } $cmd = "{$php5} /usr/share/artica-postfix/exec.mysql.build.php --multi"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); shell_exec($cmd); }
function mysql_events() { $instance_id = $_GET["instance-id"]; if (!is_numeric($instance_id)) { $instance_id = 0; } $file = "/var/run/mysqld/mysqld.err"; if ($instance_id > 0) { $ini = new iniFrameWork(); $ini->loadFile("/etc/mysql-multi.cnf"); $file = $ini->get("mysqld{$instance_id}", "log_error"); } $unix = new unix(); $tail = $unix->find_program("tail"); $results = array(); if ($instance_id == 0) { if (is_file("/var/lib/mysql/mysqld.err")) { $cmd = "{$tail} -n 300 /var/lib/mysql/mysqld.err 2>&1"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); exec($cmd, $results); } if (is_file("/var/run/mysqld/mysqld.err")) { $cmd = "{$tail} -n 300 /var/run/mysqld/mysqld.err 2>&1"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); exec($cmd, $results); } } else { if (is_file($file)) { $cmd = "{$tail} -n 300 /var/run/mysqld/mysqld.err 2>&1"; writelogs_framework("{$cmd}", __FUNCTION__, __FILE__, __LINE__); exec($cmd, $results); } } if (count($results) == 0) { $datas = base64_encode(serialize(array("{error_no_datas}"))); echo "<articadatascgi>{$datas}</articadatascgi>"; return; } $datas = base64_encode(serialize($results)); echo "<articadatascgi>{$datas}</articadatascgi>"; }
function multi_start($ID) { $q = new mysqlserver(); $GLOBALS["MULTI"] = true; $GLOBALS["SHOWLOGONLYFOR"] = $ID; multi_monit($ID); multi_create_cache(); $q->mysql_multi(); echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID}..\n"; $pidfile = "/var/run/mysqld/mysqld{$ID}.pid"; echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} PID:{$pidfile}..\n"; $unix = new unix(); if ($unix->process_exists($unix->get_pid_from_file($pidfile))) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} already running...\n"; return; } $chmod = $unix->find_program("chmod"); $ini = new iniFrameWork("/etc/mysql-multi.cnf"); $database_path = $ini->get("mysqld{$ID}", "datadir"); if (is_file("{$database_path}/error.log")) { @unlink("{$database_path}/error.log"); } echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} database={$database_path}\n"; $cmd = "{$chmod} 755 {$database_path}"; exec($cmd, $results); $mysqld_multi = $unix->find_program("mysqld_multi"); $cmd = "{$mysqld_multi} --defaults-file=/etc/mysql-multi.cnf start {$ID} --verbose --no-log 2>&1"; if (is_file("{$database_path}/maria_log_control")) { @unlink("{$database_path}/maria_log_control"); } if ($GLOBALS["VERBOSE"]) { echo "{$cmd}\n"; } exec($cmd, $results); while (list($index, $ligne) = each($results)) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$ligne}\n"; } for ($i = 0; $i < 4; $i++) { sleep(1); if ($unix->process_exists(multi_get_pid($ID))) { sleep(1); break; } } if (!$unix->process_exists(multi_get_pid($ID))) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} failed..\n"; } else { $q = new mysql_multi($ID); $q->QUERY_SQL_NO_BASE("create user 'mysqld_multi'@'127.0.0.1' identified by 'mysqld_multi'"); $q->QUERY_SQL_NO_BASE("create user 'mysqld_multi'@'localhost' identified by 'mysqld_multi'"); $q->QUERY_SQL_NO_BASE("create user 'grant shutdown on *.* to mysqld_multi'"); $q = new mysqlserver_multi($ID); $q->setssl(); } if (is_file("{$database_path}/error.log")) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$database_path}/error.log\n"; $f = explode("\n", @file_get_contents("{$database_path}/error.log")); while (list($index, $ligne) = each($f)) { if (trim($ligne) == null) { continue; } if (preg_match("#^[0-9]+\\s+[0-9\\:]+\\s+(.+)#", $ligne, $re)) { $ligne = $re[1]; } echo "Starting......: " . date("H:i:s") . " {$ligne}\n"; } } else { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$database_path}/error.log no such file\n"; } }