如何从主服务器上找到从机的 IP 地址和用户名?

Kou*_*mia 9 mysql replication master-slave master

我正在编写代码来提取 MySQL 复制环境中所有从服务器的 IP 地址和用户名。

有谁知道我可以在控制台中运行并在不查看my.cnf文件的情况下检索这些信息的任何函数、变量或其他东西?

小智 17

在主服务器上:

SELECT * FROM information_schema.PROCESSLIST AS p WHERE p.COMMAND = 'Binlog Dump';
Run Code Online (Sandbox Code Playgroud)

这会显示所有已连接的从站、它们的 IP 地址、用户,甚至自上次作为从站连接以来已经连接了多长时间。


Rol*_*DBA 8

有一种有趣的方法可以报告所有已注册的从站连接到主站。

该命令称为SHOW SLAVE HOSTS;

这不会直接显示从站的 IP,但您可以以独特的方式配置主站和从站。

使用 MySQL 5.5,只需运行 SHOW SLAVE HOSTS;你会得到这样的东西:

MySQL> show slave hosts;
+-----------+------+------+-----------+
| Server_id | Host | Port | Master_id |
+-----------+------+------+-----------+
| 106451148 |      | 3306 | 106451130 |
+-----------+------+------+-----------+
1 row in set (0.00 sec)

MySQL> show variables like 'server_id';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| server_id     | 106451130 |
+---------------+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

如图所示,第
1 列是 Slave 的服务器 ID 第
2 列是报告主机变量中指定的 Slave 名称(默认为空) 第
3 列是 Slave 连接到主
服务器的端口号 第4 列是 Slave 的主服务器 ID(运行此来自大师)

在 MySQL 5.1 及之后的版本中,默认情况下你会得到这个:

MySQL> show slave hosts;
Empty set (0.01 sec)

MySQL>
Run Code Online (Sandbox Code Playgroud)

您可以通过将其添加到从站的 /etc/my.cnf 来为每个从站分配一个主机名

report-host=MySQLSlave_10.1.2.3
Run Code Online (Sandbox Code Playgroud)

重启MySQL,并希望该名称将显示为您键入它的/etc/my.cnf
如果时间是不能接受的,让他们飞奔这样的:

report-host=MySQLSlave_10-1-2-3
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作

  1. 显示从主机;
  2. 使用PHPexplode函数,下划线分隔,取数组的第二个元素
  3. 使用PHP 函数 str_replace,将破折号 (-) 替换为句点 (.)

和 WA LA,你有一个 IP 地址


dre*_*ard -2

我尝试登录 mysql 并查看全局变量:

mysql -u [dbuser] -p -e "show global variables";