PITR
PITR (Point-In-Time-Recovery) er en feature i PostgreSQL som gir relativt kontinuerlige backuper (minst hvert femte minutt for vår del). For mer dokumentasjon, se Postgres-dokumentasjonen om emnet.
PITR-backupene kjøres i tillegg til de vanlige pg_dump-ene i /var/lib/postgres/backup.
Generell virkemåte
Hver gang Postgres på cirkus har lyst til å rotere WAL-filene sine (minimum hvert femte minutt), kontakter den kolje (eller rettere sagt, hosten "backup"). Som brukeren pgbackup rsyncer den så over WAL-filen. Når den så er fornøyd og ikke trenger filen lenger (det skjer etter neste sjekkpunkt), sletter den filen. Autentiseringen skjer med en vanlig SSH-nøkkel som er eid av brukeren postgres.
Dersom kolje går ned, vil Postgres prøve på nytt etter en stund, helt til kolje kommer opp igjen. Vær obs at siden den ikke vil kunne klare å slette WAL-filene lenger, vil volumet gå fullt etter et par dager (litt avhengig av hvor mye ledig plass du har på WAL-volumet).
cirkus' preexec sørger for å kjøre pg_start_backup('dagens dato') før databasevolumet blir tatt backup av, og postexec sørger for at pg_stop_backup() blir kjørt. Dette sørger for at fil-backupene det vanlige backup-scriptet tar er gyldige WAL-backups. I tillegg havner det en egen statusfil for hver backup – igjen, se dokumentasjonen for mer informasjon.
Restore
Restore er beskrevet relativt utførlig i dokumentasjonen til PostgreSQL (se linken over). Noen punkter som er spefisikke for våre systemer:
- Bruk bare bokser du stoler på for å gjøre restore, ettersom store mengder persondata er involvert. Hvis du skal gjenopprette et helt cluster på cirkus, gjør du hele operasjonen direkte på cirkus etter å ha stoppet clusteret og laget en midlertidig tgz-backup av /var/lib/postgresql/<versjon>. Hvis du ikke vil påvirke cirkus, bruk /restore på altersex.
- For maksimal overføringshastighet fra kolje, pipe backup-arkivet fra kolje over ssh rett inn i tar. Eksempel: root@altersex:/restore$ ssh root@backup "cat /backup/cirkus/_var_lib_postgresql/full/201808040402.tgz" | tar xzvf - ./9.6
- Siden vi tar inkrementelle backups i tillegg til fulle backups, må du første hente den riktige fullbackupen, og deretter overskrive med én og én daglig backup.
- Når du har lagt inn /var/lib/postgresql/<versjon> for fullbackup og daglige backups til du er på rett dato, skal WAL gjøre recovery resten.
- Ettersom det tar litt tid før WAL-filene på kolje gzippes, trenger du en restore_comand i recovery.conf som tar hensyn til dette. Et brukbart eksempel er å finne i /restore/config på altersex, spesielt restore.sh og recovery.conf.
- Det er viktig å merke seg at recovery.conf ikke skal i /etc/postgresql/<versjon>/main som de andre konfigurasjonsfilene, men i /var/lib/postgresql/<versjon>/main (clusterkatalogen).
Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2018-08-13 13:36 | Revisjon: 4 (historie, blame) | Totalt: 1905 kB | Rediger