Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: pg_dumpall -Fc

  1. #11
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Wenn du das Datenverzeichnis angelegt hast, wirst nur du allein wissen, wo das ist. Das musst du da eintragen.

    Überhaupt frage ich mich, wieso das Skript überhaupt das Datenverzeichnis braucht ... das ist zum Dumpen nicht notwendig.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  2. #12
    karl_ha ist offline Erfahrener Benutzer
    Registriert seit
    08.03.2009
    Beiträge
    225

    Standard

    Jetzt bekomme ich wieder eine Fehlermeldung.

    Von diesem Beispiel: http://erics-notes.blogspot.com/2008_02_01_archive.html

    Code:
    pg_dump: SQL command failed
    pg_dump: Error message from server: FEHLER:  ungültiger regulärer Ausdruck: parentheses () not balanced
    pg_dump: The command was: SELECT oid FROM pg_catalog.pg_namespace n
    WHERE n.nspname ~ '^((5)$'
    Hier die Ausgaben im backup-Ordner. Mit dem letzen Schema hat er Probleme.
    Code:
    backup.20091214_185936.datenbank.tar.bz2
    backup.20091214_185938.datenbank.information_schema.tar.bz2
    backup.20091214_185939.datenbank.pg_catalog.tar.bz2
    backup.20091214_185941.datenbank.pg_toast.tar.bz2
    backup.20091214_185941.datenbank.pg_toast_temp_1.tar.bz2
    backup.20091214_185941.datenbank.public.tar.bz2
    backup.20091214_185943.datenbank.(5.tar.bz2
    Geändert von karl_ha (15.12.2009 um 10:32 Uhr)

  3. #13
    karl_ha ist offline Erfahrener Benutzer
    Registriert seit
    08.03.2009
    Beiträge
    225

    Standard

    Ich habe das Script jetzt umgeschrieben, es werden nur die public-Schemas der DBs gesichert.

    PHP-Code:
    # #!/bin/bash
    #
    # # setup environment
    PG_PORT=5432

    PG_HOME
    =/usr/lib/postgresql/8.3
    PG_VAR
    =/backup

    PG_DATA
    =/backup/data
    PG_BACKUPS
    =/backup/backup
    PG_LOGS
    =/backup/logs

    PG_BIN
    =/usr/lib/postgresql/8.3/bin
    PG_DUMPALL
    =/usr/lib/postgresql/8.3/bin/pg_dumpall
    PG_DUMP
    =/usr/lib/postgresql/8.3/bin/pg_dump
    PG_PSQL
    =/usr/lib/postgresql/8.3/bin/psql
    PG_VACUUMDB
    =/usr/lib/postgresql/8.3/bin/vacuumdb

    PG_BACKUP
    =/backup/backup/17122009_1400
    PG_LOG_FILE
    =/backup/logs/backup_17122009_1400.log

    COMPRESS
    ="bzip2 -9"
    DUMPALL_ARGS="-p 5432 -c -g -o -U postgres"
    DUMP_ARGS="-p 5432 -c -o -F t -U postgres"
    VACUUM_ARGS="-z -p 5432 -d -U postgres"
    PSQL_ARGS="-p 5432 -U postgres -q -c"

    echo "`date`: Script $0 starting" >> backup_17122009_1400.log 2>&1

    # Make the backup directory

    mkdir -/backup/backup/17122009_1400 >> backup_17122009_1400.log 2>&1

    # Iterate over all databases
    databases=`/usr/lib/postgresql/8.3/bin/psql -p 5432 -U postgres -q -c "\l" 2>> /backup/logs/backup_17122009_1400.log | sed -n 4,/\eof/p | grep -v rows\) | awk {'print $1'}`
    for 
    database in $databases
    do

    #   echo "`date`: Vacuuming database '$database'" >> /backup/logs/backup_17122009_1400.log 2>&1
    #   /usr/lib/postgresql/8.3/bin/vacuumdb -z -p 5432 -d -U postgres $database  >> /backup/logs/backup_17122009_1400.log 2>&1
    #   echo "`date`: Vacuuming of database '$database' complete" >> /backup/logs/backup_17122009_1400.log 2>&1

        
    PG_DUMP_DB_FILE=/backup/backup/17122009_1400/backup.17122009_1400.$database.tar.bz2
        
    echo "`date`: Backing up database '$database' to '$PG_DUMP_DB_FILE'" >> /backup/logs/backup_17122009_1400.log 2>&1
        
    /usr/lib/postgresql/8.3/bin/pg_dump -p 5432 ---F t -U postgres $database 2>> /backup/logs/backup_17122009_1400.log bzip2 -$PG_DUMP_DB_FILE 2>> /backup/logs/backup_17122009_1400.log
        
    echo "`date`: Backing up database '$database' to '$PG_DUMP_DB_FILE' complete" >> /backup/logs/backup_17122009_1400.log 2>&1

        
    # iterate over all schemas in this database
        
    schemas=`/usr/lib/postgresql/8.3/bin/psql -p 5432 -U postgres -q -c "\dn public" -d $database 2>> /backup/logs/backup_17122009_1400.log | sed -n 4,/\eof/p | grep -v rows\) | awk {'print $1'}`
        for 
    schema in $schemas
        
    do
            
    PG_DUMP_SCHM_FILE=/backup/backup/17122009_1400/backup.17122009_1400.$database.$schema.tar.bz2
            
    echo "`date`: Backing up schema '$schema' of database '$database' to '$PG_DUMP_SCHM_FILE'" >> /backup/logs/backup_17122009_1400.log 2>&1
            
    /usr/lib/postgresql/8.3/bin/pg_dump -p 5432 ---F t -U postgres -n $schema $database 2>> /backup/logs/backup_17122009_1400.log |  bzip2 -$PG_DUMP_SCHM_FILE 2>> /backup/backup/logs/backup_17122009_1400.log
            
    echo "`date`: Backing up schema '$schema' of database '$database' to '$PG_DUMP_SCHM_FILE' complete" >> /backup/logs/backup_17122009_1400.log 2>&1
        done
    done 
    Ein Fehler kommt aber immer noch:

    PHP-Code:
    Do 17. Dez 15:33:23 CET 2009Backing up schema '(1' of database 'alktemplate' to '/backup/backup/17122009_1400/backup.17122009_1400.alktemplate.(1.tar.bz2' complete
    Do 17. Dez 15:33:23 CET 2009Backing up database 'augsburg_doms' to '/backup/backup/17122009_1400/backup.17122009_1400.augsburg_doms.tar.bz2'
    Do 17. Dez 15:33:25 CET 2009Backing up database 'augsburg_doms' to '/backup/backup/17122009_1400/backup.17122009_1400.augsburg_doms.tar.bz2' complete
    Do 17. Dez 15:33:25 CET 2009Backing up schema 'public' of database 'augsburg_doms' to '/backup/backup/17122009_1400/backup.17122009_1400.augsburg_doms.public.tar.bz2'
    Do 17. Dez 15:33:27 CET 2009Backing up schema 'public' of database 'augsburg_doms' to '/backup/backup/17122009_1400/backup.17122009_1400.augsburg_doms.public.tar.bz2' complete
    Do 17. Dez 15:33:27 CET 2009Backing up schema '(1' of database 'augsburg_doms' to '/backup/backup/17122009_1400/backup.17122009_1400.augsburg_doms.(1.tar.bz2'
    pg_dumpSQL command failed
    pg_dump
    Error message from serverFEHLER:  ungültiger regulärer Ausdruckparentheses () not balanced
    pg_dump
    The command wasSELECT oid FROM pg_catalog.pg_namespace n
    WHERE n
    .nspname '^((1)$' 
    Kennt jemand hier ein Forum, bei dem shell-Probleme gepostet werden können?

  4. #14
    karl_ha ist offline Erfahrener Benutzer
    Registriert seit
    08.03.2009
    Beiträge
    225

    Standard

    PHP-Code:
    for db in `$PG_BIN/psql $PG_CON -lt | sed /\eof/p | grep -v rows\) | awk {'print $1'}
    Was macht awk genau? Wenn ich das Script ohne awk in der Konsole ausgebe erscheint eine Liste mit allen DBs. Mit ist die Ausgabe ein ">" (ohne user#)

  5. #15
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    751

    Standard

    Zitat Zitat von karl_ha Beitrag anzeigen
    PHP-Code:
    for db in `$PG_BIN/psql $PG_CON -lt | sed /\eof/p | grep -v rows\) | awk {'print $1'}
    Was macht awk genau? Wenn ich das Script ohne awk in der Konsole ausgebe erscheint eine Liste mit allen DBs. Mit ist die Ausgabe ein ">" (ohne user#)
    awk ist ein äusserst mächtiger Textprozessor, in etwa ähnlich sed. Damit kannst du eine Datei zeilenweise in ihre Bestandteile zerlegen und neu zusammensetzen. Hier gibt er dir allerdings nur das erste Wort einer Zeile, den Namen der Datenbank zurück.
    Hast du den Befehl mit copy/paste in der Konsole eingefügt? Wenn ja, dann schreib den awk-Part mal von Hand, bei mir gings dann.

    Gruß Uwe
    Have a lot of fun!

  6. #16
    karl_ha ist offline Erfahrener Benutzer
    Registriert seit
    08.03.2009
    Beiträge
    225

    Standard

    bei mir hat es geklappt. kann ein praktischer Befehl sein.

  7. #17
    karl_ha ist offline Erfahrener Benutzer
    Registriert seit
    08.03.2009
    Beiträge
    225

    Standard

    PHP-Code:

    #!/bin/bash

    DIR="/backup"
    PG_BIN="/usr/lib/postgresql/8.4/bin/"
    PG_USER="postgres"

    #[ ! $DIR ] && mkdir -p $DIR || :
    LIST=$($PG_BIN/psql -U $PG_USER -awk '{ print $1}' grep -vE '^-|^List|^Name|template[0|1]')
    for 
    d in $LIST
    do
      
    $PG_BIN/pg_dump -U $PG_USER  $d gzip ->  $DIR/$d.out.gz
    done 
    PHP-Code:
    psqlFATAL:  Datenbank >>postgres<< existiert nicht 
    Warum benötigt es die DB postgres?
    Geändert von karl_ha (02.08.2010 um 18:39 Uhr)

  8. #18
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von karl_ha Beitrag anzeigen
    PHP-Code:

    #!/bin/bash

    DIR="/backup"
    PG_BIN="/usr/lib/postgresql/8.4/bin/"
    PG_USER="postgres"

    #[ ! $DIR ] && mkdir -p $DIR || :
    LIST=$($PG_BIN/psql -U $PG_USER -awk '{ print $1}' grep -vE '^-|^List|^Name|template[0|1]')
    for 
    d in $LIST
    do
      
    $PG_BIN/pg_dump -U $PG_USER  $d gzip ->  $DIR/$d.out.gz
    done 
    PHP-Code:
    psqlFATAL:  Datenbank >>postgres<< existiert nicht 
    Warum benötigt es die DB postgres?
    Weil Dein awk-Dingens dies liefert. Bei mir liefert psql -l z.B. u.a.:

    Code:
     template0                        | postgres   | UTF8      | de_DE.UTF-8  | de_DE.UTF-8 | =c/postgres
                                                                                            : postgres=CTc/postgres
     template1                        | postgres   | UTF8      | de_DE.UTF-8  | de_DE.UTF-8 | =c/postgres
                                                                                            : postgres=CTc/postgres
    Dein awk macht daraus:

    Code:
    :
    :
    Da solltest Du nachbessern ...

    Davon abgesehen, daß 8.4 eine DB mit diesem Namen normalerweise hat.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #19
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Vielleicht willst du dir auch noch die "-t" Option von psql anschauen. Wenn es schon wildes Parsen in der Shell sein soll ...
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  10. #20
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    751

    Standard

    Zitat Zitat von karl_ha Beitrag anzeigen
    Gibt es ein Script, welches alle DBs mit pg_dump -Fc sichert, und dann zu einem Archiv zusammenfasst?
    Hier hattest du schon mal was ähnliches gefragt, das dort gepostete Skript müsstest du nur um die Archivier-Funktion am Ende erweitern.

    Gruß Uwe
    Have a lot of fun!

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum