2014-07-07 2 views
0

Система клиент я использую это (192.168.YY.YY) и адрес бэкенда я упомянул в MySQL-прокси является (192.168.XX.XX) .I использование следующее LuaScript для входа запросов using mysql-proxyСохранение записанных запросов в тузде клиент

function read_query(packet) 
    b={} 
    j=1 
     if string.byte(packet) == proxy.COM_QUERY then 
     local query = string.sub(packet, 2) 
     table.insert(b,query) 
     print(b[j]) 
     end 
end 

И выше сценарий регистрирует следующие результаты из MySQL на бэкэнда сервера (192.168.XX.XX):

select @@version_comment limit 1 
SELECT DATABASE() 
select @@version_comment limit 1 
select USER() 
SELECT DATABASE() 
show tables 

И мне нужно сохранить эти зарегистрированные запросы в базу данных клиентской системы (192.168.YY.YY). Как записываемые запросы можно сохранить в базе данных клиентской системы. Некоторые из них, пожалуйста, помогите мне решить эту проблему вопрос. Спасибо!

+1

Поскольку b и j инициализируются пустым/1 при каждом запросе, печать работает, но b всегда имеет только одну запись. Кроме того, клиент делает запросы к mysql-proxy, который выполняет сценарий, а затем пересылает сервер бэкэнд-сервера mysql, тогда как ваши сообщения предлагают обратное, поэтому неясно, что вы пытаетесь сделать. Наконец, какой тип базы данных вы пытаетесь войти в систему и почему бы не использовать простой файл или даже SQLite DB в локальной системе (тот, что на машине, на которой запущен mysql proxy), и что самое главное, что вы пытались? – Schollii

+0

@Schollii Мне нужна база данных в клиентской системе (192.168.YY.YY) для входа в запросы. Я предпочитаю базу данных больше, чем файл, потому что ее легко получить данные в виде запроса из базы данных, а также несколько пользователей получают доступ к одной и той же базе данных в в то же время, поэтому в этом случае файл не работает. – robin

ответ

1

Я не знаю, как открыть db-соединение из прокси-сервера mysql, но вы могли бы легко создать отдельный сценарий Lua, который использует luasocket для прослушивания на udp-порту для журнальных сообщений, которые он записывает в файл, или прокси-сценарий записывает на этот порт, тогда нет риска одновременных запросов, вызывающих условия гонки для записи файла журнала. Один и тот же сценарий Lua мог прослушивать другой порт для команды, чтобы получить файл журнала. Или сделайте файл доступным через http. Вы даже можете добавлять сообщения журнала через сообщения HTTP-сообщения, тогда даже не требуется отдельный сценарий Lua для управления файлами журнала. Я не вижу необходимости в db.

Чтобы написать файл на клиентской машине, ваш скрипт будет использовать функцию io.open Lua и метод file:write. Прочитайте их. Как указано в начале моего ответа, и, как я думаю, вы намекнули в одном из своих комментариев, вам, возможно, придется согласовать запись в журнал, если одновременно возникают несколько запросов, но сначала вы должны попробовать простой подход, это может быть хорошо.

+0

Мне нужен только db, запись в файлы не помогает много. Если мы входим в запросы в файл, можно сохранить файл в клиентской системе (192.168.YY.YY), кроме сохранения в бэкэнд сервер ?? – robin

+0

@robin Да, хранение файла в клиентской системе на самом деле является самым простым. – Schollii

+0

Как я могу сохранить файл на клиентской системе? Может ли у вас немного объяснить это? – robin