Automatyczne tworzenie i monitorowanie backupów na wielu serwerach

  • 10 kwietnia, 2019
  • 4

Ostatnio spotkała mnie bardzo niemiła niespodzianka. W serwerowni na VPSie na którym udostępniane były dwa usługowe serwisy internetowe całkowicie padł dysk bez możliwości zrzucenia danych – po prostu się rozpadł. Takie rzeczy się zdarzają, kilka godzin pracy i wszystko powinno wrócić do normy – o ile jest zrobiony zrzut danych tzw. backup. O ile…

Ku mojemu zdziwieniu po otwarciu folderu na innym serwerze przeznaczonym na backupy tego VPSa zobaczyłem bardzo stare daty plików – momentalnie podniosło mi się ciśnienie Tossing Laptop

Post ten piszę ku przestrodze, bo taka sytuacja może być bardzo kosztowna. W moim przypadku sporo pracy, wyparowanie wielu danych, straty finansowe. Oczywiście takie zdarzenie to też uszczerbek na wizerunku. Ciężko oszacować straty, ale one są spore.

Jak unikać takich sytuacji na przyszłość? Wystarczy robić backupy, im częściej, tym lepiej w zależności od charakteru serwisu i częstości zmian w plikach, a przede wszystkim w bazach danych. Robić backupy i je co jakiś czas weryfikować.

Tyle tytułem wstępu, teraz rozprawimy się dokładnie z problemem.

Mi się to nie zdarzy…

Każdy sprzęt narażony jest na awarię, każdy dysk twardy narażony jest na utratę danych. Są to niezbyt częste przypadki, ale zdarzają się. Każdy sprzęt może po prostu paść. Najgorszy z możliwych przypadków to brak jakichkolwiek backupów. W takim przypadku w każdej chwili jesteś narażony na utratę wszystkich danych.

Wybierając ofertę serwera zwróć uwagę na to, czy robione są regularnie backupy. Jeśli są robione, to problem masz z głowy. Na dzielonych serwerach zwykle backupy są robione w cenie, na VPSach trzeba raczej zadbać samemu o backupy lub po prostu dokupić usługę tego typu.

Nie trzymaj backupu na tym samym serwerze

Robienie backupów i przechowywanie ich na serwerze, z którego robiony jest backup to częste rozwiązanie. Ma kilka zalet, ale w przypadku awarii dysku lub po prostu włamania na serwer wszystko można stracić – razem z backupami. Byłoby to dobre rozwiązanie gdyby dyski były niezniszczalne i gdyby nie istnieli hakerzy.

W omawianej sytuacji backupy były pięknie robione każdego dnia. Niby super, ale całkowity pad serwera sprawił, że dostęp do backupów nie jest możliwy.

Weryfikuj poprawność robionych backupów

Ja spałem spokojnie, wszystko pięknie skonfigurowane, backupy robione raz dziennie. Wszystko pięknie, ale niestety jak się okazało, to już wiesz. Backupy nie były poprawnie przesyłane na zdalny serwer, a to okazało się gwoździem do trumny.

W dalszej części wpisu pokażę jak ustawić backupy w popularnym dziś panelu Vesta Control Panel i w jaki sposób weryfikować czy wszystko z backupami jest w porządku. Oczywiście zasady można zastosować w przypadku innych paneli kontrolnych.

Ruszamy

Zróbmy tak, by wszystko działało w wersji pełnej automatyzacji – raz dziennie na zdefiniowany mail otrzymasz informację, czy z backupami wszystko jest OK. Oto, co potrzebujemy do poprawnego robienia backupów, wysyłania na inny serwer i ogólnie pełnej automatyzacji:

  • odpowiednia ilość miejsca na dysku serwera do zrobienia lokalnego backupu
  • skrypt do tworzenia lokalnego backupu serwera
  • dodatkowy serwer FTP na przechowywanie plików
  • skrypt do zapisania backupu na zdalnym serwerze
  • skrypt monitorujący backupy na dodatkowym serwerze

Zadbaj o odpowiednią ilość miejsca na serwerze

Jeśli chcesz zrobić backup, musisz mieć miejsce na zapisanie pliku. Korzystając z VestaPanel możesz kliknąć w zakładkę Backup i tam łatwo się zorientować ile miejsca zajmą pliki z backupami.

Z czasem miejsca na serwerze może zacząć brakować (przyrost bazy danych, logi itd.). Warto więc zautomatyzować proces sprawdzania wolnego miejsca na dysku i w razie niewystarczającej ilości miejsca wysłać informację na mail.

Można to uzyskać wykorzystując skrypt perl z tego forum: diskquota.zip

Skrypt ten podaję jako ciekawostkę z tego względu, że będziemy monitorować backupy końcowe na zdalnym serwerze. Użytkownik dopiero w przypadku braku backupu na zdalnym serwerze będzie mógł wszcząć postępowanie 🙂 To też pokrótce objaśnię później.

Tworzymy backup

W przypadku Vesta Panel mamy wszystko przygotowane, wystarczy wpisać odpowiednie dane serwera. Klikamy w „Server”:

Następnie w Konfigurację:

Szukamy zakładkę Backup:

A następnie Remote Backup:

To tutaj wystarczy podać odpowiednie dane do serwera, na którym będziemy przechowywać backupy. Pamiętaj aby podać pełną ścieżkę (Directory) np.:

1
/domains/przykladowadomena.pl/public_html/backup

Jeśli podałeś dane poprawnie, to Vesta automatycznie utworzy odpowiedni katalog na serwerze FTP.

Teraz jeszcze wypada zabezpieczyć katalog backup przed niepowołanym dostępem. Wystarczy zabezpieczyć hasłem katalog. Można to łatwo zrobić poprzez panel Direct Admin jeśli jest dostępny („Zabezpiecz hasło” przez Menadżera Plików) lub korzystając np. z tego poradnika. Pamiętaj, aby zabezpieczyć wszystkie katalogi z backupami.

Teraz możesz zrobić test wysyłania backupu na serwer zdalny. Kliknij w zielony przycisk Create Backup w zakładce Backupów:

Do kilku-kilkunastu minut na zdalnym serwerze powinien pojawić się plik z utworzonym backupem. Co jeśli się nie pojawi? Zaglądnijmy do logów, przechowywane są w pliku:

1
/usr/local/vesta/log/backup.log

Tam poszukaj ewentualnych błędów. Błąd powinien nakierować Cię na rozwiązanie (z pomocą wujka Google). Ja natrafiłem na kilka różnych problemów, piszę o nich w dalszej części wpisu.

Jaki serwer pod backup?

Przy niewielkich plikach do kilku GB można śmiało użyć dzielonych serwerów jako serwer pod backup, ja z takiego korzystam. Dodatkowy plus to możliwość uruchomienia skryptów php na takim serwerze, a taki właśnie skrypt posłuży nam do monitorowania, czy backupy są tworzone na bieżąco.

W przypadku większych plików poszukałbym raczej hostingów dostosowanych do przechowywania plików lub skorzystał z innej możliwości przesyłania i przechowywania backupów, na przykład Google Drive lub Dropbox. Poradniki do Google Drive i Dropbox znajdziesz w sieci.

PS. Jeśli robisz backup serwera, na którym przechowywane są dane osobowe, koniecznie podpisz dodatkowo umowę RODO z dostawcą serwera na którym będą przechowywane backupy.

W zasadzie to by było tyle, o ile chcesz codziennie sprawdzać ręcznie, czy świeże backupy zapisywane są na zdalnym serwerze. Oczywiście warto sobie ułatwić życie.

Automatyczna weryfikacja backupów

Aby można było zrobić weryfikację tym sposobem potrzebujemy zdalnego serwera z możliwością uruchomienia skryptów PHP (dodatkowo z włączoną funkcją mail w celu wysłania raportu). Skrypt należy umieścić na ftp na poziomie katalogu z backupami, w naszym przykładzie jest to:

1
/domains/przykladowadomena.pl/public_html/

Nazwij go w dowolny sposób, ja go nazwałem raportbackup.php (kliknij, aby go pobrać)

Konfigurujemy go (email, nazwy i ścieżki) i robimy upload pliku na serwer. Teraz jeszcze trzeba odpowiednio ustawić zadanie cron, wystarczy raz dziennie. Na początku oczywiście testujemy otwierając adres pliku przez przeglądarkę.

W przypadku braku błędów otrzymasz taki mail:

W przypadku braku jakiegoś backupu sprzed 24 godzin:

Po podaniu większej ilości katalogów z backupami wiadomość może wyglądać tak:

Widać jak na dłoni, że brakuje dwóch backupów, trzeba to koniecznie sprawdzić!

Backup nie chce się utworzyć

W takim przypadku pierwsze co robimy, to sprawdzamy, czy lokalne kopie są poprawnie robione. Dzięki temu wykluczymy lub potwierdzimy lokalne problemy z tworzeniem kopii. W przypadku Vesta Panel wchodzimy w zakładki backupów.

W przypadku braku backupu na serwerze lokalnym trzeba szukać przyczyny na serwerze, może to być na przykład brak miejsca na dysku serwera lub jakieś błędy ze zrzutami baz danych (najczęściej przez uszkodzone tabele). W takim przypadku pierwsze co robimy, to sprawdzamy powiadomienia mail (jeśli w systemie panelu VPS są ustawione). Vesta Panel wysyła maile z logami backupu na mail użytkownika admin. Trzeba więc się zalogować na skrzynkę mail i sprawdzić problem.

Błąd ze zrzutem bazy danych może wyglądać tak:

Can’t dump database baza_proxy
mysqldump: Got error: 145: Table ’./baza_proxy/proxy’ is marked as crashed and should be repaired when using LOCK TABLES

Aby rozwiązać problem wystarczy się zalogować na przykład przez phpmyadmin i uruchomić komendę:

REPAIR TABLE baza_proxy

Jeśli na mailu nic podejrzanego się nie znajdzie, to trzeba jeszcze sprawdzić logi backupu. W przypadku Vesta Panel jest to plik:

1
/usr/local/vesta/log/backup.log

Zazwyczaj będzie to brak wolnego miejsca na dysku:

1
2
3
4
5
-- SUMMARY --
2019-04-09 05:22:24 Rotated: 2019-04-07_05-21-33
Error: Not enough dsk space

--------------------------------

Ale problemy mogą być najróżniejsze. Najlepiej szukać rozwiązania problemu przez wyszukiwarkę Google.

A co zrobić w przypadku braku backupu na zdalnym serwerze (gdy na lokalnym backup jest)? Trzeba zweryfikować dlaczego plik z backupem nie chce się przesłać. Zazwyczaj będzie to problem z komunikacją lub brak miejsca na dysku serwera zdalnego (ewentualnie ograniczenie wielkości pliku). W tym przypadku najlepiej sprawdzić logi z backupu:

1
/usr/local/vesta/log/backup.log

Problem typu jak poniżej wskazuje na brak połączenia z serwerem:

1
ftp: connect: Connection timed out

Upewnij się, czy wprowadzone dane FTP są poprawne. Jeśli są, to trzeba sprawdzić na VPSie ustawienia firewall. W przypadku Vesta Panel wystarczy przez ssh wywołać polecenie:

1
echo "PROTOCOL='TCP' PORT='12000:12100'" >> /usr/local/vesta/data/firewall/ports.conf

oraz:

1
v-update-firewall

To powinno umożliwić połączenie.

Jeśli mimo poprawnych ustawień firewalla nadal plik z backupem nie jest przesyłany, to koniecznie poszukaj problemu po stronie serwera zdalnego. Najpierw sprawdź czy masz odpowiednią ilość wolnego miejsca na serwerze. Możesz w przypadku dalszych problemów zasięgnąć rady administratora serwera opisując mu swój przypadek.

Podsumowanie

Pamiętajcie o backupach, ostatnio dostałem nauczkę na całe życie. Codzienna weryfikacja backupów wchodzi u mnie w nawyk, na szczęście automatyzacja sprawia, że nie jest to ani uciążliwe, ani pracochłonne, ani czasochłonne.

Backupy serwera to jedna kwestia. Inna istotna kwestia z backupami to komputer osobisty/laptop (czy też smartfon lub inne urządzenie) na którym przechowywane są ważne dane, programy (czasem wieloletnie prace) czy po prostu zdjęcia. Niech to drastyczne pytanie skłoni Cię do robienia backupów ważnych danych na różnych urządzeniach: co zrobisz, jeśli za 5 sekund dysk twardy w Twoim komputerze po prostu się spali i nie będzie możliwości odzyskania danych?

 

Title
Caption
File name
Size
Alignment
Link to
  Open new windows
  Rel nofollow