Zálohování databáze: Porovnání verzí

Z PostgreSQL
Přejít na: navigace, hledání
(Obnova ze zálohy)
m (Pavel přesunul stránku Backup na Zálohování databáze)
 
(Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.)
Řádka 23: Řádka 23:
 
<pre>
 
<pre>
 
wal_level = archive
 
wal_level = archive
archive_mode = on
 
archive_command = '/bin/true'
 
 
max_wal_senders = 1
 
max_wal_senders = 1
  
Řádka 58: Řádka 56:
 
===Obnova ze zálohy===
 
===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ů.
 
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/

Aktuální verze z 15. 9. 2013, 07:17

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/