Pgbackrest kasutamine: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
173. rida: 173. rida:
 
* https://wiki.postgresql.org/wiki/Binary_Replication_Tools
 
* https://wiki.postgresql.org/wiki/Binary_Replication_Tools
 
* https://medium.com/leboncoin-engineering-blog/managing-postgresql-backup-and-replication-for-very-large-databases-61fb36e815a0
 
* https://medium.com/leboncoin-engineering-blog/managing-postgresql-backup-and-replication-for-very-large-databases-61fb36e815a0
  +
  +
===Minio===
  +
  +
<pre>
  +
# cat /etc/pgbackrest.conf
  +
[global]
  +
repo1-type=s3
  +
repo1-s3-endpoint=s3-by-minio.moraal.ee:9000
  +
repo1-s3-uri-style=path
  +
repo1-s3-region=trt
  +
repo1-path=/path-project-test-pgbackrest-1
  +
repo1-s3-bucket=bucket-division-project-test
  +
repo1-s3-key=key-division-project-test
  +
repo1-s3-key-secret=keysecret-parool
  +
  +
repo1-retention-full=3
  +
repo1-retention-diff=7
  +
  +
process-max=2
  +
log-level-console=info
  +
log-level-file=info
  +
  +
[pg_16]
  +
pg1-path=/var/lib/postgresql/16/main
  +
</pre>

Redaktsioon: 29. oktoober 2025, kell 16:16

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

Minio

# cat /etc/pgbackrest.conf
[global]
repo1-type=s3
repo1-s3-endpoint=s3-by-minio.moraal.ee:9000
repo1-s3-uri-style=path
repo1-s3-region=trt
repo1-path=/path-project-test-pgbackrest-1
repo1-s3-bucket=bucket-division-project-test
repo1-s3-key=key-division-project-test
repo1-s3-key-secret=keysecret-parool

repo1-retention-full=3
repo1-retention-diff=7

process-max=2
log-level-console=info
log-level-file=info

[pg_16]
pg1-path=/var/lib/postgresql/16/main