sql >> Database >  >> RDS >> Mysql

Monitor MySQL-inserts van verschillende applicaties

Ik denk dat je zoiets vrij gemakkelijk zou kunnen bereiken, ervan uitgaande dat je het niet erg vindt om wat extra tabellen en triggers in je database te maken, en dat de monitoring java-applicatie de database zou moeten pollen in plaats van specifiek triggers te ontvangen.

Ervan uitgaande dat de tabel die u wilt bewaken er ongeveer zo uitziet:

CREATE TABLE ToMonitor ( id INTEGER PRIMARY KEY, value TEXT );

Vervolgens maakt u een tabel om de wijzigingen bij te houden, en een trigger die die tabel vult:

CREATE TABLE InsertedRecords( value TEXT );
CREATE TRIGGER trig AFTER INSERT ON account
FOR EACH ROW INSERT INTO InsertedRecords( value ) VALUES ( NEW.value );

Hierdoor wordt de tabel InsertedRecords gevuld met elke invoeging die in ToMonitor plaatsvindt.

Dan hoeft u alleen uw monitoring-app zo in te stellen dat periodiek SELECT * from InsertedRecords , onderneem de juiste actie en verwijder vervolgens de records uit InsertedRecords

EDIT:Een klein alternatief, als je een beetje C/C++-codering niet erg vindt, zou zijn om volg de instructies hier om een ​​aangepaste SQL-functie te maken die uw monitoringtoepassing in actie heeft gebracht, en roep vervolgens die SQL-functie aan vanuit de trigger die u had gemaakt.



  1. SQL Server BCP export beschadigd bestand?

  2. Is er een PostgreSQL-equivalent van SQL Server-profiler?

  3. Meerdere query's uitgevoerd in Java in één instructie

  4. Een nieuwe MySQL-database maken met go-sql-driver