sql >> Database teknologi >  >> RDS >> PostgreSQL

Barman 2.11:barman-cloud-restore og barman-cloud-wal-restore

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_xact

Nu, 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.signal

Deaktiver 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.conf

Derefter 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 i restore_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.conf

VIGTIG :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 forbindelser

Konklusion

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 eller barman-cloud-backup installeret via RPM/Apt-pakken, og du opgraderer dit system, skal du installere barman-cli-cloud pakke. Dette skyldes det faktum, at med Barman 2.11-udgivelsen er alle skyrelaterede værktøjer en del af barman-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 eller recovery.signal fil som den faktiske Barman gør.


  1. Hvordan sletter jeg specifikke rækker i SQLite-databasen

  2. Konverter en juliansk dag til en dato i PostgreSQL

  3. En guide til Pgpool til PostgreSQL:del 1

  4. Sådan nulstiller du AUTO_INCREMENT i MySQL