Pgbackrest kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

pgbackrest https://github.com/pgbackrest/pgbackrest on C keeles Crunchy Data https://www.crunchydata.com/ poolt arendatud PostgreSQL andmebaasi varundamise tarkvara.

Misc

  • kas pgbackrest abil saab korraldada, et kasutajad saavad ise oma andmeid taastada (nt iga varundatava süsteemi pgbackrest protsess käivitatakse eraldi kasutajaga)
  • varunduse arvutis saab varundustest seise käivitada docker konteinerites (kasutades varundusele vastavat postgresql tarkvara versiooni ja extensionite jms koosseisu)

Tööpõhimõte

pgbackrest saab üldiselt kasutada kahes režiimis
  • lokaalselt - pgbackrest moodustab repo samasse arvutisse kus asuvad varundatavad andmed
  • kaugelt - pgbackrest repo ja varundatav arvuti on erinevad arvutid

Käesolev tekst tegeleb üle võrgu st kaugelt varundamise ja taastega.

     tf-vm-84                 tf-vm-86            tf-vm-87
      _______                  _______             _______
     |       |                |       |           |       |
     |       |                |       |           |       |
     |_______|                |_______|           |_______|
         |                        |                   |
         |                        |                   |
         |                        |                   |
   ------|-------------|----------|-------------------|
                       |
                       |
                    ___|___
                   |       | /var/lib/pgbackrest
                   |       |
                   |_______|

                    tf-vm-85

kus

  • arvutid saavad omavahel suhelda ssh võtmete abil moodustatud usalduse abil

Süsteemide ettevalmistamine

TODO

  • Andmebaas peab muu hulgas olema lähtestatud data-checksums toega, nt
# pg_createcluster --locale et_EE.UTF-8 10 main -- --data-checksums
  • Baasi seadistustes peab olema muu hulgas
root@tf-vm-84:~# grep archive_ /etc/postgresql/10/main/postgresql.conf 
archive_mode = on
archive_command = 'pgbackrest --stanza=db-tf-vm-84 archive-push %p'
  • ssh võtmete genereerimine ja laialijaotamine (varunduse arvutis on vajalik teha vaid üks kord)
varundatav-arvuti$ ssh-keygen
varunduse-arvuti$ ssh-keygen

Paigaldamine

Paigaldamiseks sobib kasutada apt.postgresql.org repot ja öelda nii varundamise kui varundatavas arvutis

# apt-get install curl ca-certificates gnupg2
# curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# cat /etc/apt/sources.list.d/pgdg.list
deb http://apt.postgresql.org/pub/repos/apt buster-pgdg main

# apt-get update
# apt-get install pgbackrest

Tulemusena paigaldatakse süsteemi lisaks sõltuvustena nt paketid

libgdbm-compat4 libgdbm6 libperl5.28 libpq5 perl perl-modules-5.28 pgbackrest pgdg-keyring postgresql-client-common postgresql-common ssl-cert

ja pgbackrest, mis sisaldab mõnda faili

/usr/bin/pgbackrest - programm
/etc/pgbackrest.conf - peamine seadistusfail

Eraldi kasutajat ei moodustata, tundub, et kõige sobilikum on tegutseda postgres kasutajana.

Varundamise seadistamine

Repo arvutis tuleb moodustada nt seadistusfail /etc/pgbackrest.conf

# cat /etc/pgbackrest.conf
[global]
repo-path=/var/lib/pgbackrest
repo1-retention-full=1
process-max=2
log-level-console=info
log-level-file=debug
start-fast=y
stop-auto=y

[db-primary]
pg1-path=/var/lib/postgresql/10/main
pg1-host=tf-vm-84
pg1-host-user=postgres

ja varundatavas arvutis seadistusfail /etc/pgbackrest.conf

# cat /etc/pgbackrest.conf
[global]
repo1-host=tf-vm-85
repo1-path=/var/lib/pgbackrest
repo1-host-user=postgres
process-max=2
log-level-console=info
log-level-file=debug

[db-primary]
pg1-path=/var/lib/postgresql/10/main

Varundamine

Varundamiseks sobib repo arvutis öelda nt

$ pgbackrest --stanza=db-tf-vm-84 stanza-create
$ pgbackrest --stanza=db-primary backup
$ pgbackrest --stanza=db-primary --type=full backup
$ pgbackrest --stanza=db-primary info

Taaste

Taastamiseks sobib varundatavas arvutis öelda nt (või ilma --delta suvandita)

$ pgbackrest --stanza=db-primary --delta restore

Varundusest eemaldamine

TODO

$ pgbackrest --stanza=db-primary stop
$ pgbackrest --stanza=db-primary stanza-delete --force

Vanade varunduste eemaldamine

Tavaliselt toimub see järgmise varunduse käigus automaatselt, aga seda saab ka käsitsi esile kutsuda, nt

  • pgbackrest töötamise põhimõttest tingituna ei saa vahepealseid varundusi eemaldada, saab eemalda suuremal või vähemal määral järjestikulist vanemat otsa
  • veenduda, et regulaarne varundamine on välja lülitatud ajutiselt (nt cron töö)
  • vähendada pgbackrest.conf seadistusfailis retention suurust sobivaks (nii, et tabatakse sobivat hulka vanu varundusi)
  • kustutada mida tabataks
$ pgbackrest --config /etc/pgbackrest.conf --stanza=pgcluster_13_main_toodang --dry-run expire
$ pgbackrest --config /etc/pgbackrest.conf --stanza=pgcluster_13_main_toodang expire
  • seadistada tagasi retention sobiv suurus

Integreerimine muu varundusega

Kui üldiselt on kasutuses nt Data Protector tarkvara, siis võiks korraldada kahe tasemelise varundamise

  • pgbackrest varundab varunduse arvuti failisüsteemi HP DP mõttes 1st stage varunduse
  • data protector kirjutab 1st stage varundust failisüsteemist 2nd stage varunduseks linti

Kasulikud lisamaterjalid