SQL szerver db mentés
Adatmentési típusok
1. FULL
– minden adatelem mentésre kerül
– minden köztes napló is mentésre kerül
– minden adatelem mentésre kerül
– minden köztes napló is mentésre kerül
2. BULK LOGGED szintű
– a bulk copy parancs nem ment ődik le, ekkor egy teljes mentésre is szükség lehet
3. SIMPLE
– nincs napló mentes
– BULK COPY nem naplózott
Teljes adatmentés (Konzisztens mentést adhat) lépései:
– adatbázis zárolás, minden tranzakció blokkolása
– a naplóban megadni a kezd SLN-t
– adatbázis zárolás felengedése
– adatbázis tartalom mentése
– adatbázis zárolás, minden tranzakció blokkolása
– jelezni a naplóban a záró LSN-t
– adatbázis tartalom felengedése
– a köztes szakasz napló bejegyzéseinek mentése
– adatbázis zárolás, minden tranzakció blokkolása
– a naplóban megadni a kezd SLN-t
– adatbázis zárolás felengedése
– adatbázis tartalom mentése
– adatbázis zárolás, minden tranzakció blokkolása
– jelezni a naplóban a záró LSN-t
– adatbázis tartalom felengedése
– a köztes szakasz napló bejegyzéseinek mentése
[ BACKUP DATABASE db_nev TO DISK | TO TAPE WITH INIT ]
Differenciális adatmentés
-Induló teljes mentést igényel
-A legutóbbi teljes mentés óta eltelt változásokat menti le
-Helyreállítási hatékonyságát növeli
-Több célhely megadható egyszerre
-Célszerű időszakosan megismételni
-Induló teljes mentést igényel
-A legutóbbi teljes mentés óta eltelt változásokat menti le
-Helyreállítási hatékonyságát növeli
-Több célhely megadható egyszerre
-Célszerű időszakosan megismételni
[ BACKUP DATABASE db_nev TO DISK | TO TAPE WITH INIT WITH DIFFERENTIAL ]
Napló adatmentés
-Induló teljes mentést vagy részleges mentést igényel
-A napló bejegyzéseket menti más helyre
-A mentés után csonkolódik a naplófile
-Helyreállítási hatékonyságát növeli
-Több célhely megadható egyszerre
-Célszerű időszakosan megismételni
-Induló teljes mentést vagy részleges mentést igényel
-A napló bejegyzéseket menti más helyre
-A mentés után csonkolódik a naplófile
-Helyreállítási hatékonyságát növeli
-Több célhely megadható egyszerre
-Célszerű időszakosan megismételni
Helyreállítás SQL parancs:
RESTORE DATABASE dd FROM DISK=device WITH REPLACE
Az integritási helyreállítás szabályozása:
RESTORE … WITH RECOVERY | WITH NORECOVERY
RESTORE DATABASE dd FROM DISK=device WITH REPLACE
Az integritási helyreállítás szabályozása:
RESTORE … WITH RECOVERY | WITH NORECOVERY
Adathelyreállítás
RESTORE: az állományok adattartalmának helyreállítása
RECOVER: az adatok integritásának helyreállítása
RESTORE: az állományok adattartalmának helyreállítása
RECOVER: az adatok integritásának helyreállítása
Lépések:
– adatfileok visszaállítása (restore)
– naplók tartalmának újrajátszása (redo)
– az integritás helyreállítása (recover)
– adatfileok visszaállítása (restore)
– naplók tartalmának újrajátszása (redo)
– az integritás helyreállítása (recover)
A helyreállítás előtt célszerű még egy napló mentést végezni!
Több elemnél a sorrend:
FULL mentés helyreállítása,
DIFFERENTIAL mentések helyreállítása
FULL mentés helyreállítása,
DIFFERENTIAL mentések helyreállítása
RESTORE működési módjai:
Recovery mód:
• Nem teljes tranzakciók adatai törlődnek,használható a DB
No recovery mód:
• Nem törl dnek tranzakció adatok, várja a folytatást, nem használható a DB
Standby mód:
• Nem teljes tranzakciók adatai külön állományba lement dnek, kés bbi helyreállításkor felhasználhatók, közben használható a DB
• Nem teljes tranzakciók adatai törlődnek,használható a DB
No recovery mód:
• Nem törl dnek tranzakció adatok, várja a folytatást, nem használható a DB
Standby mód:
• Nem teljes tranzakciók adatai külön állományba lement dnek, kés bbi helyreállításkor felhasználhatók, közben használható a DB
———————————————-
DB mentés:
1. Teljes adatbázis mentés (elsõdleges szerverre, legalább naponta egyszer):
BACKUP DATABASE [dbname] TO DISK = N’D:\Ment\dbname_napi.bak’ WITH NOFORMAT, INIT, NAME = N’dbname-
Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
2. Elkészült mentés átmásolása a másodlagos szerver egy megosztására:
xcopy d:\ment\dbname_napo.bak \\backsrv\ment\ /r /y
3. Ha nem megengedhető az adatvesztés, hogy egy egész nap elvesszen, akkor rendszeres tranzakciós
mentés futtatása is szükséges:
BACKUP LOG dbname TO DISK = ‘D:\Ment\Log\’+@datum WITH NOFORMAT, INIT
4. Mozgassuk át a tranzakciós log mentést a másodlagos szerverre:
move d:\ment\log\*.* \\backsrv\ment\log
BACKUP DATABASE [dbname] TO DISK = N’D:\Ment\dbname_napi.bak’ WITH NOFORMAT, INIT, NAME = N’dbname-
Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
2. Elkészült mentés átmásolása a másodlagos szerver egy megosztására:
xcopy d:\ment\dbname_napo.bak \\backsrv\ment\ /r /y
3. Ha nem megengedhető az adatvesztés, hogy egy egész nap elvesszen, akkor rendszeres tranzakciós
mentés futtatása is szükséges:
BACKUP LOG dbname TO DISK = ‘D:\Ment\Log\’+@datum WITH NOFORMAT, INIT
4. Mozgassuk át a tranzakciós log mentést a másodlagos szerverre:
move d:\ment\log\*.* \\backsrv\ment\log
Helyreállítás:
1. A teljes mentés vissza állítása csak olvasható (Read only) módban:
RESTORE DATABASE dbname FROM DISK = ‘d:\ment\dbname_napi.bak’ WITH NORECOVERY
2. Szükség esetén visszaállíthatóak a tranzakciós log mentések (sorrendben), majd az utolsó fájl visszaállítása után
WITH RECOVERY opcióval online állapotban hozhajtuk a tartalék adatbázist
RESTORE LOG
RESTORE DATABASE dbname FROM DISK = ‘d:\ment\dbname_napi.bak’ WITH NORECOVERY
2. Szükség esetén visszaállíthatóak a tranzakciós log mentések (sorrendben), majd az utolsó fájl visszaállítása után
WITH RECOVERY opcióval online állapotban hozhajtuk a tartalék adatbázist
RESTORE LOG
SQL scriptet beütemezzük job-ként [ SQL management studio "SQL Server Agent" -> "Jobs" ] vagy osql parancsként futtassuk: --- DECLARE @name VARCHAR(50) DECLARE @path VARCHAR(256) DECLARE @fileName VARCHAR(256) SET @path = 'C:\db_bacup\' DECLARE db_list_cur CURSOR FOR SELECT name FROM master.dbo.sysdatabases WHERE name NOT IN ('master','model','msdb','tempdb') OPEN db_list_cur FETCH NEXT FROM db_list_cur INTO @name WHILE @@FETCH_STATUS = 0 BEGIN SET @fileName = @path + @name + '.bak' BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, INIT FETCH NEXT FROM db_list_cur INTO @name END CLOSE db_list_cur DEALLOCATE db_list_cur ---
Megjegyzések
Megjegyzés küldése