PostgreSQL Datenbankpraxis für Anwender, Administratoren und Entwickler

Kapitel 11 - Backup, Restore, Replikation

Seite 378

Datenbank mit pg_dump sichern

pg_dump --file=test.sql test


Datenbankcluster mit pg_dumpall sichern

pg_dumpall --file=ganze_datenbank.sql


Zu anderer Datenbank verbinden

pg_dumpall --database=template1 -f ganze_datenbank.sql

Seite 379

Datenbank mit psql wiederherstellen

createdb neue_db
psql -f test.sql neue_db


Datenbank mit psql wiederherstellen

CREATE DATABASE neue_db;
\c neue_db
\i test.sql


Datenbank mit psql wiederherstellen

createdb neue_db
cat test.sql | psql neue_db

Seite 380

Datenbank mit psql wiederherstellen

psql neue_db < test.sql


Tabellenstruktur exportieren

pg_dump --schema-only

Seite 381

Daten exportieren

pg_dump --data-only


Einzelne Tabellen exportieren

pg_dump --table=tabelle1 --table=tabelle2


Einzelnes Schema exportieren

pg_dump --schema=mein_schema

Seite 382

Schema vom Export ausschließen

pg_dump --exclude-schema=anderes_schema


Daten als INSERT exportieren

pg_dump --inserts


Daten mit Spaltennamen exportieren

pg_dump --inserts --column-inserts

Seite 383

Encoding wählen

pg_dump --encoding=latin1


Datenbank beim Import erstellen

pg_dump --create


Vorhandene Objekte löschen

pg_dump --clean

Seite 384

Datenbank im Tar-Format exportieren

pg_dump --format=tar -file=backup.tar test


Datenbankexport im Custom-Format

pg_dump --format=custom -file=backup.dump test

Seite 385

Wiederherstellen einer Datenbank

createdb test_neu
pg_restore --dbname=test_neu backup.dump


Ausgabe der SQL-Anweisungen

pg_restore backup.dump

Seite 386

Paralleles Wiederherstellen

pg_restore --dbname=test_neu --jobs=2 backup.dump


Ausgabe des Inhaltsverzeichnisses

pg_restore --list backup.dump


Inhaltsverzeichnis in Datei umleiten

pg_restore --list backup.dump > backup.list

Seite 387

Wiederherstellen mit Inhaltsdatei

pg_restore --use-list=backup.list backup.dump

Seite 389

Online Backup konfigurieren

archive_mode = on
archive_command = '/bin/cp -i %p /srv/backup/pg/logs/%f < /dev/null'


Von PostgreSQL ausgeführter Befehl

/bin/cp -i 010000000A020 /srv/backup/pg/logs/010000000A020

Seite 390

Nächstes Transaktionslog beginnen

archive_timeout = 3600


Backup starten

SELECT pg_start_backup('backup name');

Seite 391

Datenverzeichnis kopieren

cp -dpRv /var/lib/postgresql/data/* /srv/backup/pg/data/


Backup stoppen

SELECT pg_stop_backup();


.backup-Datei enthält Informationen zum Backup

START WAL LOCATION: 7/47000120 (file 000000010000000700000047)
STOP WAL LOCATION: 7/4700017C (file 000000010000000700000047)
CHECKPOINT LOCATION: 7/47000120
START TIME: 2009-01-23 11:45:21 CET
LABEL: backup name
STOP TIME: 2009-01-23 11:48:37 CET

Seite 392

Datenbank stoppen

/etc/init.d/postgresql stop

Seite 393

pg_hba.conf erweitern

local    all    postgres                 ident sameuser
local    all    all                      reject
host     all    all         0.0.0.0/0    reject


recovery.conf erstellen

restore_command = '/bin/cp /srv/backup/pg/logs/%f %p'

Seite 394

Datenbank starten

/etc/init.d/postgresql start

Seite 395

Anhand Zeitangabe stoppen

restore_command = '/bin/cp /srv/backup/pg/logs/%f %p'
recovery_target_time = '2009-01-24 11:48:37+02'
recovery_target_inclusive = 'false'


Anhand Transaktionsnummer stoppen

restore_command = '/bin/cp /srv/backup/pg/logs/%f %p'
recovery_target_xid = '851655'
recovery_target_inclusive = 'false'

Seite 397

recovery.conf konfigurieren

restore_command = 'pg_standby -c -t /tmp/pg_standby.trigger /srv/backup/pg/logs/%f %p %r 2>> /tmp/pg_standby.log'

Seite 398

Entpacken der Sourcen

tar xfz slony-1.2.tar.gz

oder:

gunzip -cd slony-1.2.tar.gz | tar xf -

Seite 399

Konfigurieren

cd slony-1.2/
./configure --with-perltools


Kompilieren und Installieren

make
make install


pg_hba.conf konfigurieren

host    test    postgres    192.168.23.2/32    trust


pg_hba.conf konfigurieren

host    test    postgres    192.168.23.1/32    trust

Seite 400

Einen Node in slon_tools.conf eintragen

add_node(node     => 1,
         host     => '192.168.23.1',
         dbname   => 'test',
         port     => 5432,
         user     => 'postgres',
         password => '');


Ein Set in slon_tools.conf eintragen

$SLONY_SETS = {
  "Set_1" => {
    "set_id" => 1,
...

Seite 401

Cluster initialisieren

slonik_init_cluster --config slon_tools.conf | slonik


generierte slonik-Anweisungen

slonik_init_cluster --config slon_tools.conf


slon-Instanz starten

slon_start --config slon_tools.conf 1

Seite 402

Replikation eines Sets starten

slonik_create_set --config slon_tools.conf Set_1 | slonik


Replikation eines Sets starten

slonik_subscribe_set --config slon_tools.conf Set_1 1 | slonik


Replikation entfernen

slonik_uninstall_nodes --config slon_tools.conf | slonik

Seite 403

Entpacken der Sourcen

tar xfz pgpool-II-2.2.1.tar.gz

oder:

gunzip -cd pgpool-II-2.2.1.tar.gz | tar xf -


Konfigurieren

cd pgpool-II-2.2.1/
./configure --prefix=/usr


Kompilieren und Installieren

make
make install

Seite 404

Netzwerk konfigurieren

listen_addresses = '*'
port = 9999


Datenbanken konfigurieren

backend_hostname0 = '192.168.23.1'
backend_port0 = 5432
backend_weight0 = 1


backend_hostname1 = '192.168.23.2'
backend_port1 = 5432
backend_weight1 = 2


pgpool-II mit Slony nutzen

replication_mode = false
load_balance_mode = true
master_slave_mode = true