Kopie zapasowe na forum - informacje zza kurtyny

Domyślam się, że osób, które to interesuje jest jakieś może pięć, ale postanowiłem raz na jakiś czas dać trochę informacji zza kulis naszego forum. Jest przy nim trochę pracy, wymaga to wszystko trochę umięjętności i wiedzy, a ja mogę się nią trochę podzielić. Wtedy, jeśli ktoś będzie chciał zrobić własne forum, to będzie tę wiedzę mieć.

Dziś chciałbym powiedzieć parę słów o kopiach zapasowych. Nasze forum jest oczywiście codziennie backupowane, więc w razie wybuchu - jestem w stanie w ciągu parunastu minut przywrócić stan sprzed przynajmniej 24h.

Ale zanim zaczniemy, parę zasad:

  • kopie zapasowe powinny być robione… w innym miejscu niż stoi główna usługa (co komu po kopii na serwerze, który będzie mieć awarię tak samo jak forum?),
  • two is one, one is none - dobrze robić kopie zapasowe i kopie zapasowe - jeśli jedna z kopii zapasowych będzie mieć awarię, to zawsze jest druga
  • kopie bezpieczeństwa są bezużyteczne jeśli nie da się ich przywrócić, to wydaje się zabawne, ale więcej zaraz.

Nasze forum jest backupowane każdego dnia, w środku nocy, na Amazon S3 (jest do tego wbudowana opcja w Discourse). Trzymam też jedną, co-trzydniową kopię w “glacierze”, czyli serwerze, na którym trzyma się dane dłużej niż na samym S3. Trzymamy tych kopii trzy ostatnie - czyli z ostatnich trzech dni. Tym samym jeśli ktoś prosi o usunięcie swoich danych z forum, to fizycznie zajmuje to trzy dni, po tym czasie - dane znikają nawet z kopii zapasowej i nie ma szansy, że je odzyskamy.

Raz na jakiś czas robię też zrzut kopii na swój własny dysk po to, żeby po prostu mieć ją “bliżej” (robię to raz na tydzień). Trzymam na swoim dysku jedną, tygodniową kopię. (Na dysku == iCloud drive, więc mam ją w chmurze przez ten tydzień).

Czyli podsumowując:

  • kopia robi się raz dziennie,
  • trzymam 3 dzienne kopie na S3,
  • w glacierze trzymam 1 kopię, która zmienia się co 3 dni,
  • raz na tydzień aktualizuję kopię bazy na swoim dysku

Żeby nie można było przywrócić forum musi więc: paść ovh (gdzie stoi forum), paść iCloud (i mój komputer), paść Amazon S3. Nikła szansa, więc jesteśmy bezpieczni.

Co do przywracalności - wielokrotnie bywało tak, że padł jakiś serwis, który owszem - miał kopię bezpieczeństwa - ale nie dało się jej wgrać, bo nikt nigdy tego zrobić nie próbował. Dlatego… ja (chociaż tego nie widzicie) raz na jakiś czas, bardzo wcześnie, przywracam forum z kopii bezpieczeństwa po to, żeby sprawdzić czy działa. Do tego parę razy postawiłem na szybko bucket żeby sprawdzić czy to dalej działa na całkiem nowym serwerze. Dlatego w sytuacji “forum padło”, jestem w stanie bardzo szybko chociażby: postawić nowy bucket na DigitalOcean (jeśli padło ovh), wgrać tam Discourse, przywrócić kopię zapasową i przekierować domeny.

Ostatnia rzecz, która może być interesująca (zawsze jest!) - koszty. Nasz serwer na OVH kosztuje około 420zł rocznie (środkowy VPS na OVH). Jedna kopia zapasowa zajmuje około 3,5GB miejsca. Na S3 trzymam więc około 11GB (+ glacier kolejne 3,5) danych, których miesięczny koszt otrzymania wynosi… w granicach $0.18. Każdego miesiąca ten koszt rośnie (bo i danych przybywa), ale myślę, że nawet w długim horyzoncie czasowym nie przekroczymy złótówki na miesiąc.

To byłoby na tyle - gdyby ktoś był ciekawy któregoś aspektu - niech da znać. Chętnie wytłumaczę i odpowiem na pytania. A gdyby ktoś chciał stworzyć własne forum, to teraz też wie jak wygląda kwestia robienia kopii bezpieczeństwa.

15lajków

Backup na swój komputer i stawianie nowego środowiska masz ogarnięte automatycznie (np. skryptem) czy klikasz ręcznie?

Backup na swój komputer robie ręcznie (nie ma sensu tego automatyzować, bo zajmuje to mało czasu i jest dużo zmiennych), a stawianie nowego środowiska mam zautomatyzowane (chociaż jest parę elementów, które trzeba zrobić ręcznie, ale 90% rzeczy dzieje się samo).

1lajk

Tak z czystej zawodowej ciekawości - czym automatyzowałeś?

Zależy o co pytasz:

  • backupy w Discourse - Discourse sam tutaj wszystko automatyzuje (ile dni trzymać, etc.),
  • przesuwanie do Glaciera itd. - po prostu w panelu S3,
  • stawianie środowiska - skrypt w bashu (ale turbo prosty, postawienie środowiska pod discourse jest trywialne, więc…)
1lajk

W sumie do tego można by jeszcze porobić więcej miejsc, gdzie są kopie zapasowe, bo zapewne w IFTTT albo Zapier można by sobie jeszcze te dane porozrzucać na inne chmury gdzie masz wolne miejsce (chociaż obecna ilość backupów i tak już wystarczy w zupełności :D).

2lajki

Panie Orzech,

Thanks for sharing.

1lajk

W ogóle super, że się podzieliłeś. Ja robię między innymi takie rzeczy zawodowo plus jestem fanem automatyzacji, więc fajnie przeczytać jak robią to “normalniejsi” ludzie. Dobrze wiedzieć, że jesteś w stanie automatycznie postawić kolejną instancję z backupu. W sytuacji stresowej, a taką jest awaria forum z którym jesteście związani emocjonalnie, powoduje więcej pomyłek przy ręcznym klikaniu. Nie ważne jakby proste to nie było. Także szacun, że ci się chciało i że przemyślałeś taki wypadek :slightly_smiling_face: Jakbyś potrzebował kiedyś pomocy przy tego typu akcjach to daj znać :wink:

2lajki