Ecco uno script che farebbe ciò che si desidera per mysql-proxy (controllare il collegamento sui documenti ufficiali su come installare il proxy).
Per collegarvi in realtà le query è possibile utilizzare qualcosa di semplice come
function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
function read_query(packet)
if string.byte(packet) == proxy.COM_QUERY then
local query = string.lower(string.sub(packet, 2))
if string.starts(query, "alter") or string.starts(query, "create") then
-- give your logfile a name, absolute path worked for me
local log_file = '/var/log/mysql-proxy-ddl.log'
local fh = io.open(log_file, "a+")
fh:write(string.format("%s %6d -- %s \n",
os.date('%Y-%m-%d %H:%M:%S'),
proxy.connection.server["thread_id"],
query))
fh:flush()
end
end
end
La sceneggiatura è stata adottata da here, ricerca per 'semplice la registrazione'.
Questo non interessa i risultati - anche se la query ha restituito un errore, verrebbe registrato (vi è un esempio di "registrazione più personalizzata", che è un candidato migliore per la registrazione di produzione).
Inoltre, è possibile adottare un altro approccio se è applicabile per l'utente: definire utenti diversi nel database e assegnare i diritti DDL solo a un determinato utente, quindi è possibile registrare tutto per quell'utente e non si deve preoccupare sui dettagli (ad esempio - delega riconosce il seguente server commands, di cui si ispeziona solo Query)
Installazione del Proxy è dritto in avanti, quando si prova è possibile eseguire con
mysql-proxy --proxy-lua-script=/path/to/script.lua
funziona su porta 4040 di default quindi testalo con
mysql -u user -p -h 127.0.0.1 -P 4040
(assicurarsi di non bypassare il proxy; per esempio sulla mia distro mysql -u user -p -h localhost -P 4040
ho completamente ignorato la porta e collegato tramite socket, che mi ha lasciato perplesso per alcuni minuti)
Stai provando a sincronizzare tutte le modifiche? La replica potrebbe essere la risposta? –
No. I database contengono dati diversi, voglio solo mantenere sincronizzate le strutture delle tabelle. – pako
Puoi confermare che sei interessato a registrare * solo * query phpMyAdmin? Se sì (e potrebbe essere il modo di procedere perché in questo modo puoi evitare di registrare le query normali), dai un'occhiata alla risposta di Jarod e mia. – Unreason