Backup
Z PostgreSQL
Obsah |
[editovat] 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
[editovat] 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.
[editovat] 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
[editovat] Postup
- Úprava postgresql.conf
wal_level = archive archive_mode = on archive_command = '/bin/true' max_wal_senders = 1
- Ú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 ~]$ pg_basebackup -D zaloha1 -U backup Password: NOTICE: pg_stop_backup complete, all required WAL segments have been archived
[editovat] Obnova ze zálohy
Obsah adresáře zálohy zkopírujeme do adresáře clusteru PostgreSQL a nastartujeme server.