Задать вопрос

Как поймать определенный запрос в MySql?

Привет Коллеги!

Подскажите как решить следующую проблему.
Имеется множество серверов и большая база с таблицами. Происходит insert в определенную таблицу и не получается поймать с какого именно ip осуществляется запрос. Использованный зацикленный скрипт на bash с запросом не дал результатов:

#!/bin/bash

c=1
while [ "$c" ]
do
sleep 6
mysql -e "show processlist;" | grep 'insert into nametable' >> nametable.log
done


Порекомендовали запустить и настроить MySql-Proxy. Какие еще есть варианты?
  • Вопрос задан
  • 508 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@mishania666
Сделать триггер на таблице на, например, BEFORE INSERT, записывать данные в другую таблицу, адрес хоста, запустившего запрос можно узнать так:
SELECT substring_index(host,':',1) ip 
FROM information_schema.processlist 
WHERE id = connection_id();
Ответ написан
Комментировать
@champloootaku
2 варианта.

1. mytop(аналог show full processlist;)

Если запрос очень быстро обрабатывается, можно включать перед запросом:
mysql -p
SET global general_log = 1;
###выполняем запрос###
SET global general_log = 0;


Потом смотрим где у вас general log.
Например /var/lib/mysql/server.log
или может оказаться /var/log/mysql.log

Удачи! :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы