Zálohování databáze

Z PostgreSQL
Skočit na navigaci Skočit na vyhledávání

Jednoduché zálohování pomocí pg_dump a pg_dumpall

Zálohování pomocí pg_dump a pg_dumpall je nejjednodušší metoda (když pominu zkopírování PostgreSQL clusteru při zastaveném serveru). Pro svou jednoduchost se jedná o robustní metodu.

  • Jednoduché a rychlé pro zápis.
  • Možnost zálohování vybraných databází a vybraných tabulek.
  • Záloha je ve formátu plain textu obsahující SQL příkazy.
  • Přenositelné napříč verzemi a platformami.
  • U velkých db pomalá obnova (je nutné znovuvytvářet indexy), nepraktické pro databáze nad 100G.
pg_dump mojedb > zaloha.sql

Obnova ze zálohy

psql postgres -f zaloha.sql

pg_dump neukládá seznam uživatelů databáze (v Pg se uživatelé nevztahují k jedné db). Pro export uživatelů (rolí) je nutné použít pg_dumpall -r.

Online fyzické zálohování databázového clusteru s pomocí pg_basebackup

pg_basebackup vytvoří konzistentní kopii databázového clusteru - a to za běhu serveru. Rychlost zálohování i obnovy je omezena rychlostí zápisu a čtení disků.

  • Poměrně jednoduché.
  • Zálohuje vždy celou databázi včetně indexů - mnohem větší objem zálohy - ale i mnohem rychlejší obnova

Postup

  • Úprava postgresql.conf
wal_level = archive
max_wal_senders = 1

# v případě větších db zvýšit
#wal_keep_segments = 0
  • Úprava pg_hba.conf - explicitní přístup uživatele s právem REPLICATION k fiktivní databázi replication
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
local   replication     backup                                  md5

Pozor: datábáze replication je virtuální a proto se na ní nevztahuje ALL,

  • Restart serveru - přidání uživatele backup a nastavení hesla
ostgres=# create role backup login replication;
CREATE ROLE
postgres=# alter role backup password 'heslo';
ALTER ROLE
  • Vlastní zálohování
[pavel@diana ~]$ /usr/local/pgsql91/bin/pg_basebackup -D zaloha9 -U backup -v -P -x -c fast
Password: 
xlog start point: 0/21000020
50386/50386 kB (100%), 1/1 tablespace                                    
xlog end point: 0/21000094
pg_basebackup: base backup completed

Obnova ze zálohy

Obsah adresáře zálohy zkopírujeme do adresáře clusteru PostgreSQL a nastartujeme server. Pozor - vlastníkem souborů bude uživatel, pod kterým byl spuštěn pg_basebackup, což pravděpodobně nebude uživatel postgres, a proto je nutné hromadně změnit vlastníka souborů.

Online kontinuální zálohování s použitím Barmana

ToDo: http://www.pgbarman.org/