Ugrás a fő tartalomra

SQL szerver db mentés

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

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
[ 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
[ 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


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


Adathelyreállítás
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)

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



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

———————————————-

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

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

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