maji na UPS
To sice ochrání před výpadkem proudu, ale ne před výpadkem HW.
server bude mit zrejme HW raid
To zaručuje, že všechny disky budou mít data k poslednímu flushi (commitu žurnálu), ale už nic poté.
Ale pokud ti je jedno ze o data prijdes ... tak muzes predpokladat i to, ze vazne maji i zalohy ...
Zálohy nejspíš mají, ale u levných VPS se typicky zálohuje jen jednou týdně. Navíc zálohy většinou vytahují, jen pokud se jim rozpadne pole, a zákazník nemá možnost si obnovu ze zálohy vyžádat.
jak moc nachylna je ta ztrata dat ? Nevim jesti jsem to presne pochypil, ale writeback dela to, ze metadata jsou zpracovana zurnalem, ale data samotna jsou zapsana az nekdy pozdeji (dle intevalu parametru commit ?), tedy pokud mezi zapisem metadat a skutecnych dat dojde k vypadku tak jsem data ztratil, protoze na disku je neco jineho nez by tam melo byt ? (data=ordered zapise metadata a hned na to data, tedy minimalizuje prodlevu).
Writeback a ordered žurnály fungují takto:
- do žurnálu se zapíše, jak se budou měnit metadata souboru
- nová metadata se zapíší na disk
- ordered: zapíší se všechna data na disk; writeback: začnou se zapisovat data na disk, ale zápis může pokračovat i po 4.
- změny metadat se v žurnálu commitnou
Oboje hrozí poškozenými soubory (pouze data=journal zaručuje konzistenci obsahu), ale každé jinak. U ordered je známo, jak velký byl soubor před změnou, při přehrání žurnálu se soubor zmenší na původní velikost, takže nemusí obsahovat všechna data a přepisy mohou být jen částečné, ale určitě neobsahuje bordel. U writeback to po commitu žurnálu už známo není, soubor tedy může obsahovat bloky, kam se ještě nestihlo zapsat a kde může být cokoliv.
A jak se s těmito situacemi MySQL vyrovná? MySQL po pádu přehrává log, kam si zaznamenává, co dělala; do logu se zapisuje vždy jen na konec, takže nehrozí problémy s částečnými přepisy. U ordered tak mohou chybět poslední příkazy, ty se prostě ztratí a neprovedou. U writeback ale na konci logu může být bordel a MySQL může udělat cokoliv, typicky odmítne log přehrát, databázi přepne do read-only a označí ji jako poškozenou.