Как регистрировать ошибки SQL и предупреждения с помощью Lua-скрипта на mysql-proxy

0

В целях отладки я хочу регистрировать ошибки SQL и предупреждения, возвращаемые MySQL, и соответствующие запросы на уровне сервера.

Я нашел два полезных сценария Lua:

https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua https://github.com/patrickallaert/MySQL-Proxy-scripts-for-devs (debug.lua)

которые позволяют регистрировать ошибки с помощью MySQL Proxy. Но я все еще ищу способ регистрации предупреждений. Я не уверен в mysql-proxy LUA-scripting. Может ли кто-нибудь указать мне, как это сделать?

Этот вопрос: Предупреждения журнала в таблицу, кажется, близко, но, к сожалению, предоставленная ссылка мертва, и я не могу найти контент.

Теги:
lua
mysql-proxy

2 ответа

2
Лучший ответ

Наконец, я изучил предмет в изучении литературы и разработал Lua script, который мне подходит.

Я упоминал сначала script (https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua), но:

  • Он регистрирует ошибки, а не предупреждения. Первоначально он управляет "флагом ошибки", которому присваивается значение "Истина", если запрос клиента возвращает ошибку. Я изменил это, чтобы регистрировать каждый запрос, для которого SHOW WARNINGS возвращает что-то (Ошибки, Предупреждения или Заметки).

  • Он вставил строки ошибок в таблицу. Это может быть приятно, но может быть довольно запутанным для клиента, поскольку вставка строки журнала очищает сообщения, отображаемые запросом "показать предупреждения". Вероятно, есть способ исправить это, открыв новый сеанс или связь... но я решил записать события в простой текстовый файл. Во-вторых, запрос вставки в исходном script может генерировать синтаксическую ошибку из-за простых кавычек ', возможно, содержащихся в сообщении об ошибке или исходном запросе.

Существует точка, в которой мы должны быть осторожны при регистрации всех предупреждений: все запросы не очищают очередь предупреждений/заметок. Таким образом, SHOW WARNINGS может возвращать набор результатов, сгенерированный предыдущим запросом, после запроса, не вызывающего предупреждения. Чтобы исправить это, я использую грязный метод: после обнаружения запроса я вставляю плохой запрос, для которого я знаю, что он будет генерировать сообщение об ошибке; после чего я игнорирую это сообщение об ошибке. Это способ "очистить" предупреждения и заметки...

0

Вы можете загрузить этот script и указать при настройке MySQL-прокси. Параметры командной строки перечислены здесь: MySQL-proxy-configuration

Типичная конфигурация MySQL-прокси будет выглядеть так:

$mysql-proxy --proxy-backend-addresses = 192.168.x.x: 3305 --proxy-address = 192.168.y.y: 4045 --proxy-lua- script= mysql-proxy-log-error-queries.lua

Возможно, вам придется изменить этот script для подключения к MySQL-прокси.

  • 0
    Спасибо, но я уже знал, как запустить mysql-proxy. Мой вопрос заключался в том, как регистрировать предупреждения в скрипте Lua.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню