Migrer un cluster postgresql

Sur le nouveau serveur, installer postgresql en téléchargeant la clé du serveur ad hoc dans /etc/apt/keyrings:

# wget https://www.postgresql.org/media/keys/ACCC4CF8.asc

On ajoute ensuite un fichier pdpg.list dans /etc/apt/sources.list.d avec ceci:

deb [signed-by=/etc/apt/keyrings/AC-------.asc] https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main

On installe ensuite la version postgresql de l'ancien serveur :

# apt update # apt install postgresql-15

On change le fichier /etc/postgresql/15/main/postgresql.conf:

listen_addresses = '*'

Et le fichier /etc/postgresql/15/main/pg_hba.conf en ajoutant:

host all all 127.0.0.1 md5 host all all 192.168.0.1/25 md5

On redémarre le service:

# systemctl restart postgresql

On se connecte avec le compte postgres:

# su postgres

On télécharge le dump fait au préalable avec pg_dumpall > fichier.dmp et on rétablit la base:

$ psql < fichier.dmp $ exit

On installe ensuite le nouveau cluster :

# apt install postgresql-16

Pour lister les cluster :

# pg_lsclusters

On supprime la nouvelle version du cluster:

# pg_dropcluster 16 main --stop

On upgrade la version précédente:

# pg_upgradecluster 15 main

Le nouveau cluster est en vert, on peut supprimer l'ancien:

# pg_dropcluster 15 main

Et on désintalle l'ancienne version :

# apt purge postgresql-15 postgresql-client-15

Migrer un cluster postgresql

Installer phppgadmin

# apt install phppgadmin

Il faut changer la conf, dans /etc/apache2/conf-available, il faut retirer Require local et remplacer par :

Allow from all

Ensuite on relance apache

# systemctl restart apache2

Dans le fichier /etc/phppgadmin/config.inc.php, changer les lignes :

$conf['servers'][0]['host'] = '127.0.0.1';


$conf['extra_login_security'] = false;

Dans le fichier /etc/postgresql/12/main/pg_hba.conf, ajouter une ligne :

host all all 192.168.1.0/24 md5

Bien respecter les tabulations.


Changer le mot de passe de la base postgres :

# su postgres

$ psql

=# \password postgres

On relance ensuite les services

# systemctl restart postgresql

# systemctl restart apache2

Et voilà, on peut se connecter en postgres sur phppgadmin.

Installer phppgadmin

Upgrader le cluster postgresql

D'abord, installer les nouvelles versions :

# apt install postgresl-9.5 postgresql-client-9.5

Cette installation crée un cluster 9.5 qu'il faut supprimer :

# pg_dropcluster --stop 9.5 main

Ensuite, upgrader le cluster

#pg_upgradecluster 9.4 main

Et voilà. L'ancien cluster est encore là, une fois le cluster vérifié, on peut l'effacer :

# pg_dropcluster --stop 9.4 main

Terminé !

Upgrader le cluster postgresql

Désinstaller postgresql (méthode à revoir)

Je pique honteusement sur le web cette manip pour avoir une désinstall propre de postgresql :

sudo aptitude purge postgresql postgresql-common
sudo dpkg -P postgresql-9.4
 
sudo find / -name postgresql -exec rm -Rf {} \;
sudo find / -name pgsql -exec rm -Rf {} \;
sudo find / -name psql -exec rm -Rf {} \;
 
sudo userdel postgres

De là, à savoir ce qui tournait sous postgre avant de désintaller, faut pas exagérer !

Edit :

à l'usage, cela n'est pas si propre que cela, logwatch continue à chercher le service et il reste des paquets postgresql.

En passant