Changement de version majeure de PostgreSQL sous Debian / Ubuntu
Par admin le mercredi 8 novembre 2017, 10:08 - PostgreSQL - Lien permanent
Chaque release majeure de PostgreSQL (passage de la version 9.6 à la 10 par exemple) nécessite d'effectuer un dump et un restore de la base de données. Le travail n'est pas si fastidieux, mais nécessite quelques manipulations. Debian propose une migration plus simplifiée, destinées, à mon avis, aux bases de données de petites tailles, pour une migration rapide. Si vous travaillez sur des bases de plusieurs Go, cela fonctionnera, bien sur, mais l'interruption de service pourra être longue. Il existe d'autres moyens pour faire ce genre de chose avec des serveurs de réplication par exemple. Je vais donc vous décrire le process simple à mettre en place.
Première étape installer la dernière release majeure de PostgreSQL qui ne sera pas forcément intégrée dans votre distribution. Pour cela suivez la procédure décrite sur le site de PostgreSQL.
Vous installez donc par exemple la dernière version de PostgreSQL actuelle. Nous admettrons que vous passez comme c'est le cas actuellement de la Jessie de la verison 9.0 à la version 10 de PostgreSQL. Vous aurez donc la version 9 et la version 10 d'instalées sur votre machine.
Attention, il est toujours préférable d'effectuer un pg_dumpall de votre base de données que vous conservez précieusement avant d'effectuer cette opération. Pensez également à couper les applications ou services qui accèdent à votre base de données avant de faire la migration.
On arrête PostgreSQL :
service postgresql stop
On nettoye la nouvelle version du cluster postgreSQL pour être certain qu'il n'y a rien dedans, elle est neuve, normalement c'est toujours le cas :
pg_dropcluster --stop 10 main
On effectue la migration des données de la versino 9.0 vers la version la plus élevée, la 10 dans notre exemple :
pg_upgradecluster -m upgrade 9.0 main
On arrête la version précédente de PostreSQL :
pg_dropcluster 9.0 main --stop
On efface complètement la version 9.0 et ses données, attention ici vous pouvez tout perdre, donc un pg_dumpall ne fera jamais de mal !
apt-get autoremove --purge postgresql-9.0
Puis on redémarre PostgreSQL, sur la nouvelle version avec les données migrées :
service postgresql start
Voilà, le tour est joué. Simple comme Debian. Naturellement si vous utilisez des versions différentes de celle présentées dans cet exemple, il suffit de remplacer 9.0 par votre version courante.