cola -f equivalente para la base de datos de registro de MySQL


12

Se decidió que deberíamos usar una base de datos (MySQL) para los registros de nuestras aplicaciones (es una aplicación Java que utiliza la lib de inicio de sesión). Espero encontrar algo así tail -fque pueda usar con una tabla específica en esa base de datos que me muestre nuevas filas a medida que se agregan (similar a cómo tail -ffuncionó en los archivos de registro).

Respuestas:


5

Active el registro binario de MySQL. Luego puede usar el mysqlbinlogcomando para ver todas las declaraciones de modificación de datos.


¿Puedes mostrar un ejemplo de cómo hacerlo en el idioma que elijas o con bash?
Alexander Mills

7

No creo que algunas personas entiendan la pregunta (o yo no). No desea registrar las consultas en la base de datos; más bien un registro de una aplicación va a una base de datos. Si se tratara de un archivo, podría seguir el registro. ¿Cómo se ajusta una tabla para que, cuando se agregue una nueva fila, salga?

No debería ser difícil escribir un bucle simple para manejar esto, suponiendo que tenga un campo único que aumenta monotónicamente con el tiempo (por ejemplo, un número de secuencia).

current_pos = select max(seq) from table
while true
  new_pos = select max(seq) from table
  if new_pos > current_pos
    select * from table where seq > current_pos
    current_pos = new_pos
  endif
  sleep 1
endwhile

esto se llama sondeo y no es tan divertido :) pero supongo que es una buena técnica, si debe usar el sondeo.
Alexander Mills


2

Esto es lo que uso. Parece la solución más simple, aunque no es muy eficiente:

watch "mysql db_name -e '(SELECT * FROM my_table ORDER BY id DESC LIMIT 10) ORDER BY id ASC;'"


1

Puede hacerlo de una manera hacky usando cola -f en el archivo de base de datos (/var/lib/mysql/database_name/table_name.MY*) y luego ejecutando su consulta cada vez que se lee una línea.


1

Sugiero agregar un campo de marca de tiempo a cualquier tabla que desee seguir. Eso le permitirá obtener los resultados deseados muy fácilmente con una simple consulta.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.