Add basic support for MySQL replication
This commit is contained in:
parent
a062e9cc58
commit
2a534798fa
|
@ -972,6 +972,14 @@ if (!defined("DRIVER")) {
|
|||
return get_key_vals("SHOW STATUS");
|
||||
}
|
||||
|
||||
/** Get replication status of master or slave
|
||||
* @param string
|
||||
* @return array ($name => $value)
|
||||
*/
|
||||
function replication_status($type) {
|
||||
return get_rows("SHOW $type STATUS");
|
||||
}
|
||||
|
||||
/** Convert field in select and edit
|
||||
* @param array one element from fields()
|
||||
* @return string
|
||||
|
|
|
@ -17,6 +17,7 @@ function connect_error() {
|
|||
'processlist' => lang('Process list'),
|
||||
'variables' => lang('Variables'),
|
||||
'status' => lang('Status'),
|
||||
'replication' => lang('Replication'),
|
||||
) as $key => $val) {
|
||||
if (support($key)) {
|
||||
echo "<a href='" . h(ME) . "$key='>$val</a>\n";
|
||||
|
@ -77,7 +78,7 @@ if (isset($_GET["import"])) {
|
|||
$_GET["sql"] = $_GET["import"];
|
||||
}
|
||||
|
||||
if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {
|
||||
if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["replication"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {
|
||||
if (DB != "" || $_GET["refresh"]) {
|
||||
restart_session();
|
||||
set_session("dbs", null);
|
||||
|
|
|
@ -65,6 +65,8 @@ if (isset($_GET["download"])) {
|
|||
include "./user.inc.php";
|
||||
} elseif (isset($_GET["processlist"])) {
|
||||
include "./processlist.inc.php";
|
||||
} elseif (isset($_GET["replication"])) {
|
||||
include "./replication.inc.php";
|
||||
} elseif (isset($_GET["select"])) {
|
||||
include "./select.inc.php";
|
||||
} elseif (isset($_GET["variables"])) {
|
||||
|
|
|
@ -45,6 +45,10 @@ $translations = array(
|
|||
'Variables' => 'Xx',
|
||||
'Status' => 'Xx',
|
||||
|
||||
'Replication' => 'Xx',
|
||||
'Master status' => 'Xx',
|
||||
'Slave status' => 'Xx',
|
||||
|
||||
'SQL command' => 'Xx',
|
||||
'%d query(s) executed OK.' => array('Xx.', 'Xx.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Xx.', 'Xx.'),
|
||||
|
|
26
adminer/replication.inc.php
Normal file
26
adminer/replication.inc.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
page_header(lang('Replication'));
|
||||
|
||||
echo "<p><b>" . lang('Master status') . "</b>" . doc_link(array("sql" => "show-master-status.html")) . "\n";
|
||||
$master_replication_status = replication_status("MASTER");
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($master_replication_status[0] as $key => $val) {
|
||||
echo "<tr>";
|
||||
echo "<th>" . h($key);
|
||||
echo "<td>" . nbsp($val);
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
$slave_replication_status = replication_status("SLAVE");
|
||||
if (!empty($slave_replication_status)) {
|
||||
echo "<p><b>" . lang('Slave status') . "</b>" . doc_link(array("sql" => "show-slave-status.html")) . "\n";
|
||||
foreach ($slave_replication_status as $slave) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($slave as $key => $val) {
|
||||
echo "<tr>";
|
||||
echo "<th>" . h($key);
|
||||
echo "<td>" . nbsp($val);
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ Adminer 4.2.6-dev:
|
|||
Add accessibility labels
|
||||
Make maxlength in edit fields a soft limit
|
||||
Add Cache-Control: immutable to static files
|
||||
MySQL: Add dedicated view for replication status
|
||||
PostgreSQL: Export
|
||||
PostgreSQL: Don't treat partial indexes as unique
|
||||
MS SQL: Support pdo_dblib
|
||||
|
|
|
@ -343,7 +343,7 @@ foreach (glob(dirname(__FILE__) . "/adminer/drivers/" . ($driver ? $driver : "*"
|
|||
|
||||
include dirname(__FILE__) . "/adminer/include/pdo.inc.php";
|
||||
include dirname(__FILE__) . "/adminer/include/driver.inc.php";
|
||||
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view");
|
||||
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "replication", "variables", "view");
|
||||
$lang_ids = array(); // global variable simplifies usage in a callback function
|
||||
$file = file_get_contents(dirname(__FILE__) . "/$project/index.php");
|
||||
if ($driver) {
|
||||
|
|
Loading…
Reference in a new issue