2017-05-11 3 views
1

Guru Ich muss eine PostgreSQL-Datenbank sichern und wiederherstellen. Mein OS-Version ist Ubuntu-14.04 64bit und der PostgreSQL ist:Wie kann man eine PostgreSQL-Datenbank sichern und wiederherstellen?

gid: ~/works $ pg_config --version 
PostgreSQL 9.3.15 

I pg_dump sichern die Datenbank verwenden:

gid: ~/works $ pg_dump -U db_name_user -F t db_name > db_name.tar 

Und ich versuche pg_restore zu verwenden Datenbank wiederherzustellen und es versäumt, erhalten:

gid: ~/works $ pg_restore -U db_name_user -F t -d db_name db_name.tar 

pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 3621; 0 0 COMMENT EXTENSION plpgsql 
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql 
Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 

pg_restore: WARNING: no privileges could be revoked for "public" 
pg_restore: WARNING: no privileges could be revoked for "public" 
pg_restore: WARNING: no privileges were granted for "public" 
pg_restore: WARNING: no privileges were granted for "public" 
WARNING: errors ignored on restore: 1 

Ich weiß nicht, was es bedeutet? Und wie kann ich eine PostgreSQL-Datenbank sichern und wiederherstellen?

Vielen Dank.

------------------------ Aktualisierung 1 -------------------- ----

Auch habe ich „--no-owner“ Option mit pg_dump und pg_restore, ich habe immer noch die gleiche Fehlermeldung:

gid:~/works $ pg_restore -U db_name_user -O -Ft -d db_name db_name.tar 
pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 3621; 0 0 COMMENT EXTENSION plpgsql 
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql 
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 

pg_restore: WARNING: no privileges could be revoked for "public" 
pg_restore: WARNING: no privileges could be revoked for "public" 
pg_restore: WARNING: no privileges were granted for "public" 
pg_restore: WARNING: no privileges were granted for "public" 
WARNING: errors ignored on restore: 1 
+1

Sie diesen Fehler ignorieren. Der fehlende Kommentar zu plpgsql hat keinen Einfluss auf Ihren Code. Wenn Sie pg_restore als Superuser ausführen würden, sollten Sie solche Warnungen nicht sehen. –

Antwort

0

Sie Fehler auf kommentieren die Sprache ignorieren können - es wird nicht beeinflussen Sie Ihren Code. Verwenden Sie auch keinen Besitzer, um solche Warnungen zu vermeiden. aber bedenken Sie, dass der Besitzer der Benutzer ist, mit dem Sie sich auf pg_restore verbinden, nicht der ursprüngliche. Bitte lesen docs: https://www.postgresql.org/docs/current/static/app-pgrestore.html:

-O

--no-owner Do not output commands to set ownership of objects to match the original database. By default, pg_restore issues ALTER OWNER or SET SESSION AUTHORIZATION statements to set ownership of created schema elements. These statements will fail unless the initial connection to the database is made by a superuser (or the same user that owns all of the objects in the script). With -O, any user name can be used for the initial connection, and this user will own all the created objects.

+1

Hallo, Vielen Dank für Ihre Informationen. Ich testete Ihre Option "--no-Besitzer" mit pg_dump und pg_restore, aber ich habe immer noch die gleichen Fehler: gid: ~/funktioniert $ pg_restore -U db_name_user -O -Ft -d db_name db_name.tar pg_restore: [archiver (db)] Fehler bei VERARBEITUNG TOC: pg_restore: [archiver (db)] Fehler von TOC-Eintrag 3621; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] konnte Abfrage nicht ausführen: FEHLER: muss Besitzer der Erweiterung plpgsql sein Befehl war: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL prozedurale Sprache'; – zhengfish

+0

sicher - Sie sind willkommen –

Verwandte Themen