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_xactNyní, 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.signalPoté 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.confPoté musíte nakonfigurovat PostgreSQL tak, aby načítal soubory WAL nejnovější dostupné časové osy z bucketu S3 pomocí
barman-cloud-wal-restore
vrestore_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.confDŮ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
nebobarman-cloud-backup
nainstalován přes balíček RPM/Apt a upgradujete svůj systém, musíte nainstalovatbarman-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
neborecovery.signal
soubor jako skutečný Barman.