postgresql|database|Fehler beim Wiederherstellen der Sicherung: pg_restore: implizierte Lösung zur Nur-Daten-Wiederherstellung

eins,

Rezension

Irgendwann wurde bei der Verwendung der Sicherungsdateien, die durch den Befehl pg_dump logisch gesichert wurden, um mehrere angegebene Tabellen wiederherzustellen, ein Fehler gemeldetpg_restore: implizite Nur-Daten-Wiederherstellung  

Natürlich ist Baidu die erste Anlaufstelle, wenn ein Problem auftritt, aber es scheint keine klare Lösung zu geben. Der spezifische Fehlerbefehl und die Fehlermeldung lauten wie folgt:

[postgres@node1 ~]$ pg_restore -Upostgres -v -x  -d   pgbench -t ds.dr_route_ds -t ds.dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: implied data-only restore

Die zweite Zeile zeigt an, dass der Befehl pg_restore korrekt mit der Datenbank verbunden wurde. Der Datenbankname lautet pgbench und ist bereit, die Sicherung zu starten.

Die dritte Zeile zeigt an, dass der Wiederherstellungsbefehl nur Daten wiederherstellt, und dann gibt es nichts mehr! ! ! !

was für ein Problem?

zwei,

Problemanalyse und Lösungen

Beobachten Sie diesen Sicherungsbefehl sorgfältig und stellen Sie fest, dass es sich um -d Datenbankname -t Schemaname. Tabellenname in diesem Modus -t Schemaname. Tabellenname in diesem Modus -t Schemaname. Tabellenname in diesem Modus handelt

OK, entfernen Sie den Modusnamen und stellen Sie fest, dass er normal wiederhergestellt werden kann.

postgres@node1 ~]$ pg_restore -Upostgres -v -x -a  -d   pgbench -t dr_route_ds -t dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: processing data for table "dr.dr_route_ds"
pg_restore: processing data for table "dr.dr_task_active_ds"
pg_restore: processing data for table "ds.dr_route_ds"
pg_restore: processing data for table "ds.dr_task_active_ds"

Aber es gibt ein Problem. Es gibt zwei Schemata unter der pgbench-Datenbank, also zwei Modi. Die beiden Modi haben die gleichen zwei Tabellen. Jetzt möchte ich nur die Daten dieser beiden Tabellen im DS-Modus wiederherstellen, und das tue ich nicht. Ich möchte es nicht wiederherstellen. Die Daten dieser beiden Tabellen im DR-Modus

Daher besteht der letzte Wiederherstellungsbefehl darin, den Parameter -n hinzuzufügen und den DS-Modus anzugeben:

[postgres@node1 ~]$ pg_restore -Upostgres -v -x -a  -d   pgbench -n ds -t dr_route_ds -t dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: processing data for table "ds.dr_route_ds"
pg_restore: processing data for table "ds.dr_task_active_ds"

####Notiz:

  • Der Parameter -v dient zur Anzeige des Wiederherstellungsvorgangs. Normalerweise ist dieser Parameter erforderlich.
  • Der Parameter -a überschreibt nur die wiederhergestellten Daten, ohne zu prüfen, ob das Objekt existiert. Wenn beispielsweise die wiederherzustellende Tabelle bereits vorhanden ist, erfolgt keine Prüfung, sondern es werden nur die Tabellendaten in die Tabelle überschrieben.
  • Parameter -x Wenn in der logischen Sicherungsdatei Objekte vorhanden sind, die Berechtigungen enthalten, z. B. Benutzer, werden bei Verwendung dieses Parameters keine relevanten Vorgänge ausgeführt. Beispielsweise wird in dieser logischen Sicherungsdatei ein Benutzer erstellt, dieser wird jedoch nicht ausgeführt. Werde es nicht überprüfen
  • Der Parameter -d gibt an, in welcher Datenbank wiederhergestellt werden soll, also in der Zieldatenbank
  • Der Parameter -n gibt das Schema unter der Zieldatenbank an, bei dem es sich um den Schemanamen handelt.
  • Der Parameter -t gibt den Tabellennamen der wiederherzustellenden Tabelle an
  • Fügen Sie abschließend keine Parameter vor der logischen Sicherungsdatei hinzu.

Supongo que te gusta

Origin blog.csdn.net/alwaysbefine/article/details/133780363
Recomendado
Clasificación