Sziasztok!
Van egy (szerintem) nagyon jó feladatom számotokra. Adott 7 szerver, teljesen más-más adatbázisokkal. Valahol csak 2 DB van, van ahol 22. Van amelyik 10 MB, van ami 3 GB. Ki lett találva, hogy időspórolás és HW erőforrások megfelelő elosztása érdekében legyenek csak havonta teljes backup-ok, naponta viszont legyen differenciális backup. Na, én meg rábólintottam, hogy ez jó ötlet... csak épp nem tudtam, hogy a MySQL alapból nem tud ilyet és csak mókolt szkripteket találtam a Google segítségével.
A backup úgy készül jelenleg, hogy van egy Backup szerver aki X időközönként be SSH-zik a kliensekre, csinál egy SQL dumpot kompletten, csinál egy tar-gz fájlt a /var/www-ről majd ezt a 2 fájlt az rsnapshot szépen átmásolja a szerverre a megfelelő helyre. Ez addig szépen és jól ment míg el nem értük a gigás méreteket. :)
Kérdés: Ti hogyan csinálnátok minden adatbázisról különbözeti mentéseket? És, ha lehet nem növekvőt, hanem különbözetit. Szerintem az biztonságosabb, de cáfoljatok meg kérlek, ha nem. :)
A rendszerek amúgy CentOS 6-7 alapúak.
- 7867 megtekintés
Hozzászólások
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Mi Percona-zunk (néhol Percona XtraDB Cluster is), de backupra a jó öres mysqldump megy --single-transaction opcióval. SSD van alatta, megy rá egy targz és 1-2-4 óránként (ügyfél függő) van teljes dump. Megy. Mondjuk nem videokat streamelünk DB-ből, max 100-500Mb a targz-zett dump.
- A hozzászóláshoz be kell jelentkezni
innodb inkrementális backup-ra ez jó. debian-ban benne van alapból és nem csak percona-val megy.
- A hozzászóláshoz be kell jelentkezni
Ha biztonságos és gyors hálón eléri a backup gép az éleset, akkor inkább egy külön sql-re dedikált SQL juzert csinálnék és a backup gép tömörítene.
- A hozzászóláshoz be kell jelentkezni
+1
A backup gépre mysql kliens. Ha a hálózat nem biztonságos, akkor tls-sel.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Én minden adatbázisra csak a mentéshez szükséges jogokat tartalmazó userrel szoktam napi teljes mentést csinálni és a db szerveren tömöríteni. Ha ez megfekteti pár 10GB-ig akkor már nagy a tré a géppel. De igen, így javasolt.
- A hozzászóláshoz be kell jelentkezni
Igen, ezt szoktam én is és igénytől/lehetőségtől függően esetleg a backup gépről indítani a dumpot. Ez utóbbiban sincs semmi izgalmas, gigás hálón átjön szépen a dbdump és utána a backup gép szüttyögjön.
- A hozzászóláshoz be kell jelentkezni
Jaja, igaz, a backup gépről indítva még jobb, főleg ha a szkript képes egy megfelelő rotációra is, napi/hét, havi és heti / év mentéseket megtartani mert sose lehet elég verzió semmiből sem.
- A hozzászóláshoz be kell jelentkezni
Szerintem bonyolult szkript se kell. Kapsz egy SQL dump-ot, ami egy szöveges fájl. Ezen kell futtatni egy backup-programot, ami tud mindent, ami kell.
- A hozzászóláshoz be kell jelentkezni
Ki lett találva, hogy időspórolás és HW erőforrások megfelelő elosztása érdekében legyenek csak havonta teljes backup-ok, naponta viszont legyen differenciális backup.
nyugtass meg, hogy ez csak vicc akart lenni...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Ilyen az amikor a hozzá nem értő vezető találja ki, hogy mit csináljon a szakember :D Nem tippelek szférára.
Ha 2Gb adaton szarrágnak akkor nem tudok mit mondani csak rondát.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Ahelyett, hogy azt mondaná: "Lehet ezen optimalizálni valamit? Legyen max 16 óra kutatás és 40 óra végrehajtás! Ezzel beleölünk havifizu/4 pénzt...spóroljunk vele legalább ennyit!"
- A hozzászóláshoz be kell jelentkezni
Megnéztem a backup scripjeinket és eszembe jutott még valami:
Vannak nagy, felesleges tábláink: Activity vagy LogActivity, benne minden oldallátogatás. Ezek jók valamire, de nagyok ahhoz, hogy túl fontosak legyenek. Néha a DB fele ez.
Ezeket az óránkénti mentésből kihagyjuk, csak a napi nagy mentésben vannak benne. Már a felét megspóroltuk a méretnek...
mysqldump --skip-table=XXX
- A hozzászóláshoz be kell jelentkezni
Nem lenne érdemes esetleg az Activity{Log} táblákból a nagyon régi elemeket(akár archiválást követően) törölni?
- A hozzászóláshoz be kell jelentkezni
Érdekes, teoretikus kérdés. A mi álláspontunk erről:
- A tábla adatai fontosak.
- Nem csak az utolsó 6 hónap, hanem az utolsó 5 év is.
- A tábla adatai annyira fontosak, hogy az operatív 25GB mellett ez megér +25GB-ot (kb. 250GB SSD egy VPS-ben $30/hó)
- Az óránkénti mentést jelentősen gyorsítja ha ezeket kihagyjuk.
- Ha havaria van (ne legyen, mentés emiatt van, soha ne legyen rá szükség), akkor max az utolsó napi logból hiányozhat adat a restore után.
- A hozzászóláshoz be kell jelentkezni
A zárójeled egy másik gondolatot indított el: akár csinálhatnánk azt is (köszi az ötletet!), hogy egy data-pump a különböző szerverek logjait folyamatosan pakolja egy dedikált LOG-gépre. Annak a mentése pedig az operatív adatoktól független lehet. Jó lenne SQL alapon logolni, mert könnyebb lekérdezni, de talán lehetne nosql is (mongo), ha a különböző szerverek különböző adatokat raknak el.
- A hozzászóláshoz be kell jelentkezni
adott kornyezetben az is mukodhet, hogy egy slave-re replikalod az adatokat, majd amikor eljon a mentes ideje, akkor suspendeled a replikaciot, kiflush-olsz mindent (valahogy), aztan elteszed a mysql db konyvtarakat.
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Nem teljesen erre gondoltam, de örülök, ha gondolatébresztő volt a kommentem. Ha nem túl sűrűn vannak lekérdezve az Activity{Log} táblák, akkor meg lehetne csinálni, hogy a "régi" rekordokat, amik kvázi statikusak, egy külön DB-ben (DW) tárolni, amiről nem kell óránkénti, csak napi mentés készüljön. Minden nap végén egy karbantartó folyamat legutna, ami a "régi" rekordokat áttolnná a DW adatbázisba. Aki pedig lekérdezéseket akar futtatni, az megteheti a DW-n, annak tudatában, hogy csak az előző napig vannak benne adatok.
- A hozzászóláshoz be kell jelentkezni
http://dev.mysql.com/doc/refman/5.7/en/point-in-time-recovery.html
binlog segítségével lehet valami hasonlót elvégezni.
Vagy. LVM/FS szintű snapshottal történő mókolgatás.
De őszintén hagyd a fenébe, az egész ötlet beteg ahogy van. Ha csak nem akarsz mysql db-ben több jártasságot szerezni akkor ne foglalkozz vele. Ha helyet akartok spórolni akkor kell egy compress+dedup fs a tömörítetten dumpok tárolására azt csókolom. A 2Gb meg kerek 20 mp egy GB hálón.
- A hozzászóláshoz be kell jelentkezni
LVM vagy FS szinten szerintem nem lesz túl konzisztens az adatbázis. :)
- A hozzászóláshoz be kell jelentkezni
dehogynem: mysql stop elotte :-)
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Hát nem. Az egész egy döglött macska futtatása.
- A hozzászóláshoz be kell jelentkezni
Szerintem a konzisztencia - backupról van szó - irreleváns, ha tranzakciós DB-t mentesz.
Ugyanis, ha vissza kell állnod, mindenképpen veszíteni fogsz adatot. 5-6 perc ide/oda nem mindegy?
Egy InnoDB simán visszaáll a legutolsó konzisztens állapotra, ha a visszaállított fájlszintű "backup" nem konzisztens.
Nam hiszem, hogy nagyon sok olyan db van, ami megharagszik, ha MyISAM-ról InnoDB-re megy át.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Attól, hogy egy adatbázis tranzakciós, még nem következik, hogy fájlszinten backupolhatod, anélkül hogy a táblákat lockolnád. Nyitott adatbázist menteni így felér egy orosz rulettel.
- A hozzászóláshoz be kell jelentkezni
Miert?
- A hozzászóláshoz be kell jelentkezni
mert a nyitott adabazisban egy nagy mennyisegu adat a buffer poolban lehet, ami nem garantaltan syncelodott meg ki az adatfileokba.
- A hozzászóláshoz be kell jelentkezni
Ahogy mas irta, nem mind1 nehany masodperc?
- A hozzászóláshoz be kell jelentkezni
Az én rendszerem alatt az a néhány másodperc 2-3ezer tranzakciot jelent nyugalmi idoszakban. :)
- A hozzászóláshoz be kell jelentkezni
Azaz? Ket backup kozott meg (szaz)millios tranzakcio lesz vagy meg tobb.
- A hozzászóláshoz be kell jelentkezni
Attól még az a 2-3k tranzakció sem veszhet el :-P
- A hozzászóláshoz be kell jelentkezni
Mirol beszelsz? Nem, az a 2-3k fog elveszni, hanem a ket backup kozotti osszes.
- A hozzászóláshoz be kell jelentkezni
Az _sem_, nem, hogy a többi :-P Normális esetben tud a DB olyat, hogy a lezárt tranzakciók adatait kitolja a diszkre, és amíg nem szólunk neki, addig a logba írja csak az időközben lezáródó tranzakciók okozta változásokat - hogy az adatfájl konzisztens maradjon, míg elmásoljuk/snapshot-ot csinálunk, stb.
- A hozzászóláshoz be kell jelentkezni
Nana, hogy igen.
De banyek azert aggodik, hogy 2 csepp furdoviz meg a kadban van, de a gyerek mar reg nincs.
Najo, ez eleg huje hasonlat.
- A hozzászóláshoz be kell jelentkezni
banyek, szoval?
Komolyan kerdezem, en igy csinalom es szeretnem tudni, ha rosszul...
- A hozzászóláshoz be kell jelentkezni
Snapshotból csinálod a mentést? Próbáltad már visszaállítani a mentést? És ellenőrizted is az adatokat?
- A hozzászóláshoz be kell jelentkezni
Ja, de az semmit nem jelent, ha a lehetosege fennall a gebasznak.
- A hozzászóláshoz be kell jelentkezni
A tábla lock biztosan azt jelenti, hogy ki is ír a diszkre egy konzisztensz állapotot? :)
- A hozzászóláshoz be kell jelentkezni
Jogos. Eszembe sem jutna így menteni adatbázist, ezért csak félig gondoltam végig. :)
- A hozzászóláshoz be kell jelentkezni
miért ne lenne konszisztens? erről szól a fs snapshot... (zfs, btrfs...)
- A hozzászóláshoz be kell jelentkezni
FS szinten konzisztens lesz, de egy MyISAM táblánál vagy bárminél amiben nincs tranzakció naplózás ez egyáltalán nem biztos, hogy adatbázis szinten is értékelhető. Egy postgres vagy innodb jó eséllyel visszaáll, de az igazi mindíg a saját natív mentőeszközt használni. Sokmindent mentek LVM snapshot alapon, de adatbázisokat mindíg dumpolgatok, ahogy a nagykönyvben van.
- A hozzászóláshoz be kell jelentkezni
aki myisam-ot használ 2015-ben, az valószínűleg nem akar napi inkrementális backupot és valószínűleg nem fontosak az adatai.
amúgy már rég innodb a default storage engine a mysqlben...
- A hozzászóláshoz be kell jelentkezni
:) Hát és még mennyi legacy cucc fut vagy mennyi olyan van, ahol a db sémában fixen myisam van beégetve... Természetesen bármilyen változás óriási sikítás hogy jajjmindenelromlik és "már megint" minek kell "mindent" megváltoztatni. Olyan apróságok, hogy amit használnak régen nem supportált, elavult stb. az falra hányt borsó.
- A hozzászóláshoz be kell jelentkezni
+1 for "jajjmindenelromlik és "már megint" minek kell "mindent" megváltoztatni"
- A hozzászóláshoz be kell jelentkezni
Ennél van durvább is: alkalmazásban használják az "ls" parancsot egy rakat kapcsolóval paraméterezve - aminek a kimenete a dátum/idő mezőkben nem azonos a friss ls által produkálttal. (Amit használnak, az a fileutils-ból a 4.1, miközben a coreutils-ból az 5.97 az aktuális). Lecserélni, kódot módosítani nem lehet - a régi, 32 bites "ls" binárist kell felmásolni minden érintett gépre, és a PATH-t úgy beállítani az alkalmazás alá, hogy ez a f0s hamarabb legyen, mint a "gyári" ls...
Pedig a --time-style használatával megoldás is lett volna a problémára, de nem, mert a fejlesztő így adta át a kódot és kész...
- A hozzászóláshoz be kell jelentkezni
Ez megy a takinfo-nal? Vonzo:)
- A hozzászóláshoz be kell jelentkezni
sub... :P
- A hozzászóláshoz be kell jelentkezni
Lehet megérné írni egy patch-et a coreutils-hoz, hogy a benne lévő kurrens ls paraméter nélkül adja meg a kimenetnek a szükséges time-style-t...
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
Ha már szóba jött...
Mik azok a feature-ök, amik nem engedik meg, hogy egy generálisan régi, MyISAM-os db-t áttegyen a jóember InnoDB alá?
Mellékesen jegyezném meg, hogy lehet szídni a MyISAM-ot, de alacsony táblaszám és relatíve kis méretű táblák mellett erőforrástakarékosabb.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Ezt ne tőlem kérdezd. :) Én tudom, hogy átpakolható. A baj ott lesz, ha mondjuk csinál egy website reinstallt majd a séma megint MyISAM-os. Nekem speciel a MyISAM-mal sincs bajom, valóban takarékos az InnoDB-hez képest és az innodb buffert se kell az egekbe emelni. :)
- A hozzászóláshoz be kell jelentkezni
Nem kifejezetten Tőled kérdeztem :)
DB-t meg ne pakolgasson senki csak úgy hébe-hóba a tudtom nélkül.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Hogy lesz abbol *megint* myisamos sema?
- A hozzászóláshoz be kell jelentkezni
Mert így indul a dbdump, amiből visszatölt: DROP TABLE x; CREATE .... ENGINE=MyISAM; :)
- A hozzászóláshoz be kell jelentkezni
sed 's/MyISAM/InnoDB/g'
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Én nem tudok belenyúlni abba, ami a juzer betölt magának és igazából nem is akarok. :)
- A hozzászóláshoz be kell jelentkezni
Ha phpMyAdmin alól tölti fel, abba pont bele lehet nyúlni :)
Ha konzolja van, az már más.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
A migrálást követően nem lehet kikúrni a myisam támogatást kompletten? Akkor többet nem tölt be ilyet :D
- A hozzászóláshoz be kell jelentkezni
mysql.* semaja tovabbra is mysql ezert kell.
Vagy azt is at lehet convertalni?
- A hozzászóláshoz be kell jelentkezni
Regex-szel ki lehet ölni (replace is elég) az "Engine=myisam" dolgokat és akkor a szerver beállításai szerinti (mondjuk InnoDB) táblastruktúra jön létre.
- A hozzászóláshoz be kell jelentkezni
Ja ertem, azt hittem arrol van szo, ha backup-bol allitodik vissza. Amugy a thread elvileg arrol szol:P
- A hozzászóláshoz be kell jelentkezni
de ha a dumpot innodb-s tablakkal csinalja, akkor a visszatolteskor is az marad.
- A hozzászóláshoz be kell jelentkezni
Akkor kifejtem. :) Arról volt, hogy LVM snapshot alapú mentés jön és az nem biztos, hogy az FS szintű db mentést rendesen konzisztensen viszi. Erre jött a válasz, hogy a innodb elviseli, mert megfelelően kezeli a helyzetet. Nekem még elég sok MyISAM formátumú DB-hez van szerencsém, amikkel különösebben nem akarok foglalkozni és hiába passzírozom át őket InnoDB-re mondjuk most, ha a juzer magának létrehozza újra a tábláit bármiért az eredeti sémája szerint, akkor megint MyISAM lesz. Legalábbis ahol fixen bekerült az ENGINE=MyISAM a tábladefiníció.
- A hozzászóláshoz be kell jelentkezni
Tudomásom szerint a fulltext search nem megy innodb alatt, csak myisam-mel.
- A hozzászóláshoz be kell jelentkezni
Igen, valami ilyesmi rémlett.
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
~5.6 óta már innodb-vel is megy.
- A hozzászóláshoz be kell jelentkezni
Kösz, ma is tanultam valamit.
- A hozzászóláshoz be kell jelentkezni
+1
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
ha fulltext search kell, akkor jobban jarsz sphinxsearch-csel...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Ja, én nem használom, csak ez az egyedüli olyan feature (volt), amit nem tudott az innodb.
- A hozzászóláshoz be kell jelentkezni
legalabbis mysql 5.6 elott. Az 5.6-os verzioval tokeletesen mukodik.
- A hozzászóláshoz be kell jelentkezni
Na ne basz, erről szól a Write-ahead log, hogy de, legyen már konzisztens. MSSQL konkrétan úgy backupol, hogy VSS-el csinál egy snapshotot az adatbázis fájlról...
http://www.postgresql.org/docs/9.1/static/wal-intro.html
http://dev.mysql.com/doc/refman/5.7/en/binary-log.html
https://technet.microsoft.com/en-us/library/ms186259%28v=sql.105%29.aspx
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Itt most mysql a kerdes, amiben boven lehet myisam tabla is.
- A hozzászóláshoz be kell jelentkezni
Jó, aki tökön akarja szúrni magát, az tegye. Ettől függetlenül a snapshoting egy életképes megoldás, amennyiben nem retard módon van felépítve a DB.
(Mondjuk halkan jegyzem meg, hogy a MySQL-el az utolsó tapasztalatom az volt, hogy még azt sem képes ellenőrizni, hogy elfogyott-e a lemezhely alóla és csini hibaüzenet helyett inkább összeomlott és lehetett mysql repair tablet nyomni, míg a PostgreSQL ilyenkor rollbackelte az utolsó tranzakciót, kiírt egy hibaüzit a logba - külön köteten volt - és nem egy összeomlással zárta a napot.*)
((*Azt most ne feszegessük, hogy miért fogyott el a lemezhely. Csak. Balesetek előfordulnak.))
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
A monitoring telerottyantotta azzal az üzenettel, hogy fogytán a hely :-P
- A hozzászóláshoz be kell jelentkezni
Mysql innodb nekem is leallt emiatt, de rollback volt, vagyis megjavitotta onmagat. Miutan ujra elinditottam, mert leallt
- A hozzászóláshoz be kell jelentkezni
Nem csak egy snapshot-ot csinál VSS-el, hanem a VSS hívja meg a SQL Writer Service-t, ami "csitatja" a DB-t. Ettől lesz konzisztens.
- A hozzászóláshoz be kell jelentkezni
+1, ha szól valaki a DB-nek, hogy mostan snapshot jön, akkor rá tud készülni - de nem ez a normál üzemi állapota.
- A hozzászóláshoz be kell jelentkezni
Pontosan
- A hozzászóláshoz be kell jelentkezni
LVM/FS snapshottal konzisztens lesz (pont úgy fog kinézni, mintha a gép megállt volna a snapshot pillanatában, és nyomtál egy rebootot - ebből egy rendes tranzakcionális adatbázisnak fel kell állnia). Csak annyi a feladat, hogy a _teljes_ adatbázisra egyszerre készüljön a snapshot. Ez ugye nem triviális, ha nem egy fájlrendszeren/volume-on lakik az egész.
Viszont snapshot nélkül (tehát ha csak szimplán elkezded a fájlokat/diszket a futó, módosuló adatbázis alól kimásolni) jó esélyed van arra, hogy korrupt legyen a mentés, és ezen az innodb sem segít.
- A hozzászóláshoz be kell jelentkezni
Erről van valakinek gyakorlati tapasztalata?
Van egy KVM -en futó Win+MSSQL adatbázisom, amit menteni szeretnék, de semmilyen adatbázis hozzáférésem sincs.
Adná magát az LVM snapshot, de kipróbálni sem tudom a visszatöltést.
- A hozzászóláshoz be kell jelentkezni
A sima LVM snapshot gyakorlatilag olyan, mintha fizikai gépből kihúznád a tápot. Nem lehet tudni, hogy mi éli túl, mi lesz inkonzisztens, mi sérül meg.
- A hozzászóláshoz be kell jelentkezni
Eleg baj, ha arra nem keszult fel, nem?
- A hozzászóláshoz be kell jelentkezni
Ha tudnád, hogy hány sw nem viseli el, ha kikapcsolod alatta a gépet...
Persze egy rdbms esetén ez azért durva dolog lenne, de "mezei" alkalmazások rendszeresen fosok ilyen szempontból.
- A hozzászóláshoz be kell jelentkezni
Igen, leginkabb az rdbms-re es az OS-re irtam a konkret esetben.
Tudsz irni peldat service alkalmazasoknal, amelyik nem birja?
- A hozzászóláshoz be kell jelentkezni
Inkább régebbi tapasztalás volt ez, amikor még nem volt divat boldog-boldogtalan alkalmazás alá külső rdbms-t rakni. Ha az alkalmazás fájlokban tartja a cuccait, és nem tisztán adatbázislibet használ erre (pl. libdb.so, libgdbm.so), akkor ott nagyon gyorsan felmerülnek a kétségek (régi HP NNM, 46020, hogy a két "kedvencemet" emlegessem).
Azt mondjuk sosem mertem megnézni, hogy ha random Linux alatt pl. package telepítés/frissítés közben nyomok egy resetet, akkor mi történik. Nem tartom kizártnak, hogy esetleg ilyenkor lehet elővenni a backupot/install médiát, mert menthetetlen lesz a cucc.
- A hozzászóláshoz be kell jelentkezni
> Inkább régebbi tapasztalás volt ez, amikor még nem volt divat boldog-boldogtalan alkalmazás alá külső rdbms-t rakni.
OK, de ez ne legyen mar a felsoroltak mellett:)
Amugy igy erzesre az sem szabadna, hogy inkonzisztens legyen. Napi backuprol van szo, sorban az utolso commmitok elveszhetnek, csak legyen konzisztens.
> Azt mondjuk sosem mertem megnézni, hogy ha random Linux alatt pl. package telepítés/frissítés közben nyomok egy resetet, akkor mi történik. Nem tartom kizártnak, hogy esetleg ilyenkor lehet elővenni a backupot/install médiát, mert menthetetlen lesz a cucc.
Szerintem meg annak sem kene problemaznia.
- A hozzászóláshoz be kell jelentkezni
Nade épp ez az: default beállításokkal a fájlrendszerek nem garantálják az I/O műveletek sorrendiségét egymáshoz képest (sem egyik fájl-másik fájl, sem egyik fájl-másik fájl/könyvtár metaadata vonatkozásban, de talán még talán a fájl és az ő saját metaadata vonatkozásban sem). Értsd: létrehozol egy fájlt, meg belemódosítasz egy másikba, és lehet, hogy az első fájl elveszik, a második módosítás meg megmarad. Ez minden, csak nem konzisztencia.
- A hozzászóláshoz be kell jelentkezni
Épp ezért raknak az RDBMS-ekbe naplózást, aminek hatására:
- Nem lesz meg minden adat, ami kiküldtél a HDD-re (!!!)
- De konzisztens marad az adat (egyben kiküldött (egy tranzakció) adatok egyszerre fognak kiíródni vagy elveszni)
Ha a naplófájl sync-kel kerül kiírásra (mysql beállítás, hogy mennyire legyen "sync": OS vagy disk szinten), akkor a fentiek elégségesek, gyakorlatban mindegy egy visszaállításnál, hogy az utolsó 30mp megvan-e vagy nincs. Ha a sync nem okés (nincs sync vagy SSD-nél kiment a sync, de az áram elkóborolt...), akkor a naplózó DB sem lesz jó. De általában az is javítható, max találsz egy létező számlát, aminek nincsenek meg a tételei (vagy fordítva, foreign key failed). De ez olyan ritkán fordul elő, hogy inkább kifizeted a szoftveres munkáját, mint hogy földbe ásd a szervert RAID-10-zel, külön aggregátorral.
Mindig a mérlegelés dönti el, hogy mi éri meg...
- A hozzászóláshoz be kell jelentkezni
Nem teljesen ertem.
Szerverekrol van szo. Amennyibe ez erdekes, akkor az alkalmazasnak meg kell gyozodnie, hogy jol csinalja.
Amenyiben az FS nem hazudik szandekosan (javits ki, de ilyen nincs default beallitasnal), akkor minden jonak kell lennie.
De ha megis, ne hasznalj default beallitast.
Te nem keszited fel a szerveredet varatlan leallasokra? Ha van UPS, ha nincs, en nem szoktam ra szamitani.
De bevallom, mindig tovirol hegyire nem szoktam utana jarni. Remelem, nem lesz belole gond.
Ha nem bugos az FS, a driver, a firmware es a tobbi es azt teszi, amit mondanak neki, akkor nem lehet problema.
Ezek kozul azert jellemzoen szokott lenni gebasz en megsem talalkozom surun ilyennel.
De megegyszer, azt nem mondanam, hogy 100%-ig mindig minden esetben megbizom bennuk. De ahol ez gond es szamit, ott mar ugyis meg kell oldani tisztessegesen (= pl. dump).
- A hozzászóláshoz be kell jelentkezni
Amennyibe ez erdekes, akkor az alkalmazasnak meg kell gyozodnie, hogy jol csinalja.
Amenyiben az FS nem hazudik szandekosan (javits ki, de ilyen nincs default beallitasnal), akkor minden jonak kell lennie.
Az alkalmazás nem teszi. Feltételez olyan dolgokat az írója, amiket a FS alatta nem garantál default beállításokkal, de mondjuk egy hard reset/crash pillanatáig nem is derül ki, akkor is csak attól függően, hogy éppen mennyire tekert az alkalmazás (ha éppen üresen ketyegett, akkor megintcsak nem történik semmi), illetve mekkora volt a mázlifaktor. Nyilván aki RBDMS-t fejleszt, az azért nagyjából tisztában van ezekkel a fogalmakkal, de aki mondjuk egy telkó eszközhöz ír felügyeleti szoftvert, az esetleg teljesen clueless lehet a témában.
- A hozzászóláshoz be kell jelentkezni
Akkor megoscsak az sw-ben van a hiba.
Azaz szarbol nem lehet varat epiteni es sysadmin level szintjen lehet mwgoldani workaroundolva.
Amugy konkretan mit feltetelez?
Megjegyzem, a dba srac nalunk epp a multkor mondta, emc storage, snapshot, es nem ment a recovery, Oracle-vel.
De ezt en nem akarom elhinni.
Ott jott elo a tema, h mire jo a zfs snapshot, mire nem.
- A hozzászóláshoz be kell jelentkezni
A snapshot-ot úgy képzeld el, hogy kirántod a gépből az összes tápkábelt. Na ezt nem minden esetben éli túl egy RDBMS. Sem.
- A hozzászóláshoz be kell jelentkezni
+1
Egyébként Google jó barát: https://www.percona.com/blog/2006/08/21/using-lvm-for-mysql-backup-and-…
- A hozzászóláshoz be kell jelentkezni
Orákulumul meg valahogy úgy hangzik, hogy alter database begin backup/end backup - bár marha rég volt, amikor ilyennel is foglalkoztam :-) A lényeg, hogy szólni köll az adatbázisnak, hogy próbáljon jó képet vágni a snapshothoz, és a diszken igyekezzen konzisztens állapotot létrehozni :)
- A hozzászóláshoz be kell jelentkezni
Nem fog. Se jó képet vágni, se konzisztens állapotot létrehozni. Mármint abban az értelemben, hogy ha visszatöltöd a db fáljlokat és az instance ráindul, akkor a szívéhez kap, és sértődötten közli, hogy physical recovery needed. Asszem (10+ éve volt :D). A begin backup annyit csinál, hogy mint állat elkezdni írni a redo log fájlt (is), abba is elhelyezve mindent, amit amúgy a db-be írna. A db fájlok mentés közben meg is fognak változni. Az eleje még a 131231-es SCN-en van, de a vége már mondjuk 131235-ön (+4). Ezért az alter database end backup után (utána célszerű :D) le kell menteni a redo log fájlokat is. Ebből fogja majd helyrepofozni a csálé blokkokat.
Persze lehet futtatni a db-t archivelog módban is, akkor lehet tekergetni ide-oda az időben. Ezt pl. tudja mysql is (nekem már mentette meg az életemet, hogy a delete from elé el tudtam tekerni mentésből).
Remélem jól emlékszem, ha nem, akkor majd egy dba kijavít. A lényeg, hogy a lementett db marhára inkonzisztens (mert mentés közben írható és íródik is), de javítható. Annó kifejezetten féltem (rettegtem) ettől a megoldástól, de 10+ helyreállításból egyszer se volt gond belőle.
- A hozzászóláshoz be kell jelentkezni
Persze, így teljes - nem véletlen, hogy külön tanfolyás volt mentés és helyreállítás témában Oracle-höz... Az archivelog mód számomra alap. A fájlok önmagukban nem lesznek 100%-ban konzisztensek, de a teljes fájlkészlet, ha betartja az ember a mentési eljárás lépéseit, akkor konzisztens állapotra hozható.
A lényeg annyi, hogy ha az RDBMS nem tud arról, hogy mentik a fájlokat, akár snapshot-tal egyszerre, akár úgy, hogy raid-tükörből kihúzzák az egyik diszket (ilyen ötlet is jött szembe, de arról gyorsan lebeszéltük a delikvenst), akkor egyáltalán nem garantálható, hogy a diszken olyan állapot lesz, amiből értelmes ráfordítással élő, működő adatbázis rittyenthető.
- A hozzászóláshoz be kell jelentkezni
Ööö.... az alter system switch logfile (flush logs) annak számít hogy tud róla? :D Utána kéne olvasni, de kb. az rémlik, hogy amíg van egy kiinduló állapot - "full mentés" - a db-ből, addig elég a logfile-okat menteni - "inkrementális mentés" -, mert helyreállítható a cucc. Nem kell bűvészkedni snapshottal, read lockkal, ésatöbbi.
- A hozzászóláshoz be kell jelentkezni
A checkpoint kényszerítése az egyik része a dolognak. A "ha van full backup, akkor csak a logokat kell rápakolni" jól hangzik, de... Kellően bőséges archivelog bedolgozása azért kellően hosszú ideig is tarthat (a mennyiség alapján azért becsülhető idő alatt). Úgyhogy "néha" azért kell full backup - az alter database begin backup egyébként emlékeim szerint pont egy kikényszerített logváltással indít - de nekem is utána kéne olvasnom.
- A hozzászóláshoz be kell jelentkezni
Melyik?
- A hozzászóláshoz be kell jelentkezni
Melyik igen? Nem azt írtam, hogy kötelezően maga alá rondít mindegyik és minden ilyen esetben, de messze nem lehet garantálni azt, hogy elfogadható időn belül konzisztens állapot lesz a snapshot-ból. Márpedig menteni azért ment az emberek értelmesebbik része, hogy a mentésből könnyebb legyen újraépíteni a rendszert, mint a romokat helyrevakarni.
- A hozzászóláshoz be kell jelentkezni
Melyik sw?
RDBMS nevu sw-t nem ismerek.
- A hozzászóláshoz be kell jelentkezni
Eddig azt gondoltam, hogy elég nagy vagy már a Google használatához, de segítek: http://goo.gl/Zrs5AH
- A hozzászóláshoz be kell jelentkezni
OK, szoval azt mondod, igy van barmelyik eseten.
Fennhejazas nelkul is lehet:)
- A hozzászóláshoz be kell jelentkezni
Szerintem nem tekinthető RDBMS-nek az, ami nem él túl bármikor egy hard resetet/tápelvételt, illetve ennek megfelelően egy snapshotból visszaállást. Vagy egy shutdown abortból hasonlóan.
- A hozzászóláshoz be kell jelentkezni
Azt írtam, hogy nem minden esetben éli túl. Ez azt jelenti, hogy lehetséges olyan állapot, aminél elvéve a tápot bizony értelmes időn belül nem fogod tudni a romokból feléleszteni a rendszert. Elméletileg lehet, hogy nincs ilyen, de a gyakorlat sajnos mást mond. A mentésnek meg illendően úgy kell elkészülnie, hogy ilyen probléma ne lehessen vele.
A shutdown abort az a lemezen rendet hagy maga után - az agyonvágott tranzakciókkal együtt; ez utóbbiak csak a logikai konzisztenciát törik meg - azt meg az induláskor szépen ki lehet gereblyézni.
- A hozzászóláshoz be kell jelentkezni
A shutdown abort pontosan egy kill -9. Egészen biztosan nem küld ki már több I/O-t a szoftver.
Amennyiben ez különbözik a tápelvételtől, akkor valahol valaki valamit hibásan csinál = nem tartja be az ígért garanciákat, vagy olyat próbál kihasználni, amit nem ígértek meg neki. Ezt én simán bugnak nevezném.
- A hozzászóláshoz be kell jelentkezni
Nem pont az. Tranzakciók szintjén az (nem görget vissza - az majd az indulás utáni feladat lesz), de a cache-elt adatok kimennek a diszkre, a fájlokat lezárja, és utána lép ki.
- A hozzászóláshoz be kell jelentkezni
Igen, errol beszeltem en is.
Es en azt az allapotot mar konzisztensnek nevezem, amikor ossze tudja kaparni magat.
- A hozzászóláshoz be kell jelentkezni
Akkor megoscsak az sw-ben van a hiba.
Hát kb. innen indultunk :D
Amugy konkretan mit feltetelez?
Pl. hogy ha két fájlt módosít, adott sorrendben, vagy egy fájlt módosít, egy másikra meg FS műveletet végez (create, rename, stb.), akkor ezen műveletek végrehajtási sorrendjével ellentétes sorrend nem fordulhat elő a diszk I/O szintjén. Azaz feltételezi, hogy nem állhat elő olyan állapot, hogy a második műveletet a diszk végrehajtja, az első meg elveszik. Pl. létrehozunk egy fájlt (mondjuk egy upload form kapott egy fájlt), majd miután kiírtuk és lezártuk a fájlt, beírjuk egy másik (text) fájl végére a nevét. Ha a text fájlban ott a sor, de a fájl "eltűnt", akkor hasra esik a sw.
- A hozzászóláshoz be kell jelentkezni
OK, de altalaban az fs-ek igy csinaljak, nem?:)
- A hozzászóláshoz be kell jelentkezni
Ez érdekes amit mondasz. Úgy gondolom, hogy ha nem garantál az FS semmit, akkor csak sync a megoldás. Vagy az, hogy tudjon a sw róla hogy mi került ki sync-kel a disk-re sikeresen. Ez tudható vajon?
- A hozzászóláshoz be kell jelentkezni
Erre való az fsync(), nyilván az sw írójának használnia is kell.
- A hozzászóláshoz be kell jelentkezni
Ez nem evidens, mert ugye a sync lassítja a gépet. Tehát ha nem abszolút kritikus az adat (ahol egyértelmű a sync használata), ott már érdekesebb a kérdéskör, ha szeretnénk hogy gyors is legyen a művelet a szoftverben.
- A hozzászóláshoz be kell jelentkezni
Hát van async io (POSIX aio), O_DIRECT-tel kiegészítve az már elég a fájl tartalmára vonatkozóan, illetve a több fájl egymás közti konzisztenciájához, így a performanciával sem lesz gond. A fájl metaadatokat illetően viszont szerintem nincs API erre, tehát az marad a lutri, vagy a sync() az egész gépre...
- A hozzászóláshoz be kell jelentkezni
Más fájlrendszerek alatt sem tudni ilyen feature-ről vajon? Hamar hirtelen belegondolva egy olyat tudnék elképzelni kernel oldalról, hogy a folyamat által nyitott file descriptor-okra adhatna jelzést egy flag-gel, hogy ezek kiíródtak fájl és meta adatokkal együtt sikeresen.
Bár ugye még ott van ezen felül a gyorsító memória pufferek kérdése, melyek lehetnek lemezen, illetve raid kártyákon vagy egyéb vezérlőkben. Az lenne a jó, ha a backend disk vagy tároló tudna visszajelezni, hogy az adatok sikeresen eltárolódtak.
Mindenesetre nagyon érdekes a kérdéskör.
- A hozzászóláshoz be kell jelentkezni
Azt mondjuk sosem mertem megnézni, hogy ha random Linux alatt pl. package telepítés/frissítés közben nyomok egy resetet, akkor mi történik.
Abból adódhatnak problémák :) A napokban abba szaladtam bele, hogy CentOS-en megszakadt a frissítés (már a cleanupnál, tehát a csomagból jövő fájlok a helyükön), utána bootkor kernel panic. Korábbi kernel elindít, akkor láttam, hogy a kernel ott van a helyén, a grub már meg is találta, hogy ott van a kernel és úgy gondolta, hogy akkor initram is biztos van - csak persze nem volt... (dracut oszt öröm és bódogság)
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Amíg egy DVD 4.7GB és 299Ft, addig nem szempont a HW spórolás...
- A hozzászóláshoz be kell jelentkezni
Az (olcsó) optikai adattárolók nem éppen a megbízhatóságukról híresek (hosszú távon különösen nem).
- A hozzászóláshoz be kell jelentkezni
A HDD/SSD is ilyen árban lehet, csak szemléltetni akartam, hogy a tárhely mérete nem lehet akadálya egy PROFI megoldásnak. Nem profi esetben persze a CPU-t is cserélhetjük TexasInstrument processzorra..
- A hozzászóláshoz be kell jelentkezni
Profi megoldás ott kezdődik, hogy enterprise hdd, azok közül is valami 15krpm SAS lemez, amiből mondjuk egy 600 gigás olyan 120-150k HUF+Áfa
(Ha brand storage van ráadásul, akkor oda ilyen lemezek brand változatai jók csak, az árcédula meg 2-2,5x szorzóval értendő.)
Ezek is RAID10-ban, bár backup esetében kiegyezek RAID5-6 vagy azzal ekvivalens megoldással (RAIDZ1-2 pl.).
Tehát nem jól szemléltetted, mert consumer wd green és tsai lemezeket (amik kb analóg kategória az általad említett olcsó optikai adathordozóval) akár backup-szerverbe is rakni, nem a PROFI megoldás, hanem a GÁNY megoldás.
Esetled ha háromszor annyit raksz belőlük, és csoportonként 3 lemezt RAID1-ba teszel, a csoportok fölé meg kihúzol egy RAID6-ot, akkor esetleg. :) (persze ez csak vicc volt, de remélem átjön a probléma...)
- A hozzászóláshoz be kell jelentkezni
Senki nem használ 15k SAS diskeket backupra.
(Mellesleg manapság senki nem használ 15k SAS diskeket semmire)
- A hozzászóláshoz be kell jelentkezni
A zárójeles megjegyzésedre azért ne vegyél mérget... :-P
- A hozzászóláshoz be kell jelentkezni
tenyleg?
akkor holnap en is kodobom mindet a serverekbol.
meg a 10k 2,5"-osoket is a storagekbol.
mit tegyek a helyukre, Mester?
- A hozzászóláshoz be kell jelentkezni
Ne dobd ki, de új beszerzés esetén értelmelten, mert árban a flash drive-okkal vannak egy szinten, de teljesítményben messze elmaradnak. És ezt nem én mondom, hanem pl Larry Ellison (ha kell, kikeresem a keynote részletet), vagy éppen a HP:
https://www.linkedin.com/pulse/20140721193344-18391615-have-we-hit-a-fl…
"Mester?"
A stílus maga az ember.
- A hozzászóláshoz be kell jelentkezni
Nekik eladó a motyó :-) A karos diszk már bőven behozta a belefeccölt fejlesztési erőforrásokat, az új, "picit" drágább ssd még nem.
Egyébként van abban valami, hogy új beszerzés esetén tényleg el lehet azon gondolkodni, hogy karos diszkből raid 10 jellegű tárolás, vagy ssd-ből mondjuk raid5/raid6. Azokat a régi alapvetéseket, hogy ami gyors/nagy iops-ot nyújt az a raid10, ami meg f0s lassú az a raid5, meg a raid6, azt ssd-nél szerintem el lehet felejteni.
- A hozzászóláshoz be kell jelentkezni
nem hiszem, hogy igy van. a RAID10 barmin gyorsabb, mint a RAID5/6 ugyanazon, SSD-n csak a nagysagrend mas a HDD-hez kepest, de boven vannak, akik az SSD-k sebessegkorlatait feszegetik.
- A hozzászóláshoz be kell jelentkezni
Nem biztos, hogy ki tudod mérni, hogy gyorsabb. Ha elég gyors a vezérlő vagy a szoftraid megoldás, akkor könnyen lehet, hogy a RAID5/6 adott vason ugyanolyan lesz, mint a RAID1+0.
- A hozzászóláshoz be kell jelentkezni
+1 Komolyabb storage esetén sem biztos, hogy a mérhető különbség ér annyit, amennyivel több SSD kellene ugyanannyi nettó kapacitású raid1-hez, mint raid5-höz.
- A hozzászóláshoz be kell jelentkezni
pont arra probaltam utalni fentebb, hogy ezt teljes mertekben az alkalmazas donti el es biztosan van, akinek az az elhanyagolhato kulonbseg is fontos. ami neked 5 ezrelek teljesitmeny, az masnak ketmillio sor orankent a megrendeles-adatbazisaba.
- A hozzászóláshoz be kell jelentkezni
Ahol elsőre az SSD-ből összerakott raid-tömb felépítéséből adódó sebességbeli különbség a probléma, ott sem biztos, hogy költség oldalról az n+1 helyett 2n darab ssd a jó megoldás - láttam én olyat, hogy az alkalmazás hangolásával, itt-ott jelentősebb átírásával, addig nem használt technológiák bevezetéséven a "sebességben kinőttük" hardvert tovább tudták használni. Kiszámolták, hogy a storage átalakítása többe kerülne, mint a szoftver részleges újragondolása.
Nem azt mondom, hogy nincs olyan workload, ahol számít, hogy milyen elven áll össze a logikai diszk a fizikai meghajtókból, csak azt, hogy SSD-k esetén nem a tömb nyers I/O-teljesítménye az, ami csúcsra járatva a storage-ot elsőként fog elfogyni. Szerintem...
- A hozzászóláshoz be kell jelentkezni
Azokat a régi alapvetéseket, hogy ami gyors/nagy iops-ot nyújt az a raid10, ami meg f0s lassú az a raid5, meg a raid6, azt ssd-nél szerintem el lehet felejteni.
en ezzel a mondattal nem ertettem egyet, kicsit eltavolodtunk tole, ami nem baj, csak mondom.
persze, en is lattam mar nem optimalisan megirt alkalmazast, ahogy nem optimalis adattarolast is es minel nagyobb a storage, annal olcsobb a fejlesztesi oldalon modositani. a komoly adattarolas amugy sem a RAID-rol szolt sosem.
mellesleg nemreg atment a kezeim kozt egy marketinganyag, amiben SAS SSD-kbol allo Ceph clusterben NVMe SSD-ken voltak a journalok es annak is volt megadva maximalis teljesitmenye, szoval barmit ki lehet koppantani a jelek szerint:)
- A hozzászóláshoz be kell jelentkezni
Hát, mostmegnéztem azért, hogy ez tényleg így van-e:
-15krpm 600GB LFF SAS disk 120ezer Ft körül van.
-Intel SSD DC S3500 600GB pedal 230-240ezer Ft körül.
Azért egy nem egy szint, azt SSD kb. a duplája.
Nálunk van egy 8x15k rpm-es SAS zfs RAID10 tömb, 10g iSCSI-n csatlakozik egy vmware host-hoz. Van rajta kb. 18 virtuális gép, amiből kb. 10 az ilyen VDI megoldás, egy fileserver, meg kisebb szerverek (adatbázis, firewall, proxy, stb.stb.).
Egyáltalán nem lassú semmi se, nem tudom, miért lenne jobb kb. 1.000.000 Ft-tal többért SSD-t venni a 8 darab 15k rpm SAS helyére.
Ha tennék is bele SSD-t, akkor azt is max. ZIL LOG-nak tudnám elképzelni, esetleg ARC cache-nak, de talán az is pénzkidobás, mert sok RAM van a zfs gépben.
Összegezve árban rohadtul nincsenek egy szinten, teljesítményben papíron persze, hogy sokkall jobb az SSD, gyakorlati hasznosításban nálunk, és még biztos sok helyen, nem hoz annyi plusszt, hogy a teljesítménybeli fölény marginális legyen.
- A hozzászóláshoz be kell jelentkezni
Árban a duplája, lehet. (Bár erre még visszatérek.)
Csak az intel SSD-re az intel ezt írja:
Random 4KB Reads: Up to 75,000 IOPS
Random 4KB Writes: Up to 11,500 IOPS
A 15k-s vinyóból mennyit is tud random IOPS-ben? Párszázat?
Mert van olyan workload, amikor az számít, a helyigény pedig nem olyan nagy. Iyen esetben veszel mondjuk 2 db 600-as SSD-t mirror-ban, és ez simán úgy teljesít, mint 10-20, vagy akár 50-100 15k-s vinyó. Ez utóbbiból persze nem kell 600-as, simán elég a jóval kisebb is, de még úgy is sokkal drágább lesz.
És vissza az árra. Ha nem 600-as SSD-t veszel, hanem 300-ast és azt rakod raid0-ba, akkor 2x82k-ból megúszod (bruttó kisker ár), ami már alig drágább a vinyó 120-ánál. Mondjuk ez SATA és nem SAS, de még így is sokkal jobb.
De terás samu 850 pro-t is látok árlistában bruttó 140 alatt, ez pedig minden paraméterben jobb lesz a vinyónál, Ft/GB arányban is.
- A hozzászóláshoz be kell jelentkezni
En elgondolkoznek, h miert annyi.
- A hozzászóláshoz be kell jelentkezni
Nyilván azért, mert nem enterspájz gréd cucc.
Persze vehetsz olyat is, 3x-5x annyiért, én nem beszélnélek le róla. Ha az IOPS számít, akkor még az is sokkal olcsóbb lesz, mint ha ugyanazt összerakod bármilyen tengelyes HDD-s raid cuccból.
- A hozzászóláshoz be kell jelentkezni
Fileserver hány userre? Ez a "nem lassú" ez relatív azért.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
en lattam mar olyan storage-ot, ami igen...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Ahogy elnézem, jelenleg kettő dolognak van értelme:
1) olcsó 2-3-4+ Tb-s SATA diskeknek, ha tárhely kell.
2) SSD-nek.
Ha sebesség kell, kiröhögik az SSD-k a 15k-s SAS diskeket, ha tárhely, akkor meg az ára miatt. Profi-e vagy sem.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
igen, de ha PROFI megoldas, akkor nem consumer lakossagi SSD nyilvan, hanem enterprise-grade.
az meg megint nem a 299 Ft-os DVD lemezzel ekvivalens kategoria.
egyebkent hol rohogik ki az SSd-k a 15k SAS diszkeket árban?
- A hozzászóláshoz be kell jelentkezni
IOPS/$-ban biztosan.
- A hozzászóláshoz be kell jelentkezni
Nincs mindenhol igény a »PROFI« megoldásra. Nekünk pl. 6x3T WD Red van egy gépben raidz2-ben, backupra. Működik nincs vele baj. Ha kihullik egy disk, akkor meg gyakorlatilag végtelen mennyiségben áll a polcon úgy is. (Igaz, megvan az az előnyünk, hogy egy nagyker vagyunk.) Igényeket kielégíti ez is _bőven_.
DVD-t meg hagyjuk, archiválásra se igazán használnám, túl sok macera, Ft/Gb-ben is piszok drága.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
299??? Ha Te ennyiért veszed akkor szívesen lennék hozzád DVD szállító :D
- A hozzászóláshoz be kell jelentkezni
Szia!
Ha kész az inkrementális MySQL mentés megoldásod, akkor ha használod és kipróbálod, leírhatnád a tapasztalataidat a visszaállításról, és hogy miként működik az inkrementális mentés alapvetően és hogy mennyire vállt be.
Olvastam erről a binlog-os megoldásról, de nem találkoztam még ilyennel a gyakorlatban.
Nekem nem tűnik jó ötletnek.
Esetleg javaslom mint alternatíva átgondolni az aszinkron MySQL replikálást a backup gépre.
Vagy ha nem fontos a folyamatos működés, leállítod a MySQL-t, majd rsync a backup gépre, majd ha kész, elindítani a MySQL-t.
Ezt az utóbbit csak retro fun megoldásként javaslom :)
Én a teljes dump-ot javaslom, vagy amit már többen javasoltak, hogy a backup gépről lépjen be az SQL kliens, az úgy a leggyorsabb, ha elég gyors a net a gépek között.
Sakk-matt,
KaTT :)
- A hozzászóláshoz be kell jelentkezni
Vagy, ha nem az idő, hanem a méret a lényeg, akkor a full beckup és az aktuális között egy diff (feltéve, ha az insertek soronként vannak).
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Ez is érdekesen hangzik. Mondjuk egy 5 GB-os dump-ra én nem szívesen eresztenék diff-et.
Sakk-matt,
KaTT :)
- A hozzászóláshoz be kell jelentkezni
Ha van két kész dumpod, amivel ráérsz játszani, nem mindegy? :)
--
PtY - www.onlinedemo.hu, www.westeros.hu
- A hozzászóláshoz be kell jelentkezni
Egészen addig, ameddig nem IO hiányos a rendszer de.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Az IO hiányos rendszer jellemzően IOPS-ban gyenge, ehhez meg az nem kell.
- A hozzászóláshoz be kell jelentkezni
Backuphoz? Haha, egyik géppel rendszeresen volt abból problémánk, hogy a PostgreSQL nekiállt backupolni éjjel úgy ~40-45 Gb-nyi adatbázist és időnként komolyan veszélyeztette a backup az oldal működését, akkora IO-t generált a diskeken. 4x10 vagy 15kRPM SATA disk ftw.
Öröm volt migrálni a DB-t arról a gépről egy újra, amiben végre volt külön SSD storage az adatbázisnak. (Sajnos az oldal még onnan fut, de az nemigazán csinál nagy IO-t, max a static tartalom, de az a DB-hez képest lóf...)
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Négy tengely komolyabb terheléshez marhára kevés, pláne, ha duplán használod (olvasol és írsz is rajta egyszerre nagy mennyiségben). Sajnos a legtöbben csak az elérhető hely méretére szokták kalkulálni a diszkeket, ami otthon/kkv szektorban elmegy, de nagyobb terhelés esetén iops-ra köll lőni - inkább sok kisebb diszkkel, mint kevés naggyal. (A méret adja a helyet, a tengely meg az io-teljesítményt...)
- A hozzászóláshoz be kell jelentkezni
Mentségemre szólva, nem igazán volt beleszólásom, hogy mit raknak alánk. Mikor meg már felmerült, hogy ezt talán most már igazán rendbe kellene tenni, eszünkbe se jutott HDD-ben gondolkodni a DB alatt.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Jol hangzik. Tenyleg rakjak be 7db kis 10k hdd-t valami raidbe es jobb lesz mint 1TB hdd.
Ssd eseten is szamit a tengely?
- A hozzászóláshoz be kell jelentkezni
Az áramfogyasztása, hőtermelése biztosan jobb lesz :)
Elég sok ára van a sok kis HDD-nek az 1 naggyal szemben, csak kérdés, hogy megéri-e.
Sakk-matt,
KaTT :)
- A hozzászóláshoz be kell jelentkezni
Meg az egységnyi idő alatt elvégzett I/O műveletek számában is, és storage méretezésénél ez is legalább olyan fontos, ha nem fontosabb, mint a nettó méret.
- A hozzászóláshoz be kell jelentkezni
nyílván de közel sem annyira, mert úgyis az interfész/vezérlő/whatever lesz a szük keresztmetszet, nem az SSD.
- A hozzászóláshoz be kell jelentkezni
Az NVMe SSD a megoldás erre. :)
- A hozzászóláshoz be kell jelentkezni
Válaszoltam. :)
- A hozzászóláshoz be kell jelentkezni
Na sziasztok!
Elnézést kérek, hogy csak dobtam ide egy topicot aztán ide se bagóztam, de annyira belemerültem a probléma megoldásába, hogy csak oda koncentráltam. :) Vegyük sorra akkor, hogy Miért, Mit, Hogyan.
Miért:
- A VPS-ek csak minimális webkiszolgálók, nem rendelkeznek nagy erőforrásokkal. Egy 1GB-os SQL import is képes megfektetni, akárcsak az dump. Ilyen "erőforrás igényes" folyamatokat pedig nem engedhetünk meg napi szinten mert a honlapnak működnie kell. Volt már, hogy dump alatt a honlap nem volt elérhető. (Na ilyen már nem lesz több)
- Mint mondtam, a honlapnak 0-24, 7/7 mennie kell. Ne arra "fecsérelje az erejét a gép, hogy nekem dumpoljon
- A backup szerver itt van lokálisan, a VPS meg messze valahol. Az adatok közvetlen SSH útján jönnek-mennek (scp, rsync, rsnapshot, stb). Nem szoktunk olyan webes megoldásokat alkalmazni mint phpMyAdmin vagy cPanel, ismét azért, hogy ezzel se kelljen foglalkoznia a VPS-nek. Egyszerű legyen a szerver, minél kevesebb funkcióval.
Mit:
- MySQL dumpok kellenek a honlapról arra az esetre (jaj, nehogy ilyen történjen akármelyikünkkel), ha a honlap kompromittálódik vagy sérül. Ilyenkor a legfontosabb ami kell: /var/www mappa, valamint az sqldump. (meg persze opcionálisan a /etc/nginx mappa mindenestül, hogy ezzel is kevesebb idő menjen el, sőt a /etc/php.ini és /etc/php-fpm.conf)
- Az SQL adatbázisról legyen elég a komplett mentés hetente vagy havonta. Viszont legyen napi mentés, hogy bármelyik időpillanatra vissza lehessen állni.
Hogyan: (most jön a lényeg,hogy oldottam meg)
- A legelső hozzászólás blackluck-tól (köszönöm utólag is) pontosan az amire én is gondoltam. gyakorlatilag pontosan erre találták ki. Azonban gondjaim adódtak a használatával. Lehet járatlanságom miatt, de egyszerűen nem tudtam visszaállítani adatokat a teszt rendszeren, hiába voltak meg a backup-ok. Valamiért minden helyreállítás után azt az üzenetet kaptam, hogy sikeres volt, de mégse jött vissza mondjuk egy droppolt tábla.
- További kutatás után találtam egy remek Python "alkalmazást" ami az XtraBackup-ot felhasználva felhasználóbaráttá teszi a használatot. A lényege, hogy a mentéseket ő maga elintézi, neked csak user+pass kombót, a mentés helyét és a teljes mentés helyét kell egyszer megadni a konfigurációjába. Onnantól ő a megadott mappába lementi az inkrementális mentéseket a megjelölt mappában lévő teljes backup alapján. Kellett kicsit turkálnom a kódban, ugyanis két hibába futottam bele.
- Az első hiba a futtatás volt. A srác aki a script-et csinálta, debianon tesztelte csak és ennek megfelelően hardcode-olta a service újraindítás metódusát. Megkerestem a megfelelő fájlt, átírtam benne a MariaDB szerver indítását, leállítását vezérlő sort és átírtam.
-- command = ['/etc/init.d/' + service_name, action]
++ command=['systemctl' + action, service_name]
Innentől már futottak a mentések.
- Cron-ba beállítottam magamnak a teszt rendszeren egy óránkénti mentést és néha-néha felmegyek a teszt környezetbe, kitörlök egy táblát, hozzáadok egy új usert, felveszek új táblát, vagy épp új adatbázist, stb
- A második hiba az első visszaállításnál jelentkezett. Ugyanis lefutott a visszaállító script, azonban leállt a MySQL szerver és nem tudtam sehogy se újraindítani. Szó szerint sehogy, se safe módban, se reboot után. Szóval kilőttem a script-el valahogy véglegesen. :) Na, majdnem feladtam, mikor rájöttem, hogy a /var/log/mariadb/mariadb.log hibaüzenet szerint a programban megadott "innodb_log_file_size" különbözött a valóstól. Hála az égnek mivel kiírta a valós méretet is, Crtl+C, Ctrl+V-vel meg is oldottam.
Szóval így csináltam meg az inkrementális backup-ot a mysql adatbázisomról. Kicsit nyakatekert, de ha már valaki leírja, hogy mit kell csinálni akkor utána az egész beállítása maximum 5 perc, de legyen 10 mert lassan írok.... :)
Erről a megoldásról mi a véleményetek?
- A hozzászóláshoz be kell jelentkezni
"További kutatás után találtam egy remek Python "alkalmazást" ami az XtraBackup-ot felhasználva felhasználóbaráttá teszi a használatot.": mentés idejére leállítja a szolgáltatást (mysqld)? Ez azért kritikus (nálunk), mert a mentés lehet gyors, de mikor lőjük ki 2-20 percre a DB-t?
Update: kipróbáltam, nem állítja le a szolgáltatást...
Update2: Játszottam vele 1 órát. Fullbackup tök gyors, incremental néha lassabb mint a full (összesen 4-5GB-ról beszélünk), pedig a delta fáljok kicsik, pár 100 sor ment be. Van benne database/table megadási lehetőség, azaz hogy mit mentsen csak le, de ibdata fájlt mindig menti, abban az összes db adatrészei benne vannak.
Jópofa, tetszik, de szerintem nálunk marad a mysqldump --skip-table | gzip | sshpass...
- A hozzászóláshoz be kell jelentkezni
1etemi tanulmányaim alapján (nem nagy kedvenceim az adatbázisok, és szerencsére nem nagyon dolgozok velük élesben) a transaction log mentésével lehet a legcélszerűbben differenciális backupot csinálni.
A tranzakció log előnye, hogy mindig konzisztens visszaállást tesz lehetővé, és egy tisztességes DB esetén úgyis jelen van, csak el kell streamelni a backup vasra is.
Ha fájlrendszer szinten backupolsz, az azért lehet inkonzisztens, mert az adatbázis csak annyit garantál, hogy a fájlrendszer bármely pillanatképéből konzisztensen vissza tud állni az addig kiírt legutolsó tranzakcióig. Viszont a fájlrendszer szintű backup nem garantálja, hogy pillanatképet tudsz menteni, ha közben párhuzamosan fut a DB is, mivel lehet, hogy a DB B,A sorrendben írja a fájlokat, a mentés meg A,B sorrendben készül. Máris kész a baj. (Ha van olyan fájlrendszer, ami konzisztens pillanatképet tud csinálni, az elvileg elég lehet, ehhez a részhez nem értek.)
Azok a differenciális backupok, amik nem eleve differenciálisan írt adatokon (pl log fájlok, vagy verziókezelő kommitok eleve differenciális formában adottak lehetnek) futnak, természetüknél fogva számításigényesek (pl egy rsync egy rakás hash-t végigszámol), és ha a tárolás nem direkt erre van kihegyezve, akkor előfordulhat, hogy egyáltalán nem hatékonyak. Például ha egy update véletlenszerűen teleszór egy nagy fájlt, akkor peches esetben a differenciális mentés akkora is lehet, mint az eredeti. A tranzakció log viszont természeténél fogva a műveletek számával skálázódik. A legtöbb esetben szerintem az lesz a tuti. (Ha relatíve kevés sor változik a táblában.)
Ha mindenképpen differenciális kell, de a hálózat gyors, akkor meg lehet próbálni teljes backupot csinálni (leállással vagy anélkül, ahogy a szerver támogatja), és a backup szerveren diffelni a tömörítetlen állományt amikor már ketyeghet tovább az adatbázis szerver. Ha szerencséd van, akkor talál néhány egyforma blokkot és tud tömöríteni.
Szerk: Thread necromancer lettem egy kicsit.
- A hozzászóláshoz be kell jelentkezni
mysqldump > weekly
patch -o weekly.tmp < incremental-daily-0
mysqldump > daily && diff -ruN weekly.tmp daily > incremental-daily-1 && rm daily
rm weekly.tmp
Persze a patcheket folyamatosan ra kell tolni mielott elkeszulne az uj incremental.
Igy teljes sql dump lesz napra visszavezetheto allapotban.
A masik megoldas pedig egy git repo hasznalata. mysqldump && git commit.
- A hozzászóláshoz be kell jelentkezni
A klasszikus backup eszkozok is jok lehetnek. Amit hasznalok most az igy mukodik tomoren:
- Agent alapon helyi mysql felhasznaloval fs szinten konzisztens allapotba hozza a dbt.
- kernel modul segitsegevel fs snapshot szeruseget hiz letre.
- elengedi a mysql write lockot.
- letolti az fs snapshotot.
- deduplikalva es tomoritve tarolja es replikalja tobb telephelyre valamint szalagra.
A szervert egy boot cd segitsegevel helyre tudod allitani.
A mysql adatfajlokat sajnos csak file szinten tudja ertelmezni.
A backup letoltese a hatterben zajlik es nem okoz szolgaltatas kiesest. A write lock max 2 mp.
Ez egy fizetos megoldas.
- A hozzászóláshoz be kell jelentkezni
Siman jo oreg mysql-el megcsinalhato. Ha beallitod a replication opciot, az osszes irast dump-olja egy visszajatszhato file-ba a mysql. Ha 1G-t elerte, kezd uj file-t. Namost egy paranccsal is ki lehet kenyszeriteni az uj file-t, ha tehat pl. 5 percenkent kezdesz egy uj file-t, akkor a teljes dump + replication bekapcsolassal 5 perces pontossaggal barmilyen allapotot vissza lehet jatszani. Sot, a replication client-el jatszva szerintem meg azon belul is menni fog, csak engem sose erdekelt annyira.
- A hozzászóláshoz be kell jelentkezni
Ma is tanultam :) Köszi.
### ()__))____________)~~~ ########################
# "Do what you want, but do it right" # X220/Arch
- A hozzászóláshoz be kell jelentkezni
Egyes pont: Profile... Profile... Profile..
Mennyi idő a dump.
Mennyi idő a dump tömörítése? (mivel vagyon tömörítve?... ugye tömörítve van?)
Mennyi idő a site tar gézája? (miért pont tar géza?, van szebb jobb)
Mennyi idő az rsnapshot?
Mekkora a dump?
Mekkora a tömörített dump? (7zip simán ráfelezhet a gézára)
Mekkora a website géza?
Kettes pont: technikai kérdések:
Hogyan (nem van) biztosítva a db és a website mappa egymással való konzisztenciája?
Milyen gyakran változik a schema?
Milyen messzire akartok visszanyúlni tudni?
Milyen gyorsan kell tudni helyreállni tüzes menykő hullása esetén?
Hogyan (nem van) megoldva a backup off-site replikációja?
https://www.mcdruid.co.uk/content/comparison-of-compression-methods-for…
### ()__))____________)~~~ ########################
# "Do what you want, but do it right" # X220/Arch
- A hozzászóláshoz be kell jelentkezni
ott van az innobackupex/xtrabackup: le sem kell állítani a mysql szervert, inkrementális backupot is tud, nem csak perconaval működik.
- A hozzászóláshoz be kell jelentkezni