Takket være de nye hjælpeprogrammer barman-cloud-restore
og barman-cloud-wal-restore
introduceret i Barman 2.11
, er det nu muligt at udføre gendannelsen af en PostgreSQL-instans ved hjælp af en fuld sikkerhedskopi, der tidligere er udført ved hjælp af barman-cloud-wal-archive
og barman-cloud-backup
kommandoer. Lad os sammen finde ud af, hvordan du implementerer dette i den følgende artikel.
Det er værd at bemærke, at i Barman 2.11 er alle skyværktøjer til Barman nu i en separat pakke kaldet barman-cli-cloud
.
Krav
1. barman-cli-cloud
pakke
2. En PostgreSQL-instans
3. En AWS S3 spand
4. En anden virtuel maskine, hvor gendannelsen skal udføres
I denne artikel vil vi teste barman-cli-cloud
funktionaliteter i en virtuel maskine med Debian Buster og PostgreSQL 12. For at kunne følge instruktionerne i denne artikel korrekt, antager vi også, at du har:
- konfigurerede Postgres til at arkivere WAL-filer til en eksisterende S3-bøtte ved hjælp af
barman-cloud-wal-archive
- udførte en sikkerhedskopi og sendte den til den samme S3-bøtte gennem
barman-cloud-backup
Du kan nemt opnå dette ved at følge instruktionerne i disse tidligere blogartikler:
- Barman Cloud – Del 1:WAL Archive
- Barman Cloud – Del 2:Cloud Backup
Konfigurer gendannelsesserveren
Som et resultat har vi en S3 bucket på AWS ved navn barman-s3-test
som allerede indeholder WAL-filerne og backup arkiveret via barman-cloud-wal-archive
og barman-cloud-backup
værktøjer, nu skal vi korrekt konfigurere en server, der vil være vært for gendannelse af PostgreSQL-instansen.
1. Installer PostgreSQL 12 fra det officielle PGDG-lager
2. Installer 2ndQuadrant Public repository
3. Installer barman-cli-cloud
pakke:
[email protected]:~# apt [email protected]:~# apt install barman-cli-cloud
4. Installer awscli
pakke:
[email protected]:~# apt install awscli
5. Konfigurer AWS-legitimationsoplysninger med awscli-værktøjet som postgres-bruger:
[email protected]:~$ aws configure --profile barman-cloudAWS adgangsnøgle-id [Ingen]:AKI******************AWS hemmelig adgangsnøgle [Ingen] ]:**************************************** Standard områdenavn [Ingen]:eu -west-1Standard outputformat [Ingen]:json
Udfør gendannelsesproceduren
Nu hvor gendannelsesserveren er korrekt konfigureret, er vi klar til at starte gendannelsesproceduren.
Barman 2.11 introducerer barman-cloud-backup-list
kommando, der giver dig mulighed for at hente information om sikkerhedskopier lavet med barman-cloud-backup
:
[email protected]:~$ barman-cloud-backup-list \ --profile barman-cloud \ s3://barman-s3-test pg12Backup ID Sluttidspunkt Begynd Wal20200713T120856 2020-07-13 12:09:05 00000001000000000000000C
Vi er nu klar til at udføre gendannelsen ved hjælp af barman-cloud-restore
kommando:
[email protected]:~$ barman-cloud-restore \ --profile barman-cloud \ s3://barman-s3-test \ pg12 20200713T120856 \ /var/lib/postgresql/12/main/Når gendannelsen afsluttes med succes, kan vi kontrollere PGDATA-bibliotekets indhold:
[email protected]:~$ ls /var/lib/postgresql/12/main/PG_VERSION global pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase postgresql.auto.confbackup_label pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans pg_wal postgresql.confbase pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_xactNu, for at være sikre på, at gendannelsesprocessen fungerede korrekt, skal vi starte den gendannede PostgreSQL-instans og kontrollere, at alt fungerer som forventet. Denne proces kræver nogle yderligere trin.
For det første, da vi er på et Debian-system, skal vi kopiere filerne, der indeholder PostgreSQL-konfigurationen under
/etc/postgresql/12/main/
mappe:[email protected]:~$ cp /var/lib/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/[email protected]:~$ cp /var/lib/postgresql /12/main/pg_hba.conf /etc/postgresql/12/main/[email protected]:~$ cp /var/lib/postgresql/12/main/pg_ident.conf /etc/postgresql/12/main/For det andet skal du oprette
recovery.signal
fil:[email protected]:~$ touch /var/lib/postgresql/12/main/recovery.signalDeaktiver derefter
archive_command
for at forhindre den gendannede forekomst i at skrive i samme bøtte som den oprindelige forekomst:[email protected]:~$ echo \"archive_command ='cd .'\">> /etc/postgresql/12/main/postgresql.confDerefter skal du konfigurere PostgreSQL til at hente WAL-filerne fra den seneste tilgængelige tidslinje fra S3-bøtten ved at bruge
barman-cloud-wal-restore
irestore_command
:[email protected]:~$ echo \"restore_command ='barman-cloud-wal-restore --profile barman-cloud s3://barman-s3-test pg12 %f %p'\">> / etc/postgresql/12/main/[email protected]:~$ echo \"recovery_target_timeline ='seneste'\">> /etc/postgresql/12/main/postgresql.confVIGTIG :Før du fortsætter, skal du sikre dig, at PostgreSQL-forekomsten ikke kører, og at destinationsmappen (standard-PostgreSQL-datakataloget) er tom.
Endelig er vi klar til at starte den nye gendannede instans:
[email protected]:~# systemctl genstart [email protected]Store! Som vi kan se fra PostgreSQL-loggen, gendannes WAL-filer fra S3-bøtten, og instansen blev startet korrekt:
[email protected]:~$ less /var/log/postgresql/postgresql-12-main.log...2020-07-13 12:43:25.093 UTC [9458] LOG:starter PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) på x86_64-pc-linux-gnu, kompileret af gcc (Debian 8.3.0-6) 8.3.0, 64-bit2020-07-13 12:43:25.093 UTC [9458] LOG:lytter på IPv4-adresse "127.0.0.1", port 54322020-07-13 12:43:25.095 UTC [9458] LOG:lytter på Unix-socket "/var/run/postgresql/.s.PGSQL.5432"2020-2020 13 12:43:25.111 UTC [9459] LOG:databasesystemet blev afbrudt; sidst kendt 2020-07-13 12:08:56 UTC2020-07-13 12:43:25.508 UTC [9459] LOG:starter arkivgendannelse 2020-07-13 12:43:26.010 UTC [9459] LOG:genoprettet arkiv fil "00000001000000000000000C" fra Archive2020-07-13 12:43:26.052 UTC [9459] Log:Redo starter ved 0/C0000282020-07-13 12:43:26.054 UTC [9459] Log:Konsistent gendannelsesstat nået ved 0/C00013820202020202020202020202020202020202020202020202022 -07-13 12:43:26.054 UTC [9458] LOG:databasesystemet er klar til at acceptere skrivebeskyttede forbindelser2020-07-13 12:43:26.469 UTC [9459] LOG:gendannet logfil "0000000100000000002D000000000002D00000000002D0000000000000000000000000000000002 13 12:43:26.823 UTC [9459] LOG:gendannet udført kl. 0/D0001B02020-07-13 12:43:27.242 UTC [9459] LOG:gendannet logfil "00000001000000000002D-300000000002.72" UTC [9459] LOG:valgt ny tidslinje ID:22020-07-13 12:43:27.644 UTC [9459] LOG:arkivgendannelse komplet2020-07-13 12:43:27.979 UTC [9458] LOG:databasesystemet er klar til at acceptere forbindelserKonklusion
Som sædvanligt med enhver ny udgivelse af Barman, anbefaler vi, at alle opdaterer deres systemer til den nyeste version. En komplet liste over ændringer og fejlrettelser er tilgængelig her.
Bemærk venligst, at hvis du allerede bruger
barman-cloud-wal-archive
ellerbarman-cloud-backup
installeret via RPM/Apt-pakken, og du opgraderer dit system, skal du installerebarman-cli-cloud
pakke. Dette skyldes det faktum, at med Barman 2.11-udgivelsen er alle skyrelaterede værktøjer en del afbarman-cli-cloud
pakke som forklaret i begyndelsen af artiklen.De næste versioner af Barman kan muligvis forbedre gendannelseskommandoens anvendelighed og automatiseringsmuligheder, for eksempel ved at forberede en
recovery.conf
ellerrecovery.signal
fil som den faktiske Barman gør.