Portál AbcLinuxu, 8. května 2025 08:25

Dotaz: Hlídání zápisů do Mysql

7.1.2015 08:58 Fibi86 | skóre: 1
Hlídání zápisů do Mysql
Přečteno: 628×
Odpovědět | Admin
Zdravím všechny Mysql guru profíky. Řeším problém s hlídáním zápisů do mysql databáze. Každých 5 sekund mi pravidelně chodí do mysql databáze jeden zápis do různých tabulek a já bych potřeboval, v případě přerušení příchozích dat po stanoveném čase spustit nejlépe nějaký php skript, který mne na to upozorní a případně provede zápis do tabulky logů. Díky za každý nápad či nakopnutí. Fibi
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.1.2015 09:10 DarkKnight | skóre: 26
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bohuzel UPDATE_TIME v information_schema je pro InnoDB az v MySQL 5.7, takze to by slo pouzit pouze v pripade, ze pouzivate MyISAM.
SELECT UPDATE_TIME FROM information_schema.tables WHERE TABLE_SCHEMA = 'databaze' and TABLE_NAME = 'tabulka';

Pokud nelze upravit syntaxi tabulky (pridat novy sloupec, ktery by automaticky obsahoval aktualni datum), tak jako druha moznost me napada trigger na insert, ktery by zaznamenaval aktualni cas do extra tabulky (a php skript by kontrolovat, zda ten cas neni moc vzdaleny).

Treti moznost by bylo kontrolovat, zda se nezmenil soubor na disku, ve kterem jsou ulozena data, ale to je celkem prasarna.
8.1.2015 13:17 Ivan Nový
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Tak z toho triggeru může do toho logu potřebné údaje zapsat rovnou, a php skript bude pracovat už jen s tím logem, přerušovat proud údajů není potřeba, když si v tom logu zavede pole, které bude znamenat, že příslušný záznam prošel zpracováním
rADOn avatar 8.1.2015 19:26 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud chces hlidat nejaky konkretni data tak mi prijde jako hloupost detekovat to jako "nejaky" zapis do db. Proste si napis select ktery zkontroluje presne to co potrebujes a periodcky ho spoustej. Neco ve stylu SELECT unix_timestamp(now()) - unix_timestamp(created) > 5 FROM … ORDER BY created DESC LIMIT 1 , kdyz to vrati 1 tak hlidaci skript muze spustit bengal… Teoreticky muzes dat vic takovych dotazu do unionu a nad to dat sumu a tak zkontrolovat vic tabuli naraz, ale prakticky asi zjistis ze je lepsi to brat po jedny aby hlidaci skript mohl presne rici kde to vazne.

Samotny hlidaci skript je trivialni, dokonce i kdyz si chces pridelavat praci phpckem :-p Akorat bacha na to at si to neutluces kdyby ten hlidaci dotaz byl nejak neoptimalni ale to by pri jednom zapisu za pet sekund nemel byt problem.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
8.1.2015 20:02 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš po každém zápisu spustit časovač MySQL třeba na 6 sekund. Po uplynutí nastaveného intervalu zkontroluješ časové razítko posledního záznamu. Pokud mezitím nepřišel novější záznam, zaloguješ chybu a vyšleš signál.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
9.1.2015 08:51 Fibi86 | skóre: 1
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky za nakopnutí. S těmito informacemi už se nějak popereme. Časové razítko tam je a tudíž bude možná nejlepší skriptem kontrolovat vzdálený poslední čas v tabulce od aktuálního ;) Díky za váš time :) Fibi
rADOn avatar 9.1.2015 15:12 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Tak hlavne opatrne pacz ted koukam ze jsem to napsal presnetak jak se to psat nema – bez indexu nad casovym razitkem to bude fullscan.

BTW ted jsem neco resil a v information_schema.tables jsem ted zahledl 'update_time' coz uz neni tak hruby jako hlidat celou db naraz. I kdyz jit primo po datech je porad nejlepsi tak na jednodussi veci by se to asi pouzit dalo. Jestli to teda dela co nazev naznacuje, ale to uz si musis vykoumat…
"2^24 comments ought to be enough for anyone" -- CmdrTaco
11.1.2015 23:18 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Hlídání zápisů do Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
V některých případech by se mohl hodit Mariadb plugin:

https://mariadb.com/kb/en/mariadb/documentation/plugins/mariadb-audit-plugin/about-the-mariadb-audit-plugin/

-- OldFrog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.