Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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>";
}
Exemplo n.º 3
0
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";
    }
}