Mysql vostanovlenie - Disaster Recovery

Disaster Recovery

Itt megvitassák, hogyan lehet visszaállítani az adatok után:

  1. operációs rendszer meghibásodása
  2. áramszünet
  3. fájlrendszer összeomlás
  4. hardver hiba (merevlemez, alaplap.)

Fogjuk használni a MySQL szerver verzió 4.1.8. Feltételezzük, hogy az adatokat tárolják a InnoDB mechanizmus, amely támogatja a tranzakciókat, és az automatikus helyreállítás hibák. Azt is feltételezzük, hogy a MySQL szerver idején a kudarc terhelés alatt. Ha nem ez a helyzet, nem helyreállításra van szükség.

Az esetek 1) és 2)

Ezekben az esetekben, akkor feltételezhetjük, hogy a MySQL lemez adat újraindítása után az operációs rendszer. Az újraindítás során az adatok konzisztenciája InnoDB fájlok miatt az összeomlás, de InnoDB szól annak jegyzőkönyvei, van egy lista a fogvatartottak (amelynek eredményeit nem lehet visszaállítani a fájl) befejezett és a folyamatban lévő ügyletek, automatikusan visszaállítja hiányos, és visszaállítja az eredményeket a befejezett tranzakció fájlt. Információ a helyreállítási folyamat eljut a felhasználót a MySQL error log. Kivonat a percben:

Az esetek 3) és 4)

Ezekben az esetekben, úgy véljük, hogy a MySQL lemez adat újraindítása után a rendszer; mivel a blokkok száma a lemezen tárolt adatokat nem lehet olvasni, MySQL nem indítható be sikeresen. Nos, azt formázza a meghajtót, vagy helyezzen be egy újat, és itt az ideje, hogy visszaállítsa adatainkat a mentést. ah, mi volt az ideje, hogy vigyázzon rájuk! Vessünk egy lépést hátra, és dolgozzon ki egy adatmentési politikát.

Policy adatmentési

Mindannyian tudjuk, hogy az időszakos mentéseket (csúszópénz) meg kell tervezni előre. Teljes visszavonás (pillanatfelvételek az adatok egy adott időben) segítségével létrehozott több MySQL eszközöket. Melegen hengerelt vissza (Hot Backup) InnoDB az online (nem blokkoló) fizikai (az adatfájlokat) rollback. mysqldump az online logikai mentés, amely azt fogja vizsgálni később a vitát. például:

Ez létrehoz egy biztonsági másolatot az összes InnoDB-táblát az összes adatbázisból zavarása nélkül az írási / olvasási e táblázatokat. A tartalom a .sql fájl - egy sor INSERT SQL-üzemeltetők. (Tegyük fel, hogy ez a teljes biztonsági másolatot 01:00 vasárnap, amikor a terhelés alacsony.)

Teljes mentést is szükség van, de nem mindig kényelmes. Ezek nagy backup fájlokat, és időbe telik. Ezek nem optimális abban az értelemben, hogy ismét megtartják az adatokat, amelyek nem változtak, mivel az utolsó teljes mentés. Több optimálisan inkrementális mentések (bár készítsen biztonsági másolatot gyógyulási idő idő).

Ehhez inkrementális mentések, meg kell kijavítani őket. Ahhoz, hogy a szerver tárolja információt a változások a fájl alatt adatmódosítás, meg kell futtatni a --log-ikont. Ezután minden SQL-kimutatás, az adatok módosítását lesz egy fájlba (vagy ahogy mi hívjuk „MySQL bináris log”). Nézzük meg a könyvtár tartalmát MySQL adatbázis szerver fut néhány napos --log-bin. Látni fogjuk itt MySQL bináris rönk:

Minden alkalommal újraindul, a MySQL szerver leáll a felvétel az aktuális bináris log, létrehoz egy új, ezen a ponton egy új fájlt lesz a jelenlegi (amelyekben van egy rekord). A váltás történhet kézzel parancs SQL ÖBLÍTŐ rönköt. index fájl tartalmazza az összes bináris naplók tárolt könyvtár (Felhasználása replikáció).

Ezek MySQL bináris naplók tükrözik a változásokat. Kissé viselkedésének módosítására mysqldump történt, hogy váltani bináris protokoll idején egy teljes biztonsági mentést; lássuk, mi a neve az új aktuális bináris protokoll:

Most látjuk a könyvtár adatbázis fájlt gbichot2-bin.007. A .sql-fájl tartalmazza a következő sort:

Ez azt jelenti, hogy minden adat módosítását tükrözi a bináris naplók idősebb gbichot2-bin.007. jelen a .sql-fájlt. és minden adat változások tükröződnek a fájl gbichot2-bin.007 vagy újabb, nincs in-.sql fájlban. Hétfőn délután 1 órakor vagyunk, hogy állítsa vissza a módosításokat, csak írja be a parancsot mysqladmin --flush-naplók. amely megteremti gbichot2-bin.008. Közötti módosítások 1 óra vasárnap délután, amikor a teljes biztonsági mentést, és 1 óra a nap hétfő tükröződik a fájl gbichot2-bin.007 készült. Másolja ezt a fájlt egy értékes hely biztonságos tárolásának backup (a szalag, hát gép, DVD-ROM, stb.)

Kedd 01:00, végre MySQLadmin --flush-naplók. Közötti módosítások 1 óra a nap, hétfőn és kedden, 1 óra a nap tükröződik gbichot2-bin.008 fájlt. És másoljuk be a biztonságos tároló.

Ezek MySQL bináris rönk vegye fel lemezterületet; időről időre meg kell engednünk. Egy jó ötlet, hogy törölje a bináris naplókat, amelyek soha nem kell, vagyis Miután egy teljes biztonsági mentést:

Vissza kilábalás mentést

Szóval, ez a baleset, mondjuk szerdán reggel 8 órakor. Mi visszaállítani az utolsó teljes mentés van, a vasárnap 13:00. Mivel ez csak egy sor SQL-üzemeltetők, a helyreállítási folyamat nagyon egyszerű:

Most már az adatokat olyan állapotban, amelyben azokat vasárnap 13:00. Az inkrementális mentések csak távolítsa el őket a biztonságos tároló és csinálni:

Most, adataink vannak az állam kedden, 13:00. Még mindig hiányzik a változásokat, hogy pont addig a pontig, a kudarc. Annak érdekében, hogy ne veszítse el őket, szükséges volt, hogy a MySQL szerver megtartja bináris bejelentkezik az eszköz (RAID, SAN lemezek.) Más, mint az egyetlen, ahol tárolja az adatfájlokat, majd ezeket a naplókat nem voltak a tönkrement lemezen. Ha vigyázott rá (most csináljuk, ígérjük!), Mi lenne gbichot2-bin.009 fájlt. és mi lett volna akkor, adataink ismét lenne, mint az az összeomlás pillanatában (semmi elveszett volna). Mi működhetne még rugalmasabban; ha ahelyett, hogy hajlandó végrehajtani téves DROP DATABASE. tudtuk visszaállíthatja a változásokat gbichot2-bin.009 idején közvetlenül megelőző DROP DATABASE, hogy adataink jöttek az állam közvetlenül megelőző kivégzés! Például, ha tudnád, hogy a nyilatkozatot a hiba kiváltó körül 07:30, ő forgassa vissza az állam 7 órakor (30 perces tartalék):

Ez egy kicsit zavaros (elveszíti körülbelül fél óra változások), de elegendő bizonyos esetekben; azokban az esetekben, ahol valóban nem engedheti meg magának, hogy veszíteni semmit, a futtatni kívánt mysqlbinlog előtt a DROP DATABASE. Számos módja van, hogy ezt, itt van egy:

Mi eltávolítja az összes sort kezdve a DROP DATABASE, fenntartása és működtetése a_temp_file.sql

mysql

Aludni:

  1. Abban az esetben OS hiba vagy áramszünet InnoDB nem a szükséges munkát.
  2. MySQL szerver mindig indítható --log-ikont. vagy akár --log-bin = some_safe_media_different_from_data_disk ha van egy ilyen eszköz; egyébként jó lesz kiegyensúlyozott terhelés a lemezt (a termelékenység növelésével).
  3. Rendszeresen csinál egy teljes biztonsági mentést az adatok felhasználásával az utolsó mysqldump parancs fent látható (ez kell, hogy legyen egy online, nem blokkoló backup).
  4. Az időszakos inkrementális mentések segítségével MySQLadmin.

1. megjegyzés: a valós életben lenne szükség felvételét lehetőségek --user és --password (és adja meg a megfelelő felhasználói név és jelszó) a mysqldump és mysql programokat, hogy így létrehozza a kapcsolatot a MySQL szerverhez.

2. megjegyzés: A eltávolítása MySQL bináris rönkök mysqldump --delete-master-naplók veszélyes lehet, ha a szerver egy replikációs master szerver, lásd a „replikációs” magyarázza, hogy mit kell ellenőrizni, mielőtt törli a MySQL bináris naplók.

Kapcsolódó cikkek