sql >> Databáze >  >> RDS >> PostgreSQL

Zálohování a obnova PostgreSQL 9.0

V PostgreSQL jsou Backup &Recovery ve srovnání s jinými databázemi velmi uživatelsky přívětivé. Mnoho z nich s tím nebude souhlasit, ok, nepouštějme se do debaty. Pokud jde o zálohování, PostgreSQL nepodporuje PŘÍRUČKOVÉ ZÁLOHOVÁNÍ, nicméně k dosažení tohoto cíle existují velmi konzistentní nástroje pro zálohování a řešení na úrovni OS.

Moje obrazová prezentace o PostgreSQL Backup and Recovery poskytuje kompletní koncepční představu. Při pohledu do Diagramu můžete zjistit, které zálohy lze použít k obnovení nebo obnovení.

Logická záloha

Obslužné programy pg_dump, pg_restore a pg_dumpall používané pro logické zálohy. pg_dump a pg_restore pomohou při vytváření záloh pro úroveň databáze, úroveň schématu a úroveň tabulky. Pg_dumpall používaný pro výpis na úrovni clusteru.

Jsou podporovány tři formáty s pg_dump, Plain SQL format, Custom Format a Tar Format. Výpisy Custom a Tar Format jsou kompatibilní s nástrojem pg_restore, zatímco výpisy ve formátu Plain SQL jsou kompatibilní s nástrojem psql pro obnovu.

Níže jsou uvedeny příklady pro jednotlivé úrovně zálohování a související příkazy obnovení.

Poznámka:Nastavte výchozí hodnoty pro PGDATABASE, PGUSER, PGPASSWORD a PGPORT v .bash_profile(Proměnné prostředí ve Windows)

Prostý výpis a obnovení formátu SQL

$ pg_dump -U username -Fp dbname  >  filename
or
$ pg_dump -U username dbname -f filename
or
$ pg_dump -Fp -U username dbname -f filename

For restoring use psql command

$ psql -U username -f filename dbname
or
postgres=# i SQL-file-name //in psql terminal with i option

Vlastní formát

$ pg_dump -Fc dbname -f filename
$ pg_restore -Fc -U username -d dbname filename.dmp

Formát tar

$ pg_dump -Ft dbname -f filename
$ pg_restore -U username -d dbname filename
or
$ cat tar-file.tar | psql -U username dbname

Poznámka:Výpis úrovně schématu a úrovně tabulek lze provést stejným způsobem přidáním souvisejících možností.

Výpis na úrovni clusteru:

$pg_dumpall -p portnumber > filename

For restoring use psql command

$ psql -f filename

Existují nejlepší způsoby, jak odstranit skládky a obnovit metodologii. Zejména kniha Simon Riggs a Hannu Krosing – “PostgreSQL 9 Administration Cookbook – 2010” je dobrý způsob, jak začít s PostgreSQL Backup and Recovery publikovaným www.2ndQuadrant.com.

Fyzická záloha (záloha systému souborů)

Studené zálohování:

V případě studené zálohy se jedná o jednoduchou zálohu souborového systému adresáře /data, když je instance Postgres vypnutá, což znamená, že pro dosažení samokonzistentní zálohy datového adresáře by měl být databázový server před kopírováním vypnut. PostgreSQL poskytuje flexibilitu pro udržování pg_xlog a pg_tblspce v různých přípojných bodech prostřednictvím softlinku. Při kopírování adresáře /data včetně dat softwarového odkazu použijte níže uvedený příkaz.

tar czf backup.tar.gz $PGDATA
or
cp -r $PGDATA /backup/
or
rsync -a $PGDATA /wherever/data

Hot Backup (Online Backup):

V Hot Backup bude cluster spuštěn a spuštěn a databáze by měla být v režimu Archive Log Mode. Dvě systémové funkce upozorní instanci na spuštění a zastavení procesu Hot Backup (pg_start_backup(),pg_stop_backup()). Než se pustíme do online zálohování, proberme režim protokolu archivace databáze, který je pro online zálohování povinný.

Povolení archivace WAL:

Moje další příspěvky budou stručně informovat o PITR / Tunning WAL atd., v současné době se podíváme na archivaci WAL. V databázovém systému PostgreSQL se skutečná databáze „zapisuje“ do doplňkového souboru zvaného zápis předem (WAL) na disk. Obsahuje záznam o zápisech provedených v databázovém systému. V případě Crash lze databázi opravit/obnovit z těchto záznamů.

Normálně se protokoly zápisu do protokolu v pravidelných intervalech (nazývané kontrolní body) porovnávají s databází a poté se vymažou, protože již nejsou vyžadovány. WAL můžete také použít jako zálohu, protože existuje záznam o všech zápisech provedených do databáze.

Koncept archivace WAL:

Záznam napřed se skládá z každého o velikosti 16 MB, které se nazývají segmenty. WAL jsou umístěny v adresáři pg_xlog a je to podadresář ‚data directory‘. Názvy souborů budou mít číselné názvy ve vzestupném pořadí podle instance PostgreSQL. Chcete-li provést zálohu na základě WAL, potřebujete základní zálohu, tj. kompletní zálohu datového adresáře a segmentů WAL mezi základní zálohou a aktuálním datem.

Konfiguraci archivace segmentů WAL lze zvolit nastavením archiv_příkaz a archive_mode u dvou konfiguračních parametrů v souboru postgresql.conf. Převedení clusteru do režimu archivačního protokolu vyžaduje RESTART.

archive_mode= on/off (boolean parameter)
archive_command = 'cp –i %p / Archive/Location/ f% '

Poznámka: % p pro soubor ke kopírování s cestou použitou jako název souboru a % f bez položky adresáře pro cílový soubor.

Další informace o Archiver Process najdete v příspěvku PostgreSQL 9.0 Memory &Processess.

Zálohování online:

Postup online zálohování:

Step 1 : Issue pg_start_backup('lable') in the psql terminal
postgres=# select pg_start_backup('fb');
Step 2 : OS level copy the $PGDATA directory to any Backup Location
$ cp -r $PGDATA /anylocation
Step 3 : Issue pg_stop_backup() in psql terminal.
postgres=# select pg_stop_backup();

Poznámka: Není nutné, aby tyto dvě funkce běžely ve stejném připojení k databázi. Režim zálohování je globální a trvalý.

V PostgreSQL neexistuje žádný katalog pro uložení času spuštění a ukončení online zálohy. Když však probíhá online zálohování, několik souborů se vytvoří a odstraní.

pg_start_backup(‘label’) a pg_stop_backup jsou dvě systémové funkce pro provádění online zálohování. Pomocí pg_start_backup(‘label’) se vytvoří soubor backup_label v adresáři $PGDATA a pomocí pg_stop_backup() se vytvoří soubor ‚wal-segement-number.backup‘ pod $PGDATA/pg_xlog. Backup_label poskytne počáteční čas a umístění kontrolního bodu segmentu WAL a také upozorní instanci PostgreSQL, že Cluster je v BACKUP-MODE. Soubor ‚wal-segment-number.backup‘ v adresáři $PGDATA/pg_xlog popisuje čas začátku a konce, umístění kontrolního bodu s číslem segmentu WAL.

Poznámka:Po pg_stop_backup() je soubor backup_label odstraněn instancí PostgreSQL.

Pište své připomínky, návrhy.


  1. Jak funguje funkce TRANSLATE() v SQL Server (T-SQL)

  2. T-SQL úterý #64:Jeden spouštěč nebo mnoho?

  3. Jak funguje funkce PATINDEX() v SQL Server (T-SQL)

  4. Modelovací varianty produktu