Назад | Перейти на главную страницу

Как узнать IP-адрес и имя пользователя ведомого на главном сервере?

Я пишу код для извлечения IP-адреса и имени пользователя всех подчиненных серверов в среде репликации MySQL.

Кто-нибудь знает какую-либо функцию, переменную или что-то еще, что я могу запустить в консоли и получить эту информацию, не глядя в my.cnf файл?

На главном сервере:

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

Это показывает все подключенные ведомые устройства, их IP-адреса, пользователя и даже время, в течение которого они были подключены с момента последнего подключения в качестве ведомых.

Есть интересный способ сообщить обо всех зарегистрированных подчиненных устройствах, подключенных к мастеру.

Команда называется ПОКАЗАТЬ РАБОЧИЕ ХОЗЯЙКИ;

Это не будет напрямую отображать 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)

Как показано
столбец 1 - это идентификатор ведомого сервера
столбец 2 - имя ведомого устройства, как указано в переменной хоста отчета (по умолчанию пусто)
столбец 3 - номер порта ведомого устройства, подключенного к ведущему
столбец 4 - это идентификатор главного сервера подчиненного (запустите его с главного сервера)

В версиях 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
Если точки недопустимы, сделайте их тире следующим образом:

report-host=MySQLSlave_10-1-2-3

Затем сделайте следующее

  1. ПОКАЗАТЬ РАБОЧИЕ ХОЗЯЙКИ;
  2. Использовать Функция взрыва PHP, ограничивая символом подчеркивания, и берем второй элемент массива
  3. Использовать Функция PHP str_replace, заменив тире (-) точкой (.)

И WA LA, у вас есть IP-адрес

Войдите в mysql и выполните SHOW FULL PROCESSLIST. Вы получите IP-адреса подчиненных.

Я бы попробовал войти в mysql и посмотреть на глобальные переменные:

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