如何从主服务器find从服务器的IP地址和用户名?

我正在写一个代码,以提取在MySQL复制环境中的从服务器的IP地址和用户名。 有谁知道任何函数,variables,或者我可以在控制台上运行,并检索这些信息,而无需查看my.conf文件?

thansk

有一个有趣的方法来报告连接到主站的所有注册的从站。

该命令被称为SHOW SLAVE HOSTS;

这不会直接显示从站的IP,但是您可以configuration主站和从站以独特的方式进行。

使用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) 

如图所示
第一列是Slave的server-id
第2列是报告主机variables中指定的从属的名称(默认为空白)
第3列是连接到主站的从站端口号
第4列是从服务器的主服务器ID(从主服务器运行)

在版本MySQL 5.1和后面,默认情况下是这样的:

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

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

 report-host=MySQLSlave_10.1.2.3 

重启mysql,希望这个名字会在/etc/my.cnf中input
如果这些时期是不可接受的,就像这样做:

 report-host=MySQLSlave_10-1-2-3 

然后执行以下操作

  1. 显示奴隶主;
  2. 使用PHP爆炸函数 ,用下划线字符分隔,并采用数组的第二个元素
  3. 使用PHP函数str_replace ,用句点(。)replace短划线( – )

而WA LA,你有一个IP地址

在主服务器上:

 SELECT * FROM information_schema.PROCESSLIST AS p WHERE p.COMMAND = 'Binlog Dump'; 

这显示了所有连接的从站,他们的ipaddresses,用户,甚至连接了多长时间后,他们作为奴隶连接。

login到MySQL并执行SHOW FULL PROCESSLIST。 你会得到奴隶的IP地址。

我会尝试login到MySQL,看看全局variables:

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