Comment mettre à niveau PostgreSQL de la version 8.4 à 9.4?


18

Je veux mettre à jour mon PostgreSQL de la version 8.4 à 9.4 .

La documentation n'est pas très claire pour moi.

  1. Vais-je perdre mes anciennes bases de données si je fais la mise à niveau?
  2. Comment puis-je sauvegarder mes anciennes bases de données si je dois les perdre après la mise à niveau?
  3. Comment puis-je mettre à jour mon psql?

Mon PostgreSQL s'exécute sur un serveur CentOS 6.6 .


Pour être honnête, la description est très claire sur la page liée. Faire un vidage signifie que vous avez un vidage pour le cas où quelque chose ne fonctionne pas. Cela signifie également que vous ne le perdez pas. De plus, il y a un lien sur cette page indiquant comment installer réellement une version plus récente - par exemple, sur Ubuntu, il y a un postgresql-client-9.4paquet qui contient psql.
dezso

@dezso Donc, si je désinstalle psql 8.4 et opte pour 9.4, je perdrai mes anciennes bases de données?
Alex Jolig

3
Si vous en prenez une décharge, alors non. Vous devriez de toute façon avoir des sauvegardes régulières que vous testez pour la récupérabilité, donc cela ne devrait pas poser de problème du tout. De plus, si vous choisissez d'utiliser pg_upgrade, il conservera vos bases de données - mais la sauvegarde est également indispensable dans ce cas.
dezso

" How can I backup my old databases if" - il n'y a pas de si . Vos bases de données seront presque certainement parfaitement bien après la mise à niveau, mais vous devriez toujours avoir de nouvelles sauvegardes (de préférence testées) lorsque vous effectuez une opération comme celle-ci en cas de problèmes inattendus (supposez le pire: une coupure de courant ou une autre défaillance matérielle en partie pourrait laisser vous dans une position difficile à faire reculer ou avancer). Selon votre plan de sauvegarde habituel, vous n'aurez peut-être pas besoin d'effectuer des sauvegardes supplémentaires.
David Spillett

Réponses:


25

C'est ainsi que j'ai résolu mon problème.

Mettre à niveau Postgresql 8.4 à 9.4 dans Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Sauvegarde des données

 7. su - postgres

 8. pg_dumpall > dump.sql

Restaurer les données

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Accès au réseau de configuration

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Supprimer PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql

3
Je ne sais pas pourquoi vous avez rejeté ma modification en tant que "lisibilité des dommages". Cela rend les commandes plus faciles à copier,
nhahtdh

1
Je viens de faire une mise à niveau de 9.2 à 9.6 en utilisant cette méthode, et cela a fonctionné. Merci !
EisenHeim

Je pense qu'il est impossible d'utiliser pgdump pour migrer une base de données avec des téraoctets de données par exemple. Y a-t-il une autre façon de procéder?
deFreitas

POUR la première commande, "Yum Install PG9.4", est-ce la bonne capitalisation pour tout?
Dave

1
@deFreitas Je suis un peu en retard mais vous pouvez l'utiliser pg_upgradesi vous effectuez une mise à niveau à partir de> = 8.4 et si vous utilisez le même serveur. pg_upgradeest utile dans ce cas et vraiment plus rapide: sur Ubuntu 18, il m'a fallu moins de temps pour créer un pg_upgradeque pg_dumppour restaurer une base de données de 1 Go. L'inconvénient est que vous devez installer et exécuter 2 versions postgres sur la même machine (en écoutant différents ports, bien sûr).
EAmez

3

service postgresql-9.4initdb ne fonctionnait pas pour moi, j'ai dû utiliser sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(trouvé ici ).

Merci pour les excellentes instructions, j'ai pu mettre à jour de 9.2 à 9.4 sans aucun problème, même si j'ai dû reconfigurer mon pg_hba.conffichier, c'était trivial.


1

Mieux que de lier un seul binaire psql postgresql94 à / usr / (local /) bin est d'utiliser le système alternatif:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

Ce qui crée des liens de binaires, mans, confs, ... de postgresql94 vers des répertoires par défaut pour CentOS.

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.