2010. július 1., csütörtök

Exchange backup/restore 1.

Egy kolléga megkért, hogy segítsek neki pár dolog tisztázásában. A feladat adott volt: ügyfélnél, 2003-as Exchange-el, történt valami a levelezéssel, s emiatt mentésből vissza kellene állítani egy adott postafiókot. Ehhez egy mentést úgy kellene visszaállítani, hogy utána újra lejátsszuk a mentés óta keletkezett logokat, ezáltal naprakész állapotba hozva a delikvens levelezését.

Természetesen utánanézett a dolgoknak, viszont csak angol anyagot talált, magyarul valóban csak elvétve van erről iromány, így néhány fogalom nem teljesen volt érthető részére, ezért úgy döntöttem, kezdő szinten írom meg a doksit. Ha jól tudom, akkor nagy része még Exchange 2007 alatt is megállja a helyét.

Nem túlzottan belemélyedve, de felsorolva a szerepet játszó állományok típusai: értelemszerűen az adatbázis (edb, stm), a logok (log), illetve a checkpoint (chk). Szerencsére itt nem körkörös log volt beállítva (ugyanis nagyon régi mentés volt, ejnye :) ).

A backup típusa kétféle lehet: offline és online.

Offline, vagyis fizikai állomány-másolás. Előnye, hogy nincs szükség logok visszajátszására, hátránya, hogy ehhez le kell állítani a szolgáltatást (azaz addig senki nem levelezik), s természetesen tudnunk kell, hogy mit másolunk.

Online, vagyis mentőszoftver segítségével. Előnye, hogy észrevétlen, mert a szolgáltatást nem kell leállítani, illetve kihasználhatjuk a mentő-program előnyeit (differenciális és inkrementális mentés, adott programok esetén pedig a granuláris mentést). Hátránya viszont az, hogy tisztában kell lenni a kiadott parancsok használatával.

A helyreállítás szintén két szinten történhet: soft és hard recovery.

Soft recovery /r

- minden alkalommal lefug a SG minden tárolójára, ha bármelyiket csatoljuk

- még feldolgozatlan logok bejátszása, félbemaradt tranzakciók visszagörgetése

- véletlen leállás után újraindításkor automatikusan lefut

- offline mentés visszaállításakor is lefut

Hard recovery (Restore) /cc

- online backupból való visszaállítás esetén fut

- lementett és még feldolgozatlan logok visszajátszása

- ehhez szükséges a restore.env állomány, ez tartalmazza, hogy mely logokat játssza le

Ha már tisztáztuk az elméleti részét, lássuk a gyakorlatot.

A KB824126 cikk alapján először is természetesen létrehozzuk az RSG-t. majd következő lépésünk az RSG adattal való feltöltése lesz, itt máris kétfelé válik az utunk, a mentésünk típusa alapján.

  1. Hard recovery

Hozzávalók: a log fájlok és a restore.env ideiglenes mappában, adatbázis RSG könyvtárban és ízlés szerint a lejátszandó logok az RSG éles könyvtárában vagy egy másik könyvtárban.

Első lépésben a mentést állítjuk vissza, mondjuk a Windows beépített eszközével készült biztonsági másolatról. Az NtBackup a legelején megkérdi, hogy ugyan már, hova is tegye a mentett logokat és a restore.env-t. Ez az útvonal lesz megadva a későbbiekben használt parancs /cc paramétereként, mint ideiglenes könyvtár.

Ezen továbblépve máris újabb problémába ütközhetünk: ha kijelöljük a teljes Storage Group-ot, akkor az eseménynaplóban hibákat fogunk találni.

ExchangeIS 9635 - Failed to find a database to restore to from the Microsoft Active Directory. Storage Group specified on the backup media is 4cec8935-1fae-40e9-9839-9a3e73e0b7d8. Database specified on backup media is Public Folder Store (SBS), error is 0xc7fe1f42.

ESE Backup 920 - Information Store (4920) Callback function call ErrESECBRestoreGetDestination ended with error 0xC7FE1F42 Database not found.

End Restore to 'SBS\Microsoft Information Store\First Storage Group' 'Failed' Verify: Off Consult the backup report for more detail.

Ez ugye teljesen normális, hiszen a cikkben is le van írva, hogy a Public Folder-eket nem támogatja. Ugyanakkor viszont az egyenes következménye, hogy a restore.env mérete 0 lesz, illetve nem lesz visszaállítva az utolsó log-állomány sem. Előbbinek további következménye, hogy a /cc kapcsolóval nem fogjuk tudni lefuttatni a javítást.

Ha viszont csak a logokat és a Mailbox store-t pipáljuk be, akkor az ntbackup sem panaszkodik, s a visszaállítást is elvégezhetjük.

Még mielőtt megijednénk, természetesen visszaállítás után az

eseutil /mh "E:\ExData\RSG.edb"

segítségével lekérdezett állapot „Dirty” lesz.

A mentés óta történt változásokat a nem mentett logok bejátszásával tudjuk megkapni, ennek két lehetősége van:

  1. átmásoljuk a mentés óta keletkezett logokat a RSG éles log-mappájába (értelemszerűen az E00.log-ot ne is erőltessük)
  2. megadjuk a logok elérési útvonalát (jobb, ha nem az éles FSG log-útvonalát adjuk meg, hanem átmásoljuk valahova), ekkor a /f"E:\ExData\Remained logs" paramétert kell még az alábbi parancs után biggyeszteni (az „f” után nincs szóköz!)

Mindkét esetben a következő lépés az alábbi parancs futtatása (esetleg a /f kapcsolóval kiegészítve):

"%ProgramFiles%\Exchsrvr\bin\eseutil" /cc "E:\ExData\RSG Temporary"

Hatására lejátssza az ideiglenes könyvtárban található, lementett logokat (amelyekre a restore.env állomány utal), majd az „éles” logokat a korábban említett két lehetőség alapján. A végeredmény egy tiszta, naprakész adatbázis lesz, amit már csak csatolni kell, valamint az „éles” logokat tartalmazó könyvtárban (a. esetben az RSG log-mappája, b. esetben a megadott útvonalon) létrejön egy e00.log és e00.chk is – ezért nem szabad az FSG logjainak útvonalát megadni! Ezeket nyugodtan lehet törölni (a bejátszott logokkal együtt), hiszen az RSG az r00.log és r00.chk állományokat fogja használni. Az ideiglenes könyvtár tartalmát eleve törli, tehát ott már csak a könyvtár-struktúra marad.

A művelet ideje a logok mennyiségétől is függ, a kollégánál pl. 3 GB bejátszása bő egy óra alatt ment végbe.

Nincsenek megjegyzések:

Megjegyzés küldése