Estoy buscando una solución similar al método de inotify para ver los archivos en busca de cambios. Soy consciente de que podía ver el archivo binlog de la base de datos mysql y ejecutar consultas para seleccionar los nuevos resultados, pero eso parece muy ineficiente y poco elegante; al igual que simplemente hacer una gran cantidad de consultas en un bucle en espera de nuevos resultados.¿Hay alguna manera de ver una base de datos mysql para cambios usando perl?
Respuesta
Si agrega un TRIGGER a la (s) tabla (s) que le interesan, puede usarlas para alertar a la aplicación de observación. Puede hacerlo de varias maneras:
- Cree una tabla de auditoría en la base de datos y haga que el desencadenador escriba allí la información relevante; y haz que tu aplicación de observación sondee la tabla de auditoría para nuevas entradas. Todavía está sondeando, pero de forma controlada, lo que no afectará demasiado al servidor.
- Tienen el gatillo call an external app a través de una UDF.
Eso es lo que [ya comenté hace 6 días] (http://stackoverflow.com/q/4418598#comment-4820725) como respuesta ya existente. Disfruta de tu generosidad – daxim
FWIW, agregué esta respuesta antes de haber notado su comentario (que hice upvote); y la primera de mis soluciones sugeridas es diferente a la tuya. Yo genuinamente no estaba plagiando. –
@daxim: si querías la recompensa, ¡deberías haber publicado tu comentario como respuesta! ;-) – Brad
En cuanto a las tablas MyISAM, puede ver information_schema.TABLES.UPDATE_TIME
. Eso le evitaría sondear todas las tablas que le interesan. Para InnoDB, ver bitlog es lo mejor que se me ocurre.
1 de INFORMATION_SCHEMA. TABLES.UPDATE_TIME – DVK
Otro enfoque es hacer un push/signal en lugar de una encuesta DB. Haga que cualquier proceso actualice la base de datos, notifique a su código Perl que se realizó una actualización a través de cualquier IPC que escoja (diablos, un archivo de registro adjunto con el nombre de la tabla que se está modificando podría hacer el truco lo suficientemente bien).
Esto es especialmente efectivo si las actualizaciones son bastante raras/de bajo volumen, pero el tiempo de reacción para ellas debe ser rápido.
Una ventaja adicional es la portabilidad: funciona para cualquier back-end MySQL o para cualquier otro motor DB.
Desafortunadamente, esta no es una opción, ya que la base de datos se actualiza mediante algún otro programa de terceros que estoy usando y el script de Perl que estoy escribiendo no actualiza la base de datos. – Drake
- 1. ¿Hay alguna forma de escuchar los cambios en una tabla de base de datos MySQL usando Java y JDBC?
- 2. ¿Hay alguna manera de ver cuánta memoria usa una variable?
- 3. ¿Hay alguna manera de aplicar una columna única usando doctrine2?
- 4. ¿Hay una tarea ANT para ver un directorio de cambios?
- 5. ¿Hay alguna manera de ver una consulta preparada, ya que se ejecutará en la base de datos?
- 6. ¿Hay alguna manera de precompilar una expresión regular en Perl?
- 7. Base de datos Wiki, ¿hay alguna?
- 8. ¿Hay alguna herramienta para ver las consultas ejecutadas en la base de datos?
- 9. ¿Hay alguna manera de copiar todos los datos en una base de datos mysql a otra? (phpmyadmin)
- 10. ¿Herramienta gratuita para ver la base de datos en busca de cambios?
- 11. ¿Cuál es una manera fácil de implementar cambios en la base de datos usando SQL Server?
- 12. ¿Hay alguna forma de ver el progreso de una instrucción ALTER TABLE en MySQL?
- 13. base de datos de cambios MySQL con valor de variable
- 14. ¿Hay alguna base de datos de intereses para descargar?
- 15. ¿Hay alguna manera de ver las consultas pasadas de mysql con phpmyadmin?
- 16. PHP: ¿hay alguna manera de ver caracteres "invisibles" como \ n
- 17. ¿Hay alguna manera de insertar un valor grande en una base de datos mysql sin cambiar max_allowed_packet?
- 18. ¿Hay alguna manera de efectuar tipos de datos definidos por el usuario en MySQL?
- 19. ¿Hay alguna manera en SQL Server de identificar de forma exclusiva una base de datos?
- 20. Java, MySQL: ¿Hay alguna manera de insertar un servidor MySQL con un programa Java?
- 21. ¿Hay alguna manera de ver los propios permisos svn?
- 22. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 23. Usar AJAX para ver la base de datos SQL para cambios
- 24. ¿Hay alguna forma de detectar MySQL y errores de base de datos en PHP?
- 25. Crear una nueva base de datos MySQL usando Workbench
- 26. ¿Hay alguna herramienta para generar una base de datos completa DDL para SQL Server? ¿Qué pasa con Postgres y MySQL?
- 27. ¿Hay alguna manera de anular ConfigurationManager.AppSettings?
- 28. ¿Hay alguna manera de obtener PartionKeys distintas de una Tabla
- 29. ¿Hay alguna manera de conservar los datos HSQLDB?
- 30. ¿Hay alguna manera de desactivar una etiqueta?
http://stackoverflow.com/questions/3501346/how-do-i-hook-into-an-event-triggered-once-a-mysql-query-is-true – daxim