¿Restablecer completamente PostgreSQL al predeterminado?

16

Pregunta

¿Hay alguna manera de restablecer por completo una instalación de PostgreSQL en Linux, para que esté en el mismo estado que cuando la instalé?

Idea

he considerado

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

pero quizás ese no sea un método recomendado.

Propósito

Esto sería útil para deshacerse de los sobrantes de los programas anteriores que lo han utilizado.

Jasmine Lognnes
fuente
Posible duplicado de serverfault.com/q/233234/69930 .
halfer

Respuestas:

4

Eso debería hacerlo - sólo asegúrese primero que la configuración actual realidad hace almacenar los archivos en esos directorios.

Una vez hecho esto, reinicie la base de datos:

sudo -U pgsql initdb
Jenny D
fuente
1
No, por favor no lo hagas. En Ubuntu, al menos, eso causará un desastre horrible porque espera que uses sus propias herramientas de envoltura.
Craig Ringer
1
¿Lo hace? Bueno, hay una razón más para usar otro sistema, entonces ... Personalmente votaría por FreeBSD, pero cada uno por su cuenta.
Jenny D
@ Craig: ¿qué tipo de desastre crearía? Acabo de usar este método en Ubuntu, y me parece bien . ¿Agregarías algún detalle a tu respuesta?
halfer
1
@halfer Para comenzar con postgresql.conf y pg_hba.conf no será donde esperan los scripts ububtu. O ignorarán los que initdb creó y seguirán usando los antiguos.
Craig Ringer
¿Qué pasa si esta es una base de datos remota a la que nos hemos conectado y no una que hemos inicializado localmente?
anon58192932
24

Todo depende de cómo se instaló.

Ubuntu, desde paquetes (integrados o apt.postgresql.org)

Uso pg_wrapper. Vea los documentos de Ubuntu para PostgreSQL . Desea pg_dropclustertodos los clústeres de Pg existentes, luego pg_createclusteruno nuevo y limpio.

No , no basta con borrar el directorio de datos y volver a initdb.

CentOS / RH / Fedora, paquetes integrados

No tengo esto instalado y no puedo probarlo fácilmente en este momento. Desde la memoria, creo que es seguro detener el servidor y eliminar el directorio de datos.

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

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

Detenga el servidor con systemctlel servicecomando wrapper, elimine el directorio de datos y luego ejecute /usr/pgsql-9.3/bin/postgresql93-setup initdb(ajustando las rutas según corresponda para su versión).

Cualquier distribución, del instalador EDB

Detenga el servidor, elimine el directorio de datos y initdbun nuevo clúster. Vea los documentos del instalador.

De la fuente

Detenga el servidor, elimine el directorio de datos, vuelva a iniciar.

OS X

Cerveza casera: brew uninstall postgresql; brew cleanup; brew install postgresql

Postgres.app? Instalador EDB? MacPorts?

Encuentra una cerveza. Bebe la cerveza. Repetir. Si esto no hace que el dolor desaparezca, obtenga algo más fuerte.

Ventanas

  • Parada de servicio
  • Eliminar directorio de datos
  • vuelva a ejecutar initdb utilizando runas.execomo usuario postgres (anterior a 9.2) o NETWORKSERVICE(9.2+). O simplemente cambie la propiedad después.
Craig Ringer
fuente
1
Para OS X, la desinstalación y limpieza brew no toca mi directorio de datos /usr/local/var/[email protected]. (elimina la aplicación en /usr/local/opt/[email protected], tenga en cuenta que "opt" no "var") "rm -rf /usr/local/var/[email protected]" era necesario antes de la reinstalación.
Curtis Yallop
4

¿No es mejor simplemente eliminar y reinstalar?

De esa manera, obtendrá la última versión y actualizará cualquier dependencia en el camino.

Ejecute: sudo apt-get --purge remove postgresql

Entonces: sudo apt-get install postgresql

i-CONICA
fuente
1
Esto no eliminó a los usuarios DB + existentes (a partir de Postgres 9.5)
Sebastian Wagner