Aquí hay una secuencia de comandos que haría lo que desee para mysql-proxy (consulte el enlace en los documentos oficiales sobre cómo instalar el proxy).
Para registrar el hecho consultas que puede utilizar algo tan simple como
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
El guión fue adoptado de here, la búsqueda para 'registro simple'.
Esto no se preocupa por los resultados, incluso si la consulta devolviera un error, sería registrada (hay un ejemplo de 'registro más personalizado', que es un mejor candidato para el registro de producción).
Además, puede tomar otro enfoque si es aplicable para usted: defina diferentes usuarios en su base de datos y otorgue derechos DDL solo a un determinado usuario; luego, puede registrar todo para ese usuario y no tiene que preocuparse acerca de los detalles (por ejemplo - de proxy reconoce la siguiente server commands, de los cuales se inspecciona única consulta)
Instalación del proxy es sencillo, cuando lo prueba se puede ejecutar con
mysql-proxy --proxy-lua-script=/path/to/script.lua
se ejecuta en puerto 4040 por defecto, así que pruébelo con
mysql -u user -p -h 127.0.0.1 -P 4040
(asegúrese de no omitir el proxy; por ejemplo, en mi distro mysql -u user -p -h localhost -P 4040
ignoré por completo el puerto y conecté el conector, lo que me dejó perplejo durante unos minutos)
¿Está intentando sincronizar todos los cambios? La replicación puede ser la respuesta? –
No. Las bases de datos contienen datos diferentes, solo quiero mantener las estructuras de las tablas sincronizadas. – pako
¿Puede confirmar que está interesado en registrar * solo * consultas de phpMyAdmin? Si es así (y podría ser el camino a seguir porque de esa manera puede evitar registrar consultas normales), eche un vistazo a la respuesta de Jarod y la mía. – Unreason