Backup & recovery, SQL Server Agent, Alerts Jiří Tomeš Administrace MS SQL Serveru (NDBI039)
Úvodní motivace O čem to dnes bude Strategie zálohování Typy zálohování SQL Server Agent Modely pro obnovení Alerts Zálohovací zařízení Použité prameny a zdroje Automatická záloha Prostor pro dotazy
Smysl zálohování databází : Je třeba umět s daty nejen pracovat, ale také se o ně i starat Úvodní motivace Může se totiž stát, že o ně můžeme nenávratně přijít (např. odejde disk, ) Zálohováním se zmenšují transakční logy Zálohovaná data můžeme v případě havárie obnovit Podíváme se, jaké možnosti zálohování a obnovy nabízí SQL server!!!
O zálohovacích strategiích Strategie týkající se zálohování : Obsahuje záložní a obnovovací část Definuje se typ, četnost záloh, povaha a rychlost hardwaru Definuje, jak se mají zálohy testovat a na jaká media se mají ukládat Zálohu je nutné si vyzkoušet Kdo je zodpovědný za provádění a jak ho provést s minimalizací ztráty dat Doporučené je používání dokumentace a komentářů
Vybíráme vhodnou strategii Poté, co jsme si vybrali vhodný model, je třeba danou strategii realizovat. Abychom dosáhli optima, je třeba zvážit : Jak často přistupujeme k databázím Jak často je měníme a aktualizujeme Kolik potřebného místa na zálohu budeme potřebovat sp_spaceused http://msdn.microsoft.com/en-us/library/ms188776.aspx Vybrat si správný typ zálohy (ruční rozhodně NE)
SQL server rozlišuje následující typy: Úplná záloha (FULL) Záloha kompletní databáze Rozdílová záloha (DIFFERENCIAL) Záloha změn po provedení úplné zálohy dat Typy zálohování Záloha transakčního logu (TRANSACTION LOG) Lze provést i v případě, že není k dispozici soubor s daty Např. při selhání disku Záloha souborů a skupin (FILES & FILEGROUPS) Zálohujeme vybrané soubory nebo celé skupiny Offline data není možné zálohovat!!!
Základní typy modelů pro SQL server: Full Recovery model Kompletní ochrana proti selhání Možnost obnovení dat až do nějakého časového okamžiku (k bodu selhání) V případě obnovení z transakčního logu je třeba, aby byl neporušený Bulk Logged model Modely obnovení obsahuje všechny informace jako FULL, ale ve zjednodušené podobě obnovení dat vždy jen na konci zálohy (nepodporuje libovolný časový bod) Simple Recovery model stejný jako BULK, pouze jiné chování v kontrolních bodech (CHECKPOINTS)
Obnovení do časového okamžiku
Jak zjistit / nastavit model Přes SQL server Management Studio Databases -> User (System) database -> Properties -> Database properties -> Options -> Recovery model list box Pomocí dotazu (Transact SQL) SELECT name, recovery_model_desc FROM sys.databases WHERE name = model ; GO Zjištění modelu Nastavení modelu ALTER DATABASE nazev_db SET RECOVERY FULL BULK_LOGGED SIMPLE ;
FULL backup záloha 1/2 Simple Recovery model bere v úvahu potenciální pracovní ztráty v případě havárie každá aktualizace = zvýšení ztráty záloha = ztráty se vynulují TSQL příkaz BACKUP DATABASE [db_name] TO DISK= c:\zaloha.bak WITH FORMAT; GO
FULL backup záloha 2/2 FULL & Bulk-logged Recovery model Záloha transakčního logu je zde též potřebná TSQL příkaz BACKUP DATABASE LOG [db_name] TO DISK= c:\zaloha.bak WITH FORMAT; GO
Záloha FULL B&R pomocí SSMS 1/3 database -> kontextové menu -> task -> backup jméno (povinně) + popis (volitelně) Obnova database -> restore database 1) Zvolíme zdroj (FROM device) 2) Procházet -> vyberu soubor se zálohou 3) Jméno nové databáze (TO database) 4) Zvolíme vybranou zálohu, co bude obnovena
FULL B&R pomocí SSMS 2/3 Záloha (backup)
FULL B&R pomocí SSMS 3/3 Obnova (recovery, restore)
DIFFERENCIAL backup Zaznamenávají se pouze změněná data od vytvoření plné zálohy (je to rychlejší než plná záloha) Pro obnovení rozdílné zálohy je třeba mít obnovený i její příslušný základ Hodí se, je-li podmnožina databáze upravována častěji než zbytek (spotřeba menší režie) Její použití může snížit počet zálohování logu, které bude potřeba obnovit Zachycují stav všech rozsahů (kolekce 8 fyzicky souvislých stránek)
TRANSACTION LOG backup Pouze pro FULL nebo BULK-LOGGED Recovery model Je potřeba mít před tím vytvořenou alespoň 1 plnou zálohu Doporučená je zejména častá záloha Mnohem kratší log Minimalizace možných ztrát Optimální interval zálohy závisí především na Velikost databáze Význam dat Zatížení serveru
FILE & FILEGROUP backup Cílem je zajistit zálohu 1 nebo více souborů bez zálohy celé databáze Pro SIMPLE recovery model se to týká pouze READ-ONLY souborů Základní typy obnovení: OFFLINE (podpora u SQL 2012) Databáze musí být v době obnovení OFFLINE, pak je provede obnovení a může být znovu ONLINE ONLINE Je-li databáze ONLINE v době obnovení, v době zpracování souborů (skupin) je daná instance OFFLINE a hned po jejich dokončení znovu ONLINE
FILE & FILEGROUP recovery Scénář (pro SIMPLE model) : Obnovit každý poškozený soubor z jeho poslední zálohy Obnovit poslední relevantní DIFFERENCIAL backup pro každý obnovený soubor a obnovit celou databázi RESTORE DATABASE name, name1,... FILE = filename,finaname1, FROM backup_of_file_and_file1_and_ WITH (NO)RECOVERY; RECOVERY = jiné zálohací zařízení
Zálohovací zařízení Je to vlastně soubor, kam lze zálohy ukládat SP_ADDUMPDEVICE sp_addumpdevice [@devtype=] device_type --možné hodnoty DISK (pevný disk) PIPE (roura v síťovém prostředí) TAPE (magnetická páska) [@logicalname =] logical_name --název zálohovacího zařízení [@physicalname=] physical_name --fyzická cesta k souboru, kam se bude ukládat Příklad: sp_addumpdevice DISK, test_dev, c:\test.bak
Automatická záloha Použijeme plánovač úloh Windows pro spouštění skriptu se zálohou Skript s příponou.cmd vyvolá vytvoření zálohy Vytvoření zálohy provedeme pomocí nástroje SQLCMD ProgramFiles\Microsoft SQL server\verze\tools\binn\sqlcmd.exe 90 pro SQL Server 2005 100 pro SQL Server 2008 ProgramFiles\..\SQLSCMD.exe U jmeno P heslo q BACKUP DATABASE [db_name] TO DISK= c:\zaloha.bak WITH NAME= N jmeno
SQL Server Agent Je služba systému Windows pro vykonávání naplánovaných administrativních úloh ( JOBS ) Používá SQL server pro ukládání informací k úloze 1 JOBS= jeden či více JOB kroků 1 JOB KROK= vlastní task (např. záloha databáze) Puštění je buď v reakci na nějakou událost nebo na požádání V případě, že nastane nějaká problém upozorní nás (zaznamená událost)
Komponenty SQL Server Agenta JOBS Sada akcí, které SQL server vykoná Lze spustit 1 i vícekrát, podle 1 či více plánů, jako reakce na 1 či více záznamů. sledovat úspěch / neúspěch, Úloha může běžet na 1 lokálním serveru nebo na více vzdálených serverech Pro spuštění lze též zavolat proceduru sp_start_job Každý JOB krok má svůj kontext zabezpečení SCHEDULES Určuje, kdy job běží 1 či více jobů může běžet na stejném plánovači Plánovač může definovat podmínky Kdykoliv se SQL server Agent spustí Jednou v určitý den a čas Při opakujícím se plánu Využití CPU počítače je definováno jako nečinné
Další komponenty SQL SA ALLERTS Ještě o nich bude řeč OPERATORS Definují kontaktní informace pro zodpovědnost za udržování 1 nebo více instancí SQL Serveru Operátor nemá informace o bezpečnosti a ani o možných principech zabezpečení SQL Server může upozornit operátory například prostřednictvím Emailu Pageru (pomocí služby emailu) NET SENDu
Server Agent a bezpečnost SQL Agent používá k řížení přístupu mimo sysadmin tyto ROLE: SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole Všichni mají přístup k Server Agentovi Subsystémy (pro zajištění bezpečnosti) : Předdefinovaný objekt (funkce) zodpovědný za JOB krok Proxy server má přístup k 1 či více subsystémům
Server Agent a SSMS Jak se k němu dostaneme Object Explorer -> SQL Server Agent
Události generované SQL serverem vstupující do logu Windows aplikace SQL Server Agent přečte aplikační log a srovná tyto události s těmi, které již definovaly alerty Definování alertu : Jméno alertu (nejvýše 128 znaků) Alerts Když agent najde shodu odstraní daný alert (zodpovědný za událost) Událost nebo podmínka, která alert spustí Akce, které při shodě provede SQL Server Agent
Alerts typy událostí SQL Server Events Error number (dojde k konkrétní chybě-má číslo) Severity level (upozornění pro danou chybu) Database (nastane-li v konkrétní databázi) Event text (událost obsahuje konkrétní řetezec) SQL Server performance conditions Object (sledovaná oblast výkonu) Counter (atribut monitorované oblasti) Instance (monitorované instance SQL serveru) Windows Management Introduction events (WMI) Namespace Query
Existuje i celá řada dalších typů zálohy, které se od uvedených liší jen velmi nepatrně třeba jen parametrem (např. READ-ONLY backup) Závěrečné shrnutí Zálohovat má vždy smysl, ale stojí nás i určitou režii Nutno vždy počítat s tím, že kdykoliv může dojít k nějakému neočekávanému chování či katastrofě Je vždycky dobré znát vlastnosti a přesné možnosti konkrétního serveru (podle používané verze)
Použité zdroje a prameny BACKUP & RECOVERY http://msdn.microsoft.com/enus/library/ms187048.aspx http://www.dbsvet.cz/view.php?cisloclanku=200504 1801 http://www.sqlteam.com/article/backup-and-restorein-sql-server-full-backups http://www.sqlservervideos.com/player/backupswith-managementstudio/ SQL Server Agent http://msdn.microsoft.com/en-us/library/ms189237(v=sql.105).aspx http://learnsqlwithbru.com/2011/12/15/start-sql-server-agent-from-sqlserver-management-studio/ Alerts http://msdn.microsoft.com/en-us/library/ms180982.aspx
Prostor pro dotazy Zeptejte se na to, co Vás zajímá DÍKY za pozornost během prezentace