Ripristinare completamente PostgreSQL sui valori predefiniti?


16

Domanda

C'è un modo per ripristinare completamente un'installazione PostgreSQL su Linux, quindi è nello stesso stato di quando l'ho installata?

Idea

Ho considerato

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

ma forse non è un metodo raccomandato.

Scopo

Ciò sarebbe utile per eliminare i resti dei precedenti programmi che lo hanno utilizzato.


Possibile duplicato di serverfault.com/q/233234/69930 .
halfer

Risposte:


4

Che dovrebbe farlo - basta assicurarsi prima che la configurazione corrente in realtà non memorizzare i file in queste directory.

Al termine, riavviare il database:

sudo -U pgsql initdb

1
No, per favore no. Su Ubuntu almeno questo causerà un disastro orribile perché si aspetta che tu usi i suoi strumenti wrapper.
Craig Ringer,

1
Lo fa? Bene, c'è un motivo in più per usare un altro sistema, quindi ... Personalmente voterei per FreeBSD, ma ognuno per conto proprio.
Jenny D,

@Craig: che tipo di casino creerebbe? Ho appena usato questo metodo su Ubuntu e mi sembra perfetto . Aggiungeresti qualche dettaglio alla tua risposta?
Halfer

1
@halfer Per iniziare con postgresql.conf e pg_hba.conf non sarà dove si aspettano gli script ububtu. Oppure ignoreranno quelli creati da initdb e continueranno a usare quelli vecchi.
Craig Ringer,

cosa succede se questo è un database remoto a cui ci siamo connessi e non uno che abbiamo inizializzato localmente?
anon58192932

24

Tutto dipende da come è stato installato.

Ubuntu, dai pacchetti (integrato o apt.postgresql.org)

Usa pg_wrapper. Vedi i documenti Ubuntu per PostgreSQL . Vuoi pg_dropclustertutti i cluster Pg esistenti, quindi pg_createclusteruno nuovo e pulito.

Do Non basta eliminare il dir di dati e ri-initdb.

CentOS / RH / Fedora, pacchetti integrati

Non ho installato questo e non posso testarlo facilmente in questo momento. Dalla memoria penso che sia sicuro arrestare il server ed eliminare la directory dei dati.

Pacchetti CentOS / RH / Fedora, yum.postgresql.org

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

Arrestare il server con systemctlo il servicecomando wrapper, eliminare la directory dei dati, quindi eseguire /usr/pgsql-9.3/bin/postgresql93-setup initdb(regolando i percorsi in base alla versione).

Qualsiasi distribuzione, dall'installer EDB

Arrestare il server, eliminare la directory dei dati e initdbun nuovo cluster. Vedi i documenti di installazione.

Dalla fonte

Arrestare il server, eliminare la directory dei dati, riavviare.

OS X

homebrew: brew uninstall postgresql; brew cleanup; brew install postgresql

Postgres.app? Programma di installazione EDB? MacPorts?

Trova una birra. Bevi la birra. Ripetere. Se questo non fa sparire il dolore, procurati qualcosa di più forte.

finestre

  • Interrompere il servizio
  • Elimina dir dati
  • rieseguire initdb usando runas.execome utente postgres (pre-9.2) o NETWORKSERVICE(9.2+). O semplicemente cambiare la proprietà in seguito.

1
Per OS X, disinstalla e pulisci brew non tocca i miei dati dir /usr/local/var/postgresql@9.5. (rimuove l'app in /usr/local/opt/postgresql@9.5, notare che "opt" non "var") "rm -rf /usr/local/var/postgresql@9.5" era necessario prima della reinstallazione.
Curtis Yallop,

4

Non è meglio rimuovere e reinstallare?

In questo modo otterrai l'ultima versione e aggiornerai eventuali dipendenze lungo il percorso.

Esegui: sudo apt-get --purge rimuove postgresql

Quindi: sudo apt-get install postgresql


1
Questo non ha rimosso gli utenti DB + esistenti (a partire da Postgres 9.5)
Sebastian Wagner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.