Réinitialiser complètement PostgreSQL par défaut?


16

Question

Existe-t-il un moyen de réinitialiser complètement une installation PostgreSQL sous Linux, donc elle est dans le même état que lorsque je l'ai installée?

Idée

J'ai envisagé

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

mais ce n'est peut-être pas une méthode recommandée.

Objectif

Ce serait pratique pour se débarrasser des restes des programmes précédents qui l'ont utilisé.


Réponses:


4

Cela devrait le faire - assurez - vous d' abord que la configuration actuelle en fait ne stocker les fichiers dans ces répertoires.

Une fois cela fait, relancez la base de données:

sudo -U pgsql initdb

1
Non, je t'en prie. Sur Ubuntu au moins, cela causera un désordre hideux car il s'attend à ce que vous utilisiez ses propres outils de wrapper.
Craig Ringer

1
Cela fait? Eh bien, il y a une raison de plus pour utiliser un autre système, alors ... Personnellement, je voterais pour FreeBSD, mais chacun à sa façon.
Jenny D

@Craig: quel genre de gâchis cela créerait-il? Je viens d'utiliser cette méthode sur Ubuntu, et cela me semble bien . Pourriez-vous ajouter quelques détails à votre réponse?
halfer

1
@halfer Pour commencer avec postgresql.conf et pg_hba.conf, ce ne sera pas là où les scripts ububtu s'attendent. Ou ils ignoreront ceux créés par initdb et continueront à utiliser les anciens.
Craig Ringer

que faire si c'est une base de données distante à laquelle nous nous sommes connectés et pas une que nous avons initialisée localement?
anon58192932

24

Tout dépend de la façon dont il a été installé.

Ubuntu, à partir de packages (intégrés ou apt.postgresql.org)

Utilisez pg_wrapper. Voir les documents Ubuntu pour PostgreSQL . Vous voulez pg_dropclustertous les clusters Pg existants, puis pg_createclusterun nouveau propre.

Ne vous contentez pas de supprimer le répertoire de données et de réinitialiser la base de données.

CentOS / RH / Fedora, packages intégrés

Je ne l'ai pas installé et je ne peux pas tester facilement en ce moment. De mémoire, je pense qu'il est sûr d'arrêter le serveur et de supprimer le répertoire de données.

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

Tu vois /usr/share/doc/postgresql??-?.?.?/README.rpm-dist.

Arrêtez le serveur avec systemctlou la servicecommande wrapper, supprimez le répertoire de données, puis exécutez /usr/pgsql-9.3/bin/postgresql93-setup initdb(en ajustant les chemins d'accès selon votre version).

Toute distribution, du programme d'installation EDB

Arrêtez le serveur, supprimez le répertoire de données et initdbun nouveau cluster. Voir les documents d'installation.

De la source

Arrêtez le serveur, supprimez le répertoire de données, réinitialisez la base de données.

OS X

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

Postgres.app? Installateur EDB? MacPorts?

Trouvez une bière. Buvez de la bière. Répéter. Si cela ne fait pas disparaître la douleur, obtenez quelque chose de plus fort.

les fenêtres

  • Aire d'autoroute
  • Supprimer le répertoire de données
  • réexécutez initdb en utilisant en runas.exetant qu'utilisateur postgres (pré-9.2) ou NETWORKSERVICE(9.2+). Ou changez simplement la propriété par la suite.

1
Pour OS X, la désinstallation et le nettoyage de l'infusion ne touchent pas mon répertoire de données /usr/local/var/postgresql@9.5. (il supprime l'application dans /usr/local/opt/postgresql@9.5, notez "opt" et non "var") "rm -rf /usr/local/var/postgresql@9.5" était nécessaire avant la réinstallation.
Curtis Yallop

4

N'est-il pas préférable de simplement supprimer et réinstaller?

De cette façon, vous obtiendrez la dernière version et mettre à jour les dépendances en cours de route.

Exécuter: sudo apt-get --purge remove postgresql

Ensuite: sudo apt-get install postgresql


1
Cela n'a pas supprimé les utilisateurs DB + existants (à partir de Postgres 9.5)
Sebastian Wagner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.