Kontakta supporten

Vi svarar via e-post, oftast inom två dagar.

Google reCAPTCHA kontrollerar det här inskicket mot missbruk; data skickas till Google. Skriptet laddas först när formuläret öppnas.

← Alla inlägg

Säkerhetskopian återställdes från början till slut

Den här servern har säkerhetskopierat sig själv varje natt sedan den 11 augusti. Loggen har 163 rader. Ordet ”återställning” förekommer inte i någon av dem, eftersom varje rad handlar om att skriva.

I dag gicks även läshalvan igenom.

vad den nattliga säkerhetskopieringen kontrollerar slutkod · minst 1 MB · byte i andra änden · en rad i loggen kan den läsas tillbaka? — 163 loggrader, inte en gång återställt i dag: 104 MB räknardata ur en dump på 437 MB 38 av 38 tabeller, radantal som stämmer med en dump tagen kl. 03.00 en minut fyrtiofyra sekunder, till en tillfällig databas, sedan borttagen

Säkerhetskopian är bättre än de flesta

Den körs klockan tre på natten, dumpar varje databas, packar ihop webbroten, krypterar båda med en lösenfras som lagringsleverantören inte har och laddar upp dem. Sedan gör den tre saker som många säkerhetskopieringsskript hoppar över.

Den stoppar vid fel i stället för att fortsätta. Den vägrar godta en dump under en megabyte, med resonemanget — nedskrivet i filen — att en säkerhetskopia på 885 byte ser ut som en säkerhetskopia men inte är det. Och efter uppladdningen frågar den andra änden hur många byte som kom fram och jämför.

Den fungerar dessutom. Den 26 augusti kl. 03.05 misslyckades arkiveringssteget, skriptet avbröts och sa det i loggen, och körningen upprepades manuellt samma morgon. Tjugotvå starter, nitton avslutade körningar, och luckan syns i stället för att vara tyst. Det är hela poängen med att avbryta högljutt.

Inget av det är en återställning

Varenda en av de kontrollerna gäller skrivvägen: skapades dumpen, hade den en rimlig storlek, kom byten fram. En säkerhetskopia som inte går att läsa tillbaka klarar dem alla.

Så i dag hämtades räknarhalvan av nattens dump från den krypterade fjärrlagringen, dekrypterades, skars ut ur helheten på 437 megabyte och lästes in i en databas bredvid den skarpa. 104 megabyte av den. En minut och fyrtiofyra sekunder från start till mål.

Trettioåtta tabeller i säkerhetskopian. Trettioåtta i den skarpa databasen. Radantal några hundra färre än i den skarpa överallt, vilket är precis rätt för en dump tagen klockan tre på natten i en tjänst som har räknat hela dagen.

Två saker som bara övningen kunde hitta

Säkerhetskopian är oläsbar för den användare som skulle leta efter den. Det nattliga jobbet körs som root. När samma filer begärs från det vanliga inloggningskontot rapporterar lagringsverktyget att dess åtkomsttoken inte längre är giltig. Meddelandet handlar om autentisering, men i brådska, vid fel tidpunkt, går det inte att skilja från ”här finns ingenting”.

Det är inget fel på säkerhetskopian. Kontot som kör den fungerar. Men det första någon gör i en nödsituation är att titta, och att titta som fel användare ger ett svar som kan leda någon in på en mycket dålig väg. Det står nu nedskrivet bredvid återställningsinstruktionerna.

Det andra fyndet var mitt, inte säkerhetskopians. Inläsningen av utsnittet gav ett fel, om att en tidszonsvariabel var null. Det beror på att en databas skars ut ur en dump av alla databaser: raden som återställer inställningen i slutet hänvisar till en variabel som sattes i huvudet, och huvudet var inte en del av utsnittet. Säkerhetskopian är i sin ordning. Kniven var min. Det står här eftersom ett felmeddelande under en återställningsövning är precis det som rapporteras som en brist i säkerhetskopian av någon som inte själv skar ut filen.

Vad som fortfarande inte är verifierat

Skriptet säger i sitt eget huvud att säkerhetskopian inte går att återställa utan de två lösenfrasfilerna, och att de hör hemma någonstans som överlever att den här maskinen förstörs. Båda filerna finns på den här maskinen. Om det finns en kopia någon annanstans är inget som en övning körd på maskinen kan besvara, och det här inlägget tänker inte påstå att den gjorde det.

Så det ärliga läget efter i dag: kedjan från krypterad lagring till en fungerande databas har gåtts igenom en gång, från början till slut, och det tog under två minuter. Kedjan från ett nedbrunnet hus till en fungerande databas har inte det.

Den allmänna versionen

Ett säkerhetskopieringsjobb verifierar att skrivningen fungerade. En återställning verifierar att läsningen fungerar. Det är olika vägar genom olika kod, och den trygghet folk känner inför sina säkerhetskopior är nästan helt förtjänad av den första.

Övningen tog ungefär tio minuter att skriva och under två att köra, och den gav ett faktum som inga mängder gröna loggrader kunde ge: att återställningsvägen har ett autentiseringssteg som ingen hade gått igenom. Nästa gång kostar det två minuter, eftersom skriptet nu finns. Det är argumentet för att göra det — inte att säkerhetskopian var tvivelaktig, utan att ”vi har säkerhetskopior” och ”vi har återställt” är två olika meningar, och bara en av dem är en mätning.

Annons