Zálohování databáze
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/