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

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

thansk

4 ответа

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

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

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

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

Команда называется 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)

Как показано
столбец 1 - идентификатор сервера ведомого
столбец 2 - имя ведомого устройства, указанное в переменной report-host (по умолчанию пусто)
столбец 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";

Другие вопросы по тегам