MSSQL – záloha a obnova MSSQL bez zálohovacího SW
Někdy je třeba zálohovat MSSQL např. 1x za hodinu a nejsou peníze na nákup zálohovacího programu. Ideální řešení je ukládat denně full zálohu (v případě velké databáze full jen 1x týdně a denně diff) a každou hodinu transakční log.
Ve full verzi MSSQL by šlo joby nadefinovat v agentu přímo v MSSQL, ale budu vycházet z free verze MSSQL Express, která agenty nemá a je nutné zálohy shedulovat např. ve Windows Sheduleru. Nejdříve je nutné přidat uživatele s oprávněním na zálohování, nastavil jsem mu SA oprávnění.
Je nutné zkontrolovat, zda jsou databáze ve FULL RECOVERY MODELu – viz minulý post. Nyní stačí vytvořit například ve složce c:\scripts SQL scripty pro FULL a TRANS zálohu.
sqlbackup_full.sql
DECLARE @FileName varchar(250)
SELECT @FileName='N:\bck\' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '-PiKo-full.bak'
BACKUP DATABASE PiKo TO DISK = @FileName
sqlbackup_trans.sql
DECLARE @FileName varchar(250)
SELECT @FileName='N:\bck\' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '-PiKo-trans.trn'
BACKUP LOG PiKo TO DISK = @FileName
Dále k nim vytvoříme batky pro sheduler (cesta o osql dle verze MSSQL)
sqlbackup_full.bat
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" -U pikobackup -P pikoheslo -i c:\scripts\sqlbackup_full.sql
sqlbackup_trans.bat
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" -U pikobackup -P pikoheslo -i c:\scripts\sqlbackup_trans.sql
Nyní stačí spustit FULL a poté TRANS batku (případně si ji naplánovat v sheduleru)
Takto by nám ale složka se zálohami rostla – pokud nemáme možnost přesunu např. na pásky, je dobré data komprimovat. Zvolil jsem GNU 7-ZIP (v aktuální verzi neuměla move to archive tak jsem nasadil alfa verzi 9.32. alpha – časem vyměním).
Update 30.4. – vyskytl se problém s
Error:
Duplicate filename:
Stačilo dát cestu napřímo, bez definice v souboru
2archive.txt
</del>
<del> N:\bck\*</del>
<del>
2archive.bat
<del>"C:\Program Files (x86)\7-Zip\7z" a -r -sdel N:\BackupSQL-7Z\SQLBACKUP-%date:~4,2%-%date:~7,2%-%date:~10%.7z @c:\scripts\2archive.txt</del>
"C:\Program Files (x86)\7-Zip\7z" a -r -sdel N:\BackupSQL-7Z\SQLBACKUP-%date:~4,2%-%date:~7,2%-%date:~10%.7z "z:\co_archivovat"
Tento job jsem nasheduloval na další noc před backupem (s rezervou, aby byl dokončen před spušěním další full), aby v případě obnovy druhý den nebylo nutné dekomprimovat data. Bude ještě nutné udělat mazání souborů starších než např. 7 dní, aby se mi nehromadily archívy.
No a následuje obnova přes klikátka – MSSQL Studio. Stačí se připojit do instance a viz komix:
Nejdříve klikneme na obnovu
Zadáme nový název (nebo původní a v otions zaklikneme přepsat), vybereme FROM DEVICE kde proklikáme na FULL zálohu a zaškrteme RESUME checkbox. Poté přepneme na záložku OPTIONS.
Jelikož budeme chtít obnovit i data z transakčního logu, vybereme v OPTIONS volbu viz screen
Databáze je obnovena, ale nelze ji používat a čeká na doobnovení transakčního logu. Tak mu ho dodáme
Vyklikat (ve verzi SQL2005 se musí po jednom, u novějších jsem netestoval) trans log a vždy dát Leave database nono-operational a u posledního nechat default nastaveni Leave database ready….
Il tuo sito mi ha aiutato molto sapendo molte cose, grazie mille.