Jak během chvilky přijít o úspěšný web

Slušelo by se dodat, přijít kvůli vlastní blbosti. Všude se píše zálohovat, zálohovat, RAID není záloha. Ne nadarmo se lidé dělí na dvě skupiny – na ty, kteří o svá data přišli a ty, které to teprve čeká. Před týdnem jsem se posunul do první skupiny.

HamQTH is down ;-(

Přišel jsem o data u mého asi nejúspěšnějšího projektu – HamQTH. Jedná se o adresář značek radioamatérů. Kromě základních informací jako jméno, stanoviště a adresa si bylo možné na webu vytvořit pěkný osobní profil. Vše krásně běželo několik let na serveru. Zálohoval jsem scriptem na externí úložiště každý den.

Po nějaké době byly zálohy dat už tak velké, že se na externí úložiště nevešly více jak dvě zálohy. Script jsem upravil s tím, že to musím nějak vyřešit. Externí úložiště expirovalo a přestalo existovat. S ním i uložená data. Script sice stále zálohoval, ale pouze na stejnou partition, kde byla i data.

O problému se serverem mě informovali uživatelé. Po připojení přes ssh jsem se zděsil. Dost drsným způsobem se rozpadlo RAID 10 pole. Celá /home partition (asi 1.9TB) byla v tahu. Na ní samozřejmě byla veškerá data. Žil jen /boot, který byl v RAID1 a root (také RAID 10). Odešly dva disky ze čtyř, ten třetí se držel silou vůle, proto jel alespoň root.

K serveru nemám fyzický přístup, je asi 300km ode mne. Poprosil jsem tedy kolegu Martina, jestli by se na to nemohl podívat. Má s RAIDem mnohem více zkušeností, fyzický přístup k serveru a také náhradní disky, na které mohl obsah zkopírovat pro další experimenty. Ano, umím RAID postavit z příkazové řádky, umím v něm vyměnit disky, ale na nějaké hlubší zásahy nemám zkušenosti. Navíc bez kopie na další disky je na vše pouze na jeden pokus.

O co všechno jsem přišel?

O všechno :-(. O databázi, data uživatelů (asi 90GB). Také tam bylo pár testovacích webů a vlastní git repozitáře. Testovací weby vem čert, mám je i na notebooku a stolním stroji. Díky Bohu a Linusovi za git, zdrojáky jsem měl i na jiných počítačích, takže jsem o nic nepřišel. Velice mne mrzí hlavně ta databáze. Obsahovala údaje, které už nikde nezískám. Něco sice mohou zadat uživatelé znovu, ale ne všechno. Celá historie je v trapu. Tu už nedoplní nikdo.

Rekonstrukce webu

Naštěstí jsem na domácím serveru našel nějakou zálohu webu z roku 2015. Na ní jsem vše znovu postavil a alespoň načetl data z veřejných zdrojů. Uživatelům jsem o tom dal vědět přímo na webu a celou dobu, kdy byl web offline, jsem se snažil komunikovat přes Twitter, Facebook a email. Poučil jsem se v tomto od druhých, raději s uživateli mluvit a přiznat barvu.

Za poslední týden jsem toho moc nenaspal. Do noci opravuji různé bugy, dělám dílčí vylepšení a odpovídám na emaily. Jak mi napsal jeden Američan – “Didn’t realize how much I needed it until it stopped working.”. Web postupně dostávám do plně funkčního stavu. Bude to ještě dlouho trvat, TODO list je hodně dlouhý. Vstávám ráno o půl šesté abych mohl programovat než se vzbudí děti. Večer jdu spát o půl dvanácté, nebo později. Skok z Ubuntu 12.04 na 16.04 je hodně znát.

Web je nyní na dedikovaném serveru u SoYouStart, má 32GB RAM a 3x120GB SSD v RAID 5.

Poučení?

Opravdu zálohujte. No fakt, opravdu zálohujte. Ale samozřejmě ne na stejné úložiště jako já. Zálohujte na jiný stroj, ideálně do jiné lokality. Ještě lépe na více strojů v různých lokalitách. Zatím zálohuji na jiný stroj v datacentru, chystám si další dvě místa úplně mimo a daleko od sebe.

Tedy také občas ověřte integritu zálohy. Vůbec není od věci si jen tak cvičně zkusit obnovit data na nějakém čistém testovacím virtuálním stroji. Zjistíte při tom, kolik věcí jste považovali za jasné a zapomněli.

Závěr?

Já už to teď všechno vím. Také vím, jaký je to pocit přijít o něco, co víc jak 6 let budujete, má to skoro 3000 návštěv a 90k requestů na API za den. Ten pocit bych si zopakoval jen velice nerad. Věřte mi, nechcete to zažít. Návštěvnost se propadla asi o třetinu. Bude mi nějakou dobu trvat, než se dostanu na původní čísla.

1 komentář

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *