-- SlavomirStrharsky - 25 Mar 2007
Systém pozostáva z:
1. atribútov (veličiny charakterizujúce určitý prvok systému)
2. udalostí (zmena atribútu alebo zmena konfigurácie systému - napríklad komponenty)
3. časových množín (hodnoty vzťahujúce sa k určitému okamihu).
Systémy všeobecne delíme na tvrdé a mäkké. Tvrdé systémy sú spojené s jedným špecifickým (štrukturovaným) problémom (väčšinou technické systémy), naopak v mäkkých systémoch vystupuje celá rada faktorov, sú všeobecnejšie (človek je aktívnym prvkom systému=individualita - problém pretože každý má iné znalosti a inak uvažuje).
Internet/intranet poskytuje skvelú platformu pre IS. Dnešné technológie zahrňujú napríklad:
ASP/.NET - platforma Windows (existuje taktiež multiplatformná implementácia Mono)
Java2EE - špičková platforma vyvinutá firmou Sun (technológia napr.: JSP, JSF nebo Struts)
PHP - multiplatformný skriptovací jazyk
XML - Extensible Markup Language, hraje podstatnú úlohu v dnešných IS, predovšetkým vo výmene dát.
Log je názov pre záznam alebo súbor záznamov (často súbory s príponou .log), ktoré si niektoré programy vytvárajú pre ukladanie informácií o svojej činnosti a behu. Logy slúžia pri spätnej analýze k rozpoznávaniu, či došlo k nejakej chybe a ak áno, tak pomáhajú určiť, k akej chybe došlo a prečo. Môžu tiež obsahovať informácie o tom, ako a kým bola daná aplikácia či služba využívaná (napríklad z akej IP adresy bolo pristupované k WWW serveru).
Niektoré programy umožňujú logovanie vypnúť, zapnúť alebo nastaviť jeho úroveň, tzn. určiť, koľko a ktoré detailné informácie sa do logov majú ukladať.
Typickým príkladom je web server log, ktorý obsahuje históriu požadovaných stránok. W3C zachováva štandardný formát pre web server log súbory, ale existujú aj iné vhodné formáty. Nové záznamy sa pridávajú na koniec súboru. Štandardne sa zapisujú informácie o požiadavke, klientova IP adresa, dátum/čas, požadovaná stránka, HTTP kód, poskytnuté bajty, používateľov agent. Tieto dáta môžu byť skombinované do jedného súboru, alebo separované do osobitných logov, napríklad access log, error log, alebo referrer log. Server logy však obyčajne nezbierajú informácie viazané na užívateľa.
Tieto súbory obyčajne nie sú verejne prístupné užívateľom na Internete, iba webmasterom alebo iným administratívnym osobám. Štatistická analýza server logov môže byť použitá na preverovanie traffic patterns podľa času, dňa, referrera (odkaz na požadovateľa), alebo užívateľovho agenta. Efektívna administrácia webovej stránky, adekvátny hosting a vyladenie - tuning výkonnosti predaja môžu byť ošetrené práve pri analýze web server logov. Marketingové oddelenia organizácií, ktoré vlastnia webové stránky by mali byť školené na používanie týchto nástrojov.
mysqld
:
Typ logu | Informácie zapísané do logu |
---|---|
error log | Problémy so štartovaním, behom alebo zastavením mysqld |
general query log | Spojenia zriadené klientom a príkazy prijaté od klienta |
binary log | Všetky príkazy, ktoré menia dáta (taktiež používané na odpovedanie) |
slow query log | Všetky požiadavky, ktoré požadujú na ich vykonanie viac času ako long_query_time alebo, ktoré nepoužili indexy |
Defaultne sú všetky log súbory vytvorené v dátovom adresári mysqld. Pomocou mysqld môžeme zatvoriť a otvoriť log súbory (alebo v niektorých prípadoch prepnúť na nový log) mazaním logov. Mazanie logov dosiahneme pri zadaní príkazu FLUSH LOGS alebo vykonáme mysqladmin flush-logs alebo mysqladmin refresh. Ak používate MySQL? replikačné schopnosti, tak podradené replikačné servery sa starajú o ďalšie log súbory nazvané relay logy.
mysqld
bolo zapnuté, vypnuté a tiež všetky kritické chyby, ktoré sa vyskytli počas behu servera. Ak mysqld
zaznamená tabuľku, ktorá potrebuje byť automaticky kontrolovaná alebo opravovaná, napíše správu do error logu.
Na niektorých operačných systémoch error log obsahuje stack trace v prípade zlyhania mysqld
. Stopa môže byť použitá na zistenie kde mysqld
ukončilo svoju činnosť.
Keď sa mysqld_safe
použije na naštartovanie mysqld
a mysqld
neočakávane skončí, tak mysqld_safe
zaznamená, že potrebuje reštartovať mysqld
a napíše o tom správu do error log.
Môžeme si špecifikovať kam má mysqld
ukladať error log súbor s voľbou --log-error[=file_name]
. Ak nie je zadaný žiaden názov súboru mysqld
použije názov host_name.err
a súbor zapíše do dátového adresára. Ak zadáme FLUSH LOGS
, error log sa premenuje s príponou -old
a mysqld
vytvorí nový prázdny log súbor.
(Ak možnosť --log-error
nie je daná, nevyskytne sa žiadne premenovávanie)
Ak nešpecifikujeme --log-error
, alebo (vo Windows) ak použijeme voľbu --console
, chyby sú zapísané do stderr
- štandardný chybový výstup. Obyčajne je to váš terminál.
Vo Windowse je chybový výstup vždy zapísaný do .err súboru ak --console
nie je daná.
Voľba --log-warnings
alebo systémová premenná log_warnings
sa môže použiť ma riadenie varovných logov do error logu. Defaultná hodnota je enabled (1). Varovné logovanie môže byť zakázané použitím hodnoty 0. Zrušené spojenia nie sú logované do error log iba ak je hodnota väčšia ako 1.
mysqld
. Server zapíše informácie do tohto logu, ak sa klient pripojí alebo odpojí, a tiež loguje každý SQL príkaz od klienta. General query log dokáže byť veľmi užitočný ak je podozrenie, že chyba je na klienotvi a chceme vedieť čo presne klient poslal mysqld
.
mysqld
zapíše príkazy do query log v poradí, v akom ich obdržal, čo sa môže líšiť od poradia, v akom sa vykonávali. Takéto logovanie je v kontraste s binary log, v ktorom sa príkazy zapisujú potom ,ako sa vykonali, avšak predtým ako sa odstránil nejaký zámok(lock). (Query log obsahuje všetky príkazy, zatiaľ čo binary log neobsahuje príkazy, ktoré iba selektujú dáta.)
Pre zapnutie general query log, spustite mysqld
s voľbou --log[=file_name]
alebo -l [file_name]
.
Ak nie je zadané meno súboru pre --log alebo -l, defaultne meno je host_name.log
v dátovom adresári.
Server sa reštartuje ale vymazanie logov nezapríčiní vygenerovanie nového general query log súboru (vymazanie logov ho zatvorí a naspäť otvorí). V Unixe môžete súbor premenovať a vytvoriť nový použitím nasledujúcich príkazov:
shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> cp host_name-old.log backup-directory
shell> rm host_name-old.log
Vo Windowse, nemožete premenovať log súbor, pokiaľ ho má server otvorený. Musíte stopnúť server a tak premenovať súbor, následne reštartovať server, aby sa vytvoril nový log súbor.
Binary log obsahuje všetky príkazy, ktoré aktualizujú(update) dáta alebo by ich mohli aktualizovať(napríklad DELETE, ktorý sa nevzťahuje na žiaden riadok). Príkazy sú uložené vo forme udalostí, ktoré popisujú zmeny. Binary log tiež obsahuje informácie o tom, ako dlho každý príkaz aktualizoval dát.
Poznámka: binary log nahradil predtým používaný update log, ktorý už nie je dostupný od MySQL? verzie 5.0. Binary log obsahuje všetky informácie, ktoré sú dostupné v update log avšak v efektívnejšom formáte a spôsobom, ktorý je bezpečný pre transakcie. Ak používate transakcie, musíte použiť MySQL? binary log kvôli zálohovaniu, namiesto starého update logu.
Binary log sa nepoužíva pre príkazy ako SELECT alebo SHOW, ktoré nemenia dáta. Ak chcete logovať všetky príkazy(napríklad identifikovať chybnú požiadavku), použite general query log.
Primárnym účelom binary logu je schopnosť aktualizácie databázy počas operácie zotavenia maximálne ako je možné, pretože binary log obsahuje všetky aktualizácie vykonané po zálohovaní. Binary log sa tiež používa na hlavných replikačných serveroch ako záznam príkazov, ktoré sa posielajú podradeným serverom.
MySQL Enterprise: Binary log dokáže tiež vystopovať významné DLL udalosti. Analýza binary logu v tomto smere je celočíselnou časťou MySQL? Network Monitoring a Advisory Service. Viac informácií na http://www.mysql.com/products/enterprise/advisors.html. |
Server bežiaci so zapnutým binary logovaním má zníženú výkonnosť približne o 1%. Avšak výhody binary logu pri zotavovaní a možnosti nastavenia replikácie, všeobecne prevážia toto malé zníženie výkonu.
Keď naštartujeme s voľbou --log-bin[=base_name]
, mysqld
zapíše do log súboru všetky SQL príkazy, ktoré aktualizujú dáta. Ak nezadáme base_name
, defaultne sa nastaví meno hosta, za ktorým sa doplní -bin
. Ak je basename zadané (nie ako absolútnu cestu), server zapíše súbor do dátového adresára. Všeobecne sa doporučuje sa basename zadávať.
Slow query log pozostáva zo všetkých SQL príkazov, ktoré vyžadujú viac sekúnd na vykonanie ako long_query_time. Čas na získanie zámkov pre tabľku sa nepočíta ako vykonávací čas. mysqld
zapíše príkaz do slow query log po tom ako sa vykonal a všetky zámky sa odstránili, teda poradie logovania môže byť odlišné od poradia v akom sa príkazy vykonali. Minimálna a defaultná hodnota long_query_time sú 1 a 10.
Pre zapnutie slow query log, naštartujte mysqld
s voľbou --log-slow-queries[=file_name]
.
Ak nezadáme meno súboru pre --log-slow-queries
, defaultne meno je host_name-slow.log
. Ak zadáme meno (nie ako absolútnu cestu), server zapše súbor do dátového adresára.
Slow query log môžeme použiť pri hľadaní požiadaviek, ktoré vyžadujú dlhý čas na vykonanie a preto sú kandidátmi v prípade optimalizácie. Avšak prehľadávanie dlhého slow query logu sa môže stať náročnou úlohou. Pre uľahčenie sa zadáva mysqldumpslow
na zosumarizovanie požiadaviek vyskytujúcich sa v logu. Použite mysqldumpslow --help
na zobrazenie možných volieb.
V MySQL? 5.0 sú požiadavky, ktoré nepoužívajú indexy sú logované so slow query log ak zadáme voľbu --log-queries-not-using-indexes
.
MySQL Enterprise: Nadmerné skenovania tabuľky sú príznakom chýbajúcich alebo zle optimalizovaných indexov. Použitím poradcu špeciálne navrhnutého na túto úlohu, MySQL? Network Monitoring a Advisory Service dokáže identifikovať takéto problémy a ponúknuť radu na vyriešenie. Viac informácií na http://www.mysql.com/products/enterprise/advisors.html. |
V MySQL? 5.0 voľba --log-slow-admin-statements
vám dovolí požadovať logovanie pomalých administratívnych príkazov ako sú OPTIMIZE TABLE, ANALYZE TABLE, a ALTER TABLE do the slow query logu.
Požiadavky spracované s query cache nie sú pridané do slow query logu, a tiež nemajú výhodu z indexovania, pretože tabuľka má nula alebo jeden riadok.