Wpłacając pieniądze na konto bankowe liczymy, że będą one bezpieczne. Gdyby po przyjściu do domu i sprawdzeniu konta okazało się, że jego stan się nie zmienił, pewnie udalibyśmy się raz jeszcze do banku, aby wyjaśnić sprawę. Załóżmy, że stojąc przy okienku dowiedzielibyśmy się, że niestety, ale ktoś usunął bazę danych z serwera i dane o klientach zostały utracone. Taka sytuacje wydaje się być absurdalna, ale żeby się nie wydarzyła, konieczne jest tworzenie kopii zapasowych baz danych w sposób przemyślany. W przypadku Azure SQL Database otrzymujemy gotowe rozwiązania, które gwarantują automatyczne tworzenie kopii zapasowych. Opowiem o nich w dzisiejszym artykule.
Jak to wygląda w teorii?
Załóżmy, że baza danych będzie oparta na plikach przechowywanych na jednym serwerze. Tak więc najprostszym sposobem, aby ustrzec się przed ich utratą, jest kopiowanie plików co jakiś czas w inne miejsce. Im częściej kopia będzie wykonywana, tym teoretycznie mniejsze zakres danych możemy stracić. Warto także zwrócić uwagę, że aby pliki były bezpieczniejsze, dobrze jest je umieścić na macierzy dyskowej (która minimalizuje ryzyko utraty danych w przypadku awarii dysku). Najlepiej w ogóle byłoby, gdyby pliki będące kopią trafiały na zupełnie inny serwer, w zupełnie innym miejscu, aby zminimalizować ryzyko chociażby awarii lub katastrofy w Data Center. Choć oczywiście nie zawsze można sobie pozwolić na takie luksusy 🙂
Jak to jest zrealizowane w SQL Serverze?
SQL Server ma oczywiście zaimplementowany mechanizm do tworzenia kopii zapasowych. Zwykle administratorzy takich baz tworzą tzw. joby lub całe plany konserwacyjne, które automatyzują tworzenie kopii zapasowych. Procedura składa się zwykle (upraszczając) z 3 kroków.
Pierwszym z nich jest tworzenie pełnego backupu, czyli kopii wszystkich danych z bazy źródłowej. Ten etap, jak można się domyślić, trwa zdecydowanie najdłużej. Z tego powodu częściej wykonuje się kopie przyrostowe, które archiwizują tylko dane za konkretny zakres, licząc od momentu wykonania poprzedniej kopii zapasowej. Takie rozwiązanie jest znacznie szybsze od poprzedniego. Ostatnim etapem jest backup loga transakcyjnego. Log transakcyjny przechowuje informacje o wszystkich modyfikacjach, jakie zostały wykonane na bazie. Dzięki temu możemy między innymi wykonać rollback na bazie. Ten rodzaj kopii może być wykonywany najczęściej.
Jak wygląda odtwarzanie bazy? W tej samej kolejności. Najpierw backup całościowy, później przyrostowe, a na końcu log transakcyjny. Dzięki temu jesteśmy w stanie zapewnić niewielki zakres potencjalnej utraty danych. Warto także pamiętać, że oprócz samego mechanizmu trzeba czuwać nad takimi rzeczami, jak na przykład dostępne miejsce na dysku – żeby nie okazało się, że nie ma gdzie takiej kopii odłożyć.
A jak to działa w Azure SQL Database?
Azure SQL Database znacząco ułatwia sprawę tworzenia kopii zapasowych. Od momentu utworzenia bazy kopie tworzone są automatycznie, bez żadnej ingerencji użytkownika. W wersji standard (i wyżej) możliwe jest odtworzenie dowolnego stanu do 35 dni wstecz. W przypadku wersji basic można przywrócić stan tylko do 7 dni wstecz. Odtwarzanie kopii jest bardzo wygodne ze względu na zastosowany mechanizm Point-in-time recovery. Cała procedura polega na wybraniu czasu, z jakiego chcemy odtworzyć bazę, wyznaczeniu nazwy dla odtworzonej bazy i warstwy wydajności, do której baza będzie odtwarzana. Zwykle czas takiej procedury nie jest długi, ale zależy to od wielu czynników.
Naszym obowiązkiem, jako administratorów, jest jedynie ustawienie retencji, czyli określenie jak długo takie kopie zapasowe mają być przechowywane. Co ważne, Azure gwarantuje także replikację geograficzną, co oznacza, że praktycznie nie ma możliwości, aby nasze dane zostały utracone.
Jak odtworzyć kopie w Azure SQL Database?
- Wybierz bazę, której kopię zapasową chcesz odtworzyć, a następnie kliknij opcję Restore.
2. Wybierz czas, z którego kopia zapasowa ma być odtworzona. Skonfiguruj nazwę bazy oraz warstwę wydajności. Następnie kliknij Review + create i zatwierdź proces odtwarzania.
3. Po chwili kopia zostanie odtworzona. Aby z niej skorzystać wystarczy zalogować się na docelową instancję Azure SQL Database.
Podsumowanie
W zależności od tego czy nasze bazy danych są on-premises, czy w chmurze, zawsze należy pamiętać o automatyzacji tworzenia kopii zapasowych. W przypadku rozwiązań chmurowych znacząco zmniejsza się nakład pracy, jaki musielibyśmy poświęcić na administrację. Co więcej, odchodzi problem z macierzami dyskowymi i replikacją danych do innego Data Center. Zachęcam też do obejrzenia krótkiego wideo, z którego dowiecie się jeszcze więcej o tworzeniu kopii zapasowych w Azure SQL Database