PostgreSQL vollständig auf Standard zurücksetzen?

16

Frage

Gibt es eine Möglichkeit, eine PostgreSQL-Installation unter Linux vollständig zurückzusetzen, sodass sie sich im selben Zustand befindet wie bei der Installation?

Idee

Ich habe überlegt

rm -rf /var/lib/pgsql/*
rm -rf /var/lib/pgsql/backups/*
rm -rf /var/lib/pgsql/data/*

aber vielleicht ist das keine empfohlene methode.

Zweck

Dies wäre praktisch, um Reste von früheren Programmen, die es verwendet haben, loszuwerden.

Jasmine Lognnes
quelle
Mögliches Duplikat von serverfault.com/q/233234/69930 .
halfer

Antworten:

4

Das sollte es tun - nur um sicher zuerst, dass die aktuelle Konfiguration tatsächlich tut speichert die Dateien in diesen Verzeichnissen.

Sobald dies erledigt ist, starte die Datenbank neu:

sudo -U pgsql initdb
Jenny D sagt Reinstate Monica
quelle
1
Nein, bitte nicht. Zumindest unter Ubuntu führt dies zu einem abscheulichen Durcheinander, da erwartet wird, dass Sie eigene Wrapper-Tools verwenden.
Craig Ringer
1
Es tut? Nun, es gibt noch einen Grund, ein anderes System zu verwenden, dann ... Ich persönlich würde für FreeBSD stimmen, aber jeder für sich.
Jenny D sagt Reinstate Monica
@Craig: Was für ein Durcheinander würde es verursachen? Ich habe diese Methode gerade auf Ubuntu verwendet und es scheint mir in Ordnung zu sein . Würden Sie Ihrer Antwort einige Details hinzufügen?
halfer
1
@halfer Um mit postgresql.conf und pg_hba.conf zu beginnen, wird es nicht dort sein, wo die Ububtu-Skripte es erwarten. Oder sie ignorieren die von initdb erstellten und verwenden weiterhin die alten.
Craig Ringer
Was ist, wenn dies eine entfernte Datenbank ist, mit der wir eine Verbindung hergestellt haben, und keine, die wir lokal initialisiert haben?
anon58192932
24

Es hängt alles davon ab, wie es installiert wurde.

Ubuntu, aus Paketen (eingebaut oder apt.postgresql.org)

Verwenden Sie pg_wrapper. Siehe die Ubuntu-Dokumentation für PostgreSQL . Du willst pg_dropclusterallen vorhandenen Pg-Clustern dann pg_createclustereinen sauberen neuen geben.

Löschen Sie nicht nur das Datenverzeichnis und initialisieren Sie es erneut.

CentOS / RH / Fedora, integrierte Pakete

Ich habe dies nicht installiert und kann es jetzt nicht einfach testen. Aus dem Speicher denke ich, es ist sicher, einfach den Server zu stoppen und das Datenverzeichnis zu löschen.

CentOS / RH / Fedora, yum.postgresql.org-Pakete

Sehen /usr/share/doc/postgresql??-?.?.?/README.rpm-dist.

Stoppen Sie den Server mit systemctloder dem serviceWrapper-Befehl, löschen Sie das Datenverzeichnis und führen Sie ihn aus /usr/pgsql-9.3/bin/postgresql93-setup initdb(passen Sie die Pfade entsprechend Ihrer Version an).

Jede Distribution vom EDB-Installer

Stoppen Sie den Server, löschen Sie das Datenverzeichnis und initdbeinen neuen Cluster. Siehe die Installationsdokumentation.

Aus der Quelle

Stoppen Sie den Server, löschen Sie das Datenverzeichnis und initialisieren Sie es erneut.

OS X

Homebrew: brew uninstall postgresql; brew cleanup; brew install postgresql

Postgres.app? EDB-Installer? MacPorts?

Finde ein Bier. Trink das Bier. Wiederholen. Wenn der Schmerz dadurch nicht verschwindet, holen Sie sich etwas Stärkeres.

Windows

  • Dienst anhalten
  • Datenverzeichnis löschen
  • Führen Sie initdb erneut mit runas.exedem Benutzer postgres (vor 9.2) oder NETWORKSERVICE(ab 9.2) aus. Oder ändern Sie einfach den Eigentümer nach.
Craig Ringer
quelle
1
Unter OS X hat die Deinstallation und Bereinigung von Brew keinen Einfluss auf mein Datenverzeichnis /usr/local/var/[email protected]. (es entfernt die App in /usr/local/opt/[email protected], beachte das "opt" nicht "var") "rm -rf /usr/local/var/[email protected]" wurde vor der Neuinstallation benötigt.
Curtis Yallop
4

Ist es nicht am besten, nur zu entfernen und neu zu installieren?

Auf diese Weise erhalten Sie die neueste Version und aktualisieren alle Abhängigkeiten auf dem Weg.

Führen Sie Folgendes aus: sudo apt-get --purge postgresql entfernen

Dann: sudo apt-get install postgresql

i-CONICA
quelle
1
Bestehende DB + -Nutzer (ab Postgres 9.5) wurden dadurch nicht entfernt
Sebastian Wagner