sql >> Databáze >  >> RDS >> PostgreSQL

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

Díky novým utilitám barman-cloud-restore a barman-cloud-wal-restore představeno v Barman 2.11 , je nyní možné provést obnovu instance PostgreSQL pomocí úplné zálohy dříve provedené pomocí barman-cloud-wal-archive a barman-cloud-backup příkazy. Pojďme společně zjistit, jak to implementovat v následujícím článku.


Za zmínku stojí, že ve verzi Barman 2.11 jsou nyní všechny cloudové nástroje pro Barmana v samostatném balíčku s názvem barman-cli-cloud .

Požadavky

1. barman-cli-cloud balíček
2. Instance PostgreSQL
3. Kbelík AWS S3
4. Druhý virtuální počítač, kde se má provést obnovení

V tomto článku otestujeme barman-cli-cloud funkce ve virtuálním počítači s Debian Buster a PostgreSQL 12. Abyste mohli správně postupovat podle pokynů obsažených v tomto článku, předpokládáme také, že máte:

  • nakonfiguroval Postgres tak, aby archivoval soubory WAL do existujícího bucketu S3 pomocí barman-cloud-wal-archive
  • provedli zálohu a odeslali ji do stejného bucketu S3 prostřednictvím barman-cloud-backup

Můžete toho snadno dosáhnout podle pokynů obsažených v těchto předchozích článcích na blogu:

  • Barman Cloud – Část 1:Archiv WAL
  • Barman Cloud – Část 2:Cloud Backup

Nastavte server pro obnovení

Výsledkem je, že na AWS máme kbelík S3 s názvem barman-s3-test který již obsahuje soubory WAL a zálohu archivovanou prostřednictvím barman-cloud-wal-archive a barman-cloud-backup nástrojů, nyní musíme správně nakonfigurovat server, který bude hostitelem pro obnovu instance PostgreSQL.

1. Nainstalujte PostgreSQL 12 z oficiálního úložiště PGDG

2. Nainstalujte veřejné úložiště 2ndQuadrant

3. Nainstalujte barman-cli-cloud balíček:

[email protected]:~# apt [email protected]:~# apt install barman-cli-cloud

4. Nainstalujte awscli balíček:

[email protected]:~# apt install awscli

5. Nakonfigurujte přihlašovací údaje AWS pomocí nástroje awscli jako uživatel postgres:

[email protected]:~$ aws configure --profile barman-cloudAWS ID přístupového klíče [Žádné]:AKI***************** Tajný přístupový klíč AWS [Žádné ]:*********************************************Výchozí název regionu [Žádný]:eu -west-1Výchozí výstupní formát [Žádný]:json

Proveďte proceduru obnovení

Nyní, když je server pro obnovu správně nakonfigurován, jsme připraveni zahájit proceduru obnovy.

Barman 2.11 zavádí barman-cloud-backup-list příkaz, který vám umožní získat informace o zálohách vytvořených pomocí barman-cloud-backup :

[email protected]:~$ barman-cloud-backup-list \ --profile barman-cloud \ s3://barman-s3-test pg12Začátek ID zálohy Wal20200713T120856 2020-07-13 12:09:05 00000001000000000000000C

Nyní jsme připraveni provést obnovu pomocí barman-cloud-restore příkaz:

[email protected]:~$ barman-cloud-restore \ --profile barman-cloud \ s3://barman-s3-test \ pg12 20200713T120856 \ /var/lib/postgresql/12/main/ 

Jakmile bude obnovení úspěšně ukončeno, můžeme zkontrolovat obsah adresáře PGDATA:

[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_label pg_commitnapbase pgs pg_replslot pg_stat pg_tblspc pg_xact

Nyní, abychom si byli jisti, že proces obnovy fungoval správně, musíme spustit obnovenou instanci PostgreSQL a ověřit, že vše funguje podle očekávání. Tento proces vyžaduje několik dalších kroků.

Za prvé, protože jsme na systému Debian, musíme zkopírovat soubory obsahující konfiguraci PostgreSQL do /etc/postgresql/12/main/ adresář:

[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/ 

Zadruhé vytvořte recovery.signal soubor:

[email protected]:~$ touch /var/lib/postgresql/12/main/recovery.signal

Poté vypněte archive_command abyste zabránili obnovené instanci zapisovat do stejného segmentu jako původní instance:

[email protected]:~$ echo \"archive_command ='cd .'\">> /etc/postgresql/12/main/postgresql.conf

Poté musíte nakonfigurovat PostgreSQL tak, aby načítal soubory WAL nejnovější dostupné časové osy z bucketu S3 pomocí barman-cloud-wal-restore v 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 ='nejnovější'\">> /etc/postgresql/12/main/postgresql.conf

DŮLEŽITÉ :Než budete pokračovat, ujistěte se, že instance PostgreSQL není spuštěna a že cílový adresář (výchozí datadir PostgreSQL) je prázdný.

Konečně jsme připraveni spustit novou obnovenou instanci:

[email protected]:~# restart systemctl [email protected]

Skvělý! Jak můžeme vidět z protokolu PostgreSQL, soubory WAL jsou obnoveny z bucketu S3 a instance byla správně spuštěna:

[email protected]:~$ less /var/log/postgresql/postgresql-12-main.log...2020-07-13 12:43:25.093 UTC [9458] LOG:spuštění PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) na x86_64-pc-linux-gnu, zkompilovaný gcc (Debian 8.3.0-6) 8.3.0, 64-bit2020-07-13 12:43:25.093 UTC [9458] LOG poslech na IPv4 adrese "127.0.0.1", port 54322020-07-13 12:43:25.095 UTC [9458] LOG:poslech na Unix socketu "/var/run/postgresql/.s.PGSQL.5432"2020-07- 13 12:43:25.111 UTC [9459] LOG:databázový systém byl přerušen; naposledy známé v 2020-07-13 12:08:56 UTC2020-07-13 12:43:25.508 UTC [9459] LOG:zahájení obnovy archivu2020-07-13 12:43:26.010 UTC [9459] LOG soubor "00000001000000000000000C" z archivu 2020-07-13 12:43:26.052 UTC [9459] LOG:opakování začíná v 0/C0000282020-07-13 08:00 konzistentní obnova dosažena v 09 09 09.00 24.04. -07-13 12:43:26.054 UTC [9458] LOG:databázový systém je připraven přijímat připojení pouze pro čtení2020-07-13 12:43:26.469 UTC [9459] LOG:obnovený soubor protokolu "00000001000000700000" z archivu 00000007000000 13 12:43:26.823 UTC [9459] LOG:opakování provedeno v 0/D0001B02020-07-13 12:43:27.242 UTC [9459] LOG:obnovený soubor protokolu "00000001000020000000100002000003000000200000300007 UTC [9459] LOG:vybraná nová časová osa ID:22020-07-13 12:43:27.644 UTC [9459] LOG:obnovení archivu dokončeno2020-07-13 12:43:27.979 UTC [9458] LOG:databázový systém je připraven k přijímat připojení

Závěr

Jako obvykle u každé nové verze Barmana doporučujeme každému aktualizovat své systémy na nejnovější verzi. Kompletní seznam změn a oprav chyb je k dispozici zde.

Vezměte prosím na vědomí, že pokud již používáte barman-cloud-wal-archive nebo barman-cloud-backup nainstalován přes balíček RPM/Apt a upgradujete svůj systém, musíte nainstalovat barman-cli-cloud balík. To je způsobeno skutečností, že s vydáním Barman 2.11 jsou všechny nástroje související s cloudem součástí barman-cli-cloud balíček, jak je vysvětleno na začátku článku.

Příští verze Barmana mohou zlepšit použitelnost a automatizační schopnosti příkazu recovery, například přípravou recovery.conf nebo recovery.signal soubor jako skutečný Barman.


  1. Co je to „vícedílný identifikátor“ a proč jej nelze svázat?

  2. Propojené servery Salesforce.com a sp_columns_ex

  3. OMEZENÍ SQL

  4. Vložit text s jednoduchými uvozovkami v PostgreSQL