StudioSystem

Automatyczna kopia bazy MSSQL w usłudze SSJob

Automatyczna kopia bazy MSSQL wykonywana przez usługę SSJob: konfiguracja w tabeli _jobs, trzy rodzaje kopii, harmonogram cykliczny i powiadomienia e-mail o wykonaniu zadania.

studiosystem.softwarestudio.com.pl/transakcje/
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
W skrócie

Automatyczna kopia bazy MSSQL to jedno z zadań wykonywanych cyklicznie przez usługę SSJob, konfigurowane po prostu jako pojedynczy wiersz w tabeli _jobs. Obsługuje trzy rodzaje kopii - pełną, przyrostową i plik LOG - z ustawianą częstotliwością wykonania i powiadomieniem e-mail o ostatecznym rezultacie.

Czym jest automatyczna kopia bazy MSSQL

Baza danych StudioSystem, opisana szerzej w materiale o bazie danych i widokach SQL, przechowuje wszystkie dane operacyjne platformy - dokumenty, kartoteki, konfigurację. Utrata tych danych bez aktualnej, sprawdzonej kopii zapasowej oznaczałaby w praktyce niemal całkowite zatrzymanie bieżącej pracy firmy, dlatego mechanizm automatycznego wykonywania kopii jest jednym z pierwszych elementów konfigurowanych po instalacji usługi SSJob.

Zadanie kopii bazy MSSQL nie różni się mechanicznie od pozostałych zadań obsługiwanych przez SSJob, opisanych ogólnie w materiale o usłudze SSJob - to również wiersz w tabeli _jobs, z własnym zestawem parametrów. Różnica leży w konkretnych polach istotnych dla tego typu zadania - przede wszystkim w rodzaju wykonywanej kopii i folderze docelowym.

Taki wspólny mechanizm konfiguracji ma wymierną zaletę organizacyjną. Administrator, który raz nauczył się obsługiwać jedno zadanie SSJob, potrafi bez dodatkowego szkolenia skonfigurować każde kolejne - zmieniają się wyłącznie wartości pól właściwe dla danego typu zadania, a nie sam sposób pracy z tabelą _jobs. To samo dotyczy diagnozowania problemów: znajomość struktury jednego zadania przekłada się wprost na umiejętność sprawdzenia dowolnego innego.

Konfiguracja w tabeli _jobs

Każde zadanie automatyczne, niezależnie od typu, opisywane jest w tabeli _jobs zestawem wspólnych pól. Dla kopii bazy MSSQL najważniejsze z nich to:

PoleZnaczenie
OSTATNIOWYKONANOData ostatniego poprawnego wykonania zadania
CYKLICZNOSCLiczbowy interwał, co jaki zadanie jest uruchamiane
CYKLICZNOSCTYPEJednostka interwału - np. godziny, dni
MAILPOWIADOMIENIEAdresy e-mail, na które trafią powiadomienia o wykonaniu
CONECTIONSTRINGNAMEŁańcuch połączeniowy do bazy danych objętej kopią
RODZAJKOPIITyp wykonywanej kopii - pełna, przyrostowa lub plik LOG
FOLDERKOPIIFolder, w którym zapisywana jest wykonana kopia

Konfiguracja tego zadania sprowadza się więc do wypełnienia jednego wiersza w tabeli - bez pisania kodu ani instalowania dodatkowego oprogramowania do backupu. Usługa SSJob, działająca w tle jako usługa Windows, sama odczytuje ten wiersz i podejmuje decyzję, czy nadszedł czas na kolejne wykonanie.

Trzy rodzaje kopii

Pole RODZAJKOPII pozwala wybrać jeden z trzech standardowych w SQL Server rodzajów kopii zapasowej, każdy o innym zastosowaniu:

  • Pełna - kompletna kopia całej bazy danych na moment wykonania. Najbardziej czasochłonna i zajmująca najwięcej miejsca, ale wystarczająca sama w sobie do pełnego odtworzenia bazy.
  • Przyrostowa - obejmuje wyłącznie zmiany wprowadzone od czasu ostatniej kopii pełnej lub przyrostowej. Szybsza i mniejsza, ale do odtworzenia bazy potrzebna jest cała sekwencja kopii aż do ostatniej pełnej.
  • Plik LOG - kopia dziennika transakcji, pozwalająca odtworzyć stan bazy z dokładnością większą niż jeden dzień, aż do konkretnej minuty sprzed awarii.

W praktyce te trzy rodzaje zwykle łączy się w jednym harmonogramie - rzadka kopia pełna jako podstawa, częstsze kopie przyrostowe pomiędzy nimi, a najczęstsze kopie pliku LOG minimalizujące potencjalną utratę danych w razie awarii tuż przed najbliższą kopią pełną.

Wybór proporcji między tymi trzema rodzajami zależy od tego, ile danych firma może sobie pozwolić stracić w razie awarii, oraz jak dużym obciążeniem serwera są gotowa zaakceptować w zamian za częstsze kopie. Kopia pełna wykonywana raz na dobę w połączeniu z kopiami pliku LOG co kilkanaście minut ogranicza potencjalną stratę danych do niewielkiego okna czasowego, kosztem dodatkowego obciążenia dysku i sieci w ciągu dnia.

StudioSystem

Jeden panel, cała konfiguracja

Parametry techniczne platformy - w tym te wykorzystywane przez zadania automatyczne - konfiguruje się z tego samego miejsca co pozostałe ustawienia administracyjne.

Harmonogram cykliczny

Częstotliwość wykonywania zadania ustala się dwoma powiązanymi polami: CYKLICZNOSC, określającym liczbę, oraz CYKLICZNOSCTYPE, określającym jednostkę tego interwału - na przykład godziny albo dni. Kombinacja tych dwóch pól pozwala zbudować praktycznie dowolny harmonogram, od kopii wykonywanej co kilka godzin po kopię wykonywaną raz w tygodniu.

Pole OSTATNIOWYKONANO pełni tu podwójną rolę - jest zarówno logiem ostatniego wykonania, jak i punktem odniesienia, od którego usługa liczy kolejny termin uruchomienia zadania zgodnie z ustawioną cyklicznością. Dzięki temu nawet po restarcie serwera albo dłuższej przerwie w działaniu usługi, harmonogram nie gubi się - kolejne wykonanie liczone jest od ostatniego zarejestrowanego sukcesu, a nie od stałej godziny w zegarze systemowym.

Powiadomienia i diagnostyka

Pole MAILPOWIADOMIENIE pozwala wskazać jeden lub więcej adresów e-mail, na które trafi informacja o wykonaniu zadania. W praktyce jest to jedyny sygnał, na podstawie którego administrator dowiaduje się, że kopia bazy została faktycznie wykonana, bez potrzeby żmudnego, ręcznego sprawdzania zawartości folderu docelowego każdego kolejnego dnia.

Dodatkowym źródłem diagnostyki jest sam Dziennik zdarzeń Windows, do którego usługa SSJob zapisuje informacje o swoim działaniu. Połączenie obu źródeł - powiadomienia e-mail dla rutynowego potwierdzenia i dziennika zdarzeń dla szczegółowej diagnostyki w razie problemu - daje pełny obraz stanu zadania bez konieczności logowania się bezpośrednio na serwer bazy danych przy każdej kontroli.

Folder docelowy i połączenie

Pole FOLDERKOPII wskazuje lokalizację, w której zapisywana jest wykonana kopia, a CONECTIONSTRINGNAME - łańcuch połączeniowy do bazy danych, która ma zostać skopiowana. Rozdzielenie tych dwóch niezależnych parametrów pozwala na przykład zapisywać kopie różnych baz w zupełnie osobnych folderach, przy jednoczesnym korzystaniu z tej samej instalacji usługi SSJob.

Warto, aby folder docelowy znajdował się na innym dysku fizycznym niż baza źródłowa, a najlepiej - na zasobie sieciowym albo w innej lokalizacji fizycznej. Kopia zapasowa przechowywana na tym samym dysku co baza produkcyjna nie chroni przed awarią samego dysku, która jest jednym z najczęstszych powodów, dla których kopia w ogóle bywa realnie potrzebna. Ten sam argument przemawia za regularnym kopiowaniem plików backupu poza serwer produkcyjny, na przykład do chmury albo na dysk sieciowy w innej lokalizacji fizycznej firmy.

Dobre praktyki

Kilka zasad sprawdza się niezależnie od wielkości i specyfiki wdrożenia:

  • Testowanie odtwarzania - kopia, której nigdy nie próbowano odtworzyć, jest tylko teoretycznym zabezpieczeniem. Warto okresowo sprawdzać, czy z zapisanych plików rzeczywiście da się odtworzyć bazę.
  • Rozdzielenie w czasie od innych zadań - kopia bazy nie powinna nakładać się w harmonogramie na inne zadania obciążające serwer, na przykład odbudowę indeksów czy ich reorganizację.
  • Retencja plików - stare kopie warto usuwać automatycznie po określonym czasie, żeby folder docelowy nie zapełnił się bezpowrotnie w kilka miesięcy.
  • Monitorowanie powiadomień - brak oczekiwanego e-maila z potwierdzeniem wykonania jest sygnałem ostrzegawczym samym w sobie, nawet bez błędu w dzienniku zdarzeń.

Warto też pamiętać, że sama kopia pliku nie jest jeszcze pełnym planem odzyskiwania po awarii. Plan taki powinien odpowiadać nie tylko na pytanie „gdzie jest kopia”, ale też „kto i w jakim czasie potrafi ją odtworzyć” oraz „jak dokładnie wygląda procedura przełączenia na zapasowy serwer, jeśli awarii ulegnie sam sprzęt, a nie tylko dane”. Sama automatyzacja tworzenia kopii, opisana w tym materiale, jest niezbędnym, ale nie jedynym elementem takiego planu.

Podsumowanie

Automatyczna kopia bazy MSSQL to zadanie usługi SSJob konfigurowane jednym wierszem w tabeli _jobs, obsługujące trzy rodzaje kopii - pełną, przyrostową i plik LOG - z ustawianą cyklicznością i powiadomieniem e-mail o rezultacie każdego wykonania.

To pierwszy z serii materiałów opisujących zadania automatyczne SSJob wykorzystujące ten sam mechanizm konfiguracji - kolejne dotyczą kopii aplikacji oraz utrzymania wydajności bazy przez odbudowę i reorganizację indeksów. Znajomość mechanizmu opisanego tutaj wystarczy, żeby bez trudu skonfigurować każde z pozostałych zadań tej rodziny.

Słownik pojęć

Podstawowe pojęcia - kopia bazy MSSQL

Terminologia przydatna przy konfigurowaniu automatycznych kopii zapasowych.

TTabela _jobs
Tabela systemowa przechowująca konfigurację wszystkich automatycznych zadań usługi SSJob.
CCYKLICZNOSC
Pole tabeli _jobs określające interwał, co jaki uruchamiane jest automatyczne zadanie.
KKopia pełna
Kompletna kopia całej bazy danych na moment wykonania zadania.
KKopia przyrostowa
Kopia obejmująca wyłącznie zmiany wprowadzone od czasu ostatniej kopii pełnej lub przyrostowej.
PPlik LOG
Kopia dziennika transakcji bazy danych, pozwalająca odtworzyć stan bazy z dokładnością do minuty.
FFOLDERKOPII
Pole tabeli _jobs wskazujące folder, w którym zapisywana jest wykonana kopia bazy.
FAQ

Najczęściej zadawane pytania

01

Jaka usługa wykonuje automatyczną kopię bazy MSSQL?

Usługa SSJob, zainstalowana jako usługa systemu Windows. Zadanie kopii konfiguruje się jako wiersz w tabeli _jobs, a usługa uruchamia je cyklicznie zgodnie z ustawionym harmonogramem.

02

Jakie rodzaje kopii bazy danych są dostępne?

Trzy rodzaje: kopia pełna obejmująca całą bazę, kopia przyrostowa obejmująca wyłącznie zmiany od ostatniej kopii, oraz kopia pliku LOG zawierająca dziennik transakcji.

03

Jak ustawić częstotliwość wykonywania kopii?

Polami CYKLICZNOSC i CYKLICZNOSCTYPE w tabeli _jobs - pierwsze określa liczbę, drugie jednostkę interwału, np. dni albo godziny. Pole OSTATNIOWYKONANO przechowuje datę ostatniego poprawnego wykonania.

04

Jak dowiedzieć się, czy kopia wykonała się poprawnie?

Pole MAILPOWIADOMIENIE pozwala wskazać adresy e-mail, na które trafi powiadomienie o wykonaniu zadania. Dodatkowo pole OSTATNIOWYKONANO w tabeli _jobs pokazuje datę ostatniego poprawnego uruchomienia.

05

Gdzie zapisywane są pliki kopii zapasowej?

W folderze wskazanym polem FOLDERKOPII, na serwerze, na którym działa usługa SSJob. Połączenie z bazą źródłową określa pole CONECTIONSTRINGNAME.

06

Czy kopię bazy MSSQL można łączyć z innymi zadaniami SSJob?

Tak, w tej samej tabeli _jobs konfiguruje się też m.in. kopię aplikacji, odbudowę i reorganizację indeksów. Warto jednak unikać planowania ich w tym samym czasie, żeby zadania nie konkurowały o zasoby serwera.

Warto przeczytać

Powiązane materiały o zadaniach automatycznych

Kolejne kroki, jeśli konfigurujesz utrzymanie serwera i bazy danych.

Aplikacja

II. Kopia aplikacji

Analogiczne zadanie SSJob wykonujące kopię plików aplikacji, uzupełniające kopię samej bazy danych.

Czytaj dalej
Wydajność

III. Odbudowa indeksów

Kolejne zadanie z tej samej rodziny, dbające o wydajność zapytań poprzez okresową odbudowę indeksów bazy.

Czytaj dalej
Wydajność

IV. Reorganizacja indeksów

Lżejsza alternatywa dla pełnej odbudowy, stosowana przy mniejszym poziomie fragmentacji indeksów.

Czytaj dalej
SSJob

SSJob - automatyczne zadania

Pełny mechanizm usługi SSJob i tabeli _jobs, z przykładami innych typów zadań - od kursów walut po wysyłkę e-mail.

Czytaj dalej
Instalacja

Instalacja usługi SSJob w Windows

Jak zainstalować samą usługę SSJob jako usługę systemu Windows, zanim skonfiguruje się pierwsze zadanie.

Czytaj dalej
Dane

Baza danych i widoki SQL

Warstwa danych platformy, której dotyczy kopia zapasowa opisana w tym materiale.

Czytaj dalej

Chcesz zobaczyć platformę w działaniu?

Uruchom demo modułów StudioSystem i sprawdź platformę na żywo.