• Auteur: Root
  • Datum: 8-04-2019

Het begrip Point-In-time-Recovery, kortweg PITR, betekent dat data vanaf een backup teruggehaald kan worden tot een willekeurig moment. In de praktijk betekent dit dat je in een geval van een incident een database (in de meeste gevallen) kunt herstellen tot vlak voor het moment dat het incident zich voordeed. Het doel van PITR is gegevens te kunnen herstellen van een incident met zo weinig mogelijk of nog idealer; geen dataverlies.

Dit klinkt mooi, maar er zijn wat voorwaarden aan verbonden en de vraag is of de extra kosten van deze voorwaarden opwegen tegen de mogelijke schade. Laten we eerst eens kijken hoe PITR in zijn werk gaat.

Restore databe vanuit backup

Bij een standaard backup oplossing zal één keer per dag een backup worden gemaakt. Vaak gebeurt dit ’s avonds of ’s nachts. Als er een incident optreedt waarbij een restore van de database noodzakelijk is, dan zullen de mutaties tussen het backup moment en het incident verloren zijn nadat de backup teruggeplaatst is. Het voordeel is dat een dergelijke restore vaak snel kan worden uitgevoerd zodat de applicatie of website snel weer actief kan zijn.

Voorbeeld restore database uit backup:


PITR; Database restore

Bij een PITR backup procedure gaat het ietsjes anders. Databases hebben de mogelijkheid om hun transacties te loggen. MySQL gebruikt bijvoorbeeld binlog, Postgresql WAL (Write Ahead Log) en MSSQL gebruikt transaction logs. Deze logs bevatten alle mutaties die op de databases zijn toegepast. Standaard staat deze vorm van logging uit. Als je dus met je backup routine deze transacties opslaat, kun je een restore uitvoeren door de laatste backup terug te zetten en vanaf de laatste mutatie in de backup de overige mutaties vanuit de opgeslagen transactie logs in te laten lezen door de database server. Vanwege de mogelijk meerdere stappen die gedaan moeten worden zal deze vorm van database restore langer duren dan het teruglezen van een enkele database backup.

Voorbeeld restore met point-in-time-recovery:

Hoewel de data dus vanaf de laatste backup tot vlak voor het incident teruggehaald kan worden, is de tijd die benodigd is om deze handelingen uit te voeren langer dan bij het terughalen van één enkele database backup.

PITR; Waar moet je rekening mee houden?

Zorg ervoor dat er een dagelijkse/nachtelijke backup geschikt is om aangevuld te worden met transactie logs. Transactie logs werken niet per database, maar per server. Alle mutaties van alle databases staan door elkaar in hetzelfde bestand. Als je alleen losse backups maakt per database, zal het tijdstip van de laatste mutatie bij elke database backup verschillen, hoe bepaal je dan vanaf welk moment je transacties opnieuw wilt laten invoeren?

Je backup moet dus alle databases bevatten met een markering welke positie de laatste in de backup is. MySQL, Percona en MariaDB kennen bijvoorbeeld binlog position en GTID.

Vaak moet er slechts één database hersteld worden, maar de transactie logs bevatten transacties van alle databases. De restore moet dus plaatsvinden op een tweede server waar naderhand de getroffen database weer vandaan kan worden gehaald om in productie geplaatst te worden.

  • Het loggen van transacties kan veel schijfruimte kosten. Houd daar rekening mee als je bijvoorbeeld een nieuwe database plaatst en een backup hierop inleest.
  • Sla de transactie logs op een veilige plek op zodat deze ook beschikbaar zijn bij een totale server crash. Bij voorkeur op een backup server of een nas.
  • Zorg voor meerdere backup routines. Een backup per database kan handig zijn om eenvoudig backups te kunnen inlezen op een andere server, maar nutteloos bij PITR.
  • Maak een uitgeschreven scenario voor point-in-time-recovery. Als het goed is heb je het nooit nodig, maar als je het nodig hebt is dat niet het moment om uit te gaan zoeken hoe het ook alweer werkt. Daarnaast is het goed om op regelmatige basis een point-in-time-recovery te testen zodat erop vertrouwd kan worden mocht zich een ernstig incident voordoen.

Wilt u meer weten over Point-In-Time-Recovery? Root beantwoord graag al uw vragen over PITR en hoe dit in uw situatie toegepast kan worden.

Neem contact op met
een van onze specialisten