pg_restore Fehler: Rolle XXX nicht vorhanden ist

Versuchen zu replizieren, eine Datenbank von einem system auf ein anderes. Die Versionen beteiligt sind 9.5.0 (Quelle) und 9.5.2 (Ziel).

Quell-db name ist foodb mit dem Besitzer pgdba - und Ziel-db name wird genannt werden foodb_dev mit dem Besitzer pgdev.

Alle Befehle werden ausgeführt, auf dem Ziel-system, das als host für die Replik.

Den pg_dump Befehl:

    pg_dump -f schema_backup.dump --no-owner -Fc -U pgdba -h $PROD_DB_HOSTNAME -p $PROD_DB_PORT -d foodb -s --clean;

Dieser ohne Fehler läuft.

Den entsprechenden pg_restore ist:

    pg_restore --no-owner --if-exists -1 -c -U pgdev -d foodb_dev schema_backup.dump

dem Fehler:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3969; 0 0 ACL public pgdba
pg_restore: [archiver (db)] could not execute query: ERROR:  role "pgdba" does not exist
Command was: REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM pgdba;
GRANT ALL ON SCHEMA public TO pgdba;
GRANT ...

Wenn ich generieren die dump-Datei im nur-text-format (-Fp) ich sehe es umfasst mehrere Einträge wie:

REVOKE ALL ON TABLE dump_thread FROM PUBLIC;
REVOKE ALL ON TABLE dump_thread FROM pgdba;
GRANT ALL ON TABLE dump_thread TO pgdba;
GRANT SELECT ON TABLE dump_thread TO readonly;

die versuchen, die Privilegien für Benutzer pgdba wer natürlich gar nicht gibt, wie ein Benutzer auf dem Zielsystem, das nur user pgdev, und damit die Fehler aus pg_restore.

In der Quell-db die Rechte für das Beispiel der dump_thread Tabelle:

# \dp+ dump_thread
Access privileges
-[ RECORD 1 ]-----+--------------------
Schema            | public
Name              | dump_thread
Type              | table
Access privileges | pgdba=arwdDxt/pgdba+
                  | readonly=r/pgdba
Column privileges |
Policies          |

Eine schnelle Lösung wäre, einfach einen Benutzer hinzufügen pgdba auf den Ziel-cluster-und mit ihm getan werden.

Aber sollte nicht die --no-owner kümmern sich nicht, einschließlich Eigentümer-spezifische Befehle im dump in den ersten Platz?

InformationsquelleAutor Thalis K. | 2016-05-17
Schreibe einen Kommentar