} else { PMA_replication_slave_control($GLOBALS['sr_slave_action'], $GLOBALS['sr_slave_control_parm']); } $refresh = true; } elseif (isset($GLOBALS['sr_slave_skip_error'])) { $count = 1; if (isset($GLOBALS['sr_skip_errors_count'])) { $count = $GLOBALS['sr_skip_errors_count'] * 1; } PMA_replication_slave_control("STOP"); PMA_DBI_try_query("SET GLOBAL SQL_SLAVE_SKIP_COUNTER = " . $count . ";"); PMA_replication_slave_control("START"); } elseif (isset($GLOBALS['sl_sync'])) { // TODO username, host and port could be read from 'show slave status', // when asked for a password this might work in more situations then just after changing master (where the master password is stored in session) $src_link = PMA_replication_connect_to_master($_SESSION['replication']['m_username'], $_SESSION['replication']['m_password'], $_SESSION['replication']['m_hostname'], $_SESSION['replication']['m_port']); $trg_link = null; // using null to indicate the current PMA server //Todo //$data = PMA_DBI_fetch_result('SHOW MASTER STATUS', null, null, $src_link); // let's find out, which databases are replicated $do_db = array(); $ignore_db = array(); $dblist = array(); if (!empty($data[0]['Binlog_Do_DB'])) { $do_db = explode(',', $data[0]['Binlog_Do_DB']); } if (!empty($data[0]['Binlog_Ignore_DB'])) { $ignore_db = explode(',', $data[0]['Binlog_Ignore_DB']); } $tmp_alldbs = PMA_DBI_query('SHOW DATABASES;', $src_link); while ($tmp_row = PMA_DBI_fetch_row($tmp_alldbs)) {
} /** * Handling control requests */ if (isset($GLOBALS['sr_take_action'])) { $refresh = false; if (isset($GLOBALS['slave_changemaster'])) { $_SESSION['replication']['m_username'] = $sr['username'] = PMA_Util::sqlAddSlashes($GLOBALS['username']); $_SESSION['replication']['m_password'] = $sr['pma_pw'] = PMA_Util::sqlAddSlashes($GLOBALS['pma_pw']); $_SESSION['replication']['m_hostname'] = $sr['hostname'] = PMA_Util::sqlAddSlashes($GLOBALS['hostname']); $_SESSION['replication']['m_port'] = $sr['port'] = PMA_Util::sqlAddSlashes($GLOBALS['port']); $_SESSION['replication']['m_correct'] = ''; $_SESSION['replication']['sr_action_status'] = 'error'; $_SESSION['replication']['sr_action_info'] = __('Unknown error'); // Attempt to connect to the new master server $link_to_master = PMA_replication_connect_to_master($sr['username'], $sr['pma_pw'], $sr['hostname'], $sr['port']); if (!$link_to_master) { $_SESSION['replication']['sr_action_status'] = 'error'; $_SESSION['replication']['sr_action_info'] = sprintf(__('Unable to connect to master %s.'), htmlspecialchars($sr['hostname'])); } else { // Read the current master position $position = PMA_replication_slave_bin_log_master($link_to_master); if (empty($position)) { $_SESSION['replication']['sr_action_status'] = 'error'; $_SESSION['replication']['sr_action_info'] = __('Unable to read master log position. Possible privilege problem on master.'); } else { $_SESSION['replication']['m_correct'] = true; if (!PMA_replication_slave_change_master($sr['username'], $sr['pma_pw'], $sr['hostname'], $sr['port'], $position, true, false)) { $_SESSION['replication']['sr_action_status'] = 'error'; $_SESSION['replication']['sr_action_info'] = __('Unable to change master'); } else {