Az SQL Serverben több különböző igényeket kielégítő mentési módszer létezik. Fontos, hogy mindig a számunkra legoptimálisabb mentési eljárást válasszuk, hisz adatinknak baj vagy hiba esetén a gyors és konzisztens visszanyerése kulcsfontosságú. Ebben a cikkben a leggyakrabban használt mentési eljárásokkal ismerkedünk meg.
Például:
- Teljes mentés
- Különbségi mentés
- Tranzakció log mentés
- File csoport mentés
- Tükrözött mentés
- Rögzített mentés
A Teljes Mentés
Ebben az esetben minden adat mentésre kerül, ami az adott adatbázisban található. Ez a mentési eljárás visszaállítási modell független. Valamint ebben az esetben a lehető leggyorsabban történik a mentés, minimális erőforrás használat mellett.
A teljes mentés egyik legfontosabb jellemzője az, hogy a backup engine lapokat ír backup device-re, a sorrend figyelembe vétele nélkül. Valamint a sorrendi függetlenség miatt ezt a műveletet több szál közt osztja szét és így a gyorsaság csak az eszköz sebességétől függ. Ez a mentési eljárás használható az adatbázis újralétrehozására is.
A teljes mentésnél logikai inkonzisztencia léphet fel, a felhasználók bejelentkezett állapota és aktivitása miatt. Az SQL Server a következőképpen küszöbölheti ki ezt a problémát.
- Lockolja azt adatbázist és blockolja az összes tranzakciót
- Tesz egy jelölést a tranzakció logba
- Felengedi az adatbázis lockolást
- Menti az összes lapot
- Lockolja azt adatbázist és blockolja az összes tranzakciót
- Tesz egy jelölést a tranzakció logba
- Felengedi az adatbázis lockolást
- A két log jelölés közötti tranzakciókat hozzáfűzi a backup-hoz
Parancs:
BACKUP DATABASE <database_name> TO DISK=‘<directory>\<filename>’ WITH INIT
TO résznél a backup device-t lehet megadni (DISK,TAPE: explicit útvonalat lehet kijelölni)
WITH résznél több mint egy tucat paramétere lehet (MSDN-ben van leírás ezekről a paramtérekről)
Az INIT meg azt jelöli itt, hogy mindent írjon felül a backup eszközön
Különbségi mentés
Ebben az esetben az utolsó teljes mentés óta változott extenteket menti. (Például: A telje mentés éjfélkor történt, és 4 óránként van különbségi mentés. Így ez a mentés az éjfél óta eltelt változásokat menti) A mentés előnyei közé tartozik az, hogy a tranzakciós log mentéseinek számát csökkenti, csak teljes mentés után használható, valamint ez a mentési mód is visszaállítási modell független. Ez a mentési modell nem inkrementális backup ugyanis az inkrementális backup.
Az Extent map egy másik adatlap az adatbázisban. Minden bit az oldalon egy extent-et reprezentál, tehát amikor az extent változik, az extent bitje 0-ról 1-re változik. Teljes mentésnél minden bit 0-ra állítódik. Mivel az adatbázisok mérete korlátlan és az adatlapok mérete 8KB lehet, 8192 extentenként jön létre mapping oldal.
Parancs:
BACKUP DATABASE <database_name> TO DISK=‘<directory>\<filename>’ WITH DIFFERENTIAL
Tranzakció log mentése
Ez a mentési model az adatok egy részhalmazát tartalmazza és szükséges egy teljes mentés a visszaállításhoz. Tulajdonképpen az aktív logot menti, az előző log backup utáni Log Sequence Number-ével (LSN) kezdi. Mindaddig menti a tranzakciókat, amíg egy nyitott tranzakciót el nem ér. Ezt a mentési model teljes vagy bulk-logged recovery modell esetén használható.
Parancs:
BACKUP LOG <database_name> TO DISK=‘<directory>\<filename>’ WITH INIT
Filecsoport
Alternatív mentési stratégia a teljes mentéshez. Ugyanis az adatbázis mentése helyett az egyes filecsoportokat menti az adatbázisból. Kiindulásként szükséges egy mentés az össze filecsoportról. Viszont itt csak Teljes vagy Bulk-logged recovery modell szükséges, az adatok helyreállításához.
Parancs
BACKUP DATABASE <database_name> FILEGROUP = ‘<filegroup_name>’ TO DISK=‘<directory>\<filename>’
BACKUP DATABASE <database_name> FILEGROUP = ‘<filegroup_name>’ TO DISK=‘<directory>\<filename>’ WITH DIFFERENTIAL
Tükrözött mentés
Ennél a mentési eljárásnál minden backup létrehoz egy egyszeri másolatot az adatokról egy eszközön. Az adminisztrátor duplikálhatja ezt az esetleges eszközhibák miatt. (A duplikáció költséges és időigényes folyamat)
BACKUP parancs opcionális része:
[[MIRROR TO <backup_device> [,…n]][…next-mirror]]
Összesen 4 másolat létrehozása lehetséges, ebből 3 a MIRROR TO részben definiált
A tükrözött mentés korlátozásai egyik fontos korlátozása az, hogy az eszköznek az összes másolathoz ugyanolyan típusúnak kell lenni valamint mindegyiknek hasonló tulajdonságokkal kell rendelkeznie. Például: ha a backup disk-re történik, a másolatok is disk-re kell kerüljenek
Részleges mentés
Ennél a mentési eljárásnál lehetőség van írható és csak olvasható filecsoportok kezelésére. Az előző verziókban a backup a csak olvasható filecsoportokra terjedt ki, ami ugyebár nem változhatott.
Új paraméter: READ_WRITE_FILEGROUPS
Ebben az esetben a backup figyelmen kívül hagyja a csak olvasható filecsoportokat. Így időt és helyet takaríthatunk meg vele.
Példa:
BACKUP DATABASE PUBS READ_WRITE_FILEGROUPS TO DISK=‘C:\DEMO\BACKUP\PUBS1.BAK’