Есть ли полный комплект документации для сценариев mysql-proxy lua? - PullRequest
6 голосов
/ 07 марта 2011

Я играю со скриптами для mysql-прокси.То, что я пытаюсь достичь, не имеет значения.Однако я обнаружил, что некоторые элементы интерфейса lua, по-видимому, недокументированы.У меня есть большой «дымящийся пистолет» - крючок disconnect_client().Я не могу найти его где-либо в официальной документации , хотя он используется в примере с объяснением интерфейса администратора .Он также широко используется в примерах документов.Быстрый grep показывает его использование в следующих сценариях, включенных в дистрибутив 5.5.8:

active-query.lua
active-Transactions.lua
load-multi.lua
ro-pooling.lua
rw-splitting.lua
tutorial-keepalive.lua

Мой другой пример, который попался на глаза, - это список атрибутов для записей в таблице proxy.global.backends.В документации перечислены следующие атрибуты:

dst.name
dst.address
dst.port
connected_clients
state
type

Однако некоторые примеры сценариев ссылаются на довольно сложный элемент, называемый пулом.Возьмем, к примеру, tutorial-keepalive.lua:

local s = proxy.global.backends[i]
local pool     = s.pool
local cur_idle = pool.users[proxy.connection.client.username].cur_idle_connections

Сначала я подумал, что он был добавлен где-то еще в lua, но я посмотрел и не могу найти код, присваивающий proxy.global.backends[i] .pool.

Итак, я полагаю, два вопроса:

  1. Я чокнутый?Пожалуйста, не стесняйтесь демонстрировать, как я упустил очевидное, и документация действительно довольно ясна.
  2. Если я прав, есть ли где-нибудь найти полную документацию?Хорошая ссылка была бы отличной (хотя я не смог бы ее найти), но даже «взгляните на этот файл .c из дистрибутива mysql-proxy, который определяет интерфейс».По крайней мере, это дало бы мне что-то, на что тыкал.

Спасибо

1 Ответ

1 голос
/ 22 июня 2012

Только что открыл Прокси / Луа сам. Боюсь, что, как и во всем Mysql, как только вы окунетесь под одеяло, вы окажетесь сами по себе. То же самое касается LUA. Вам понадобятся другие дополнения к LUA, чтобы делать то, что вы хотите, я хотел бы предложить: http://peterodding.com/code/lua/apr/docs/#shared_memory для привязки библиотеки Apache Protable ... сэкономил мне время. Что касается внутренних компонентов MySql, вам, вероятно, придется заглянуть в исходные файлы C, к сожалению, поскольку мы здесь на неизведанной территории.

Одна вещь, которую я обнаружил, состоит в том, что структуры LUA в Mysql - это не таблицы Lua, а "пользовательские данные" Lua. Это означает, что они эффективно разделяют память, поэтому Lua не может их изменить, поскольку Mysql использует их тоже. Я собираюсь попробовать библиотеку luaposix, чтобы посмотреть, смогу ли я получить к ним доступ, поскольку есть элементы, которые я хотел бы изменить, если это возможно.

Удачи

peter.colclough@toolstation.com

...