Czy backup od dostawcy wystarczy?
Rozważałem dołożenie osobnego narzędzia do kopii poza serwerem. Ostatecznie zostałem przy codziennych snapshotach całej maszyny, które zapewnia dostawca.
Świadomy kompromis
Wszystkie kopie są u jednego dostawcy. Jeśli straci on centrum danych albo zablokuje konto, stracę serwer razem z kopiami. Dla prywatnego laboratorium to akceptowalne ryzyko. Wszystko, co tu stoi, da się odtworzyć z plików Compose i repozytoriów, a jedyne dane, których nie odtworzę, to baza wiedzy.
U klienta nie zgodziłbym się na takie rozwiązanie: tam obowiązuje zasada 3-2-1, czyli trzy kopie, na dwóch nośnikach, w tym jedna poza lokalizacją.
Problem ze snapshotem
Snapshot wykonany w trakcie pracy bazy danych przypomina wyrwanie wtyczki z prądu. Zwykle się podniesie, ale nie ma gwarancji. Dlatego co noc cron robi zrzut MariaDB do pliku na dysku serwera. W uproszczeniu:
docker exec bookstack_db mariadb-dump --all-databases -u root -p"$PASS" > /root/bookstack.sql
Plik trafia do snapshotu razem z resztą, więc w razie problemów mam spójny zrzut sprzed kilku godzin, niezależnie od tego, w jakim stanie był plik bazy w chwili snapshotu.
Do zrobienia kiedyś
Przetestować odtwarzanie. Kopia, z której nigdy niczego nie odtworzyłem, to tylko nadzieja.