Как узнать 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
Затем сделайте следующее
- ПОКАЗЫВАЙТЕ РАВНЫХ ХОСТОВ;
- Используйте функцию разнесения PHP, разделив ее символом подчеркивания, и возьмите второй элемент массива.
- Используйте функцию PHP str_replace, заменив дефис (-) на точку (.)
И WA LA, у вас есть IP-адрес
Войдите в mysql и выполните SHOW FULL PROCESSLIST. Вы получите ведомые IP-адреса.
Я бы попробовал войти в MySQL и посмотреть на глобальные переменные:
mysql -u [dbuser] -p -e "show global variables";