Modifications pour le document Mettre à jour pgsql sur pgsql-prod
Modifié par Gaetan RETEL le 2025/10/05 00:22
Depuis la version 2.1
modifié par Gaetan RETEL
sur 2025/03/12 01:58
sur 2025/03/12 01:58
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
À la version 1.1
modifié par Gaetan RETEL
sur 2025/03/11 23:31
sur 2025/03/11 23:31
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,1 @@ 1 -Mettre à jour pgsql sur pgsql-prod 1 +Mettre à jour postgresql sur pgsql-prod - Contenu
-
... ... @@ -1,129 +1,0 @@ 1 -Après avoir galéré sur la mise à jour de postgreSQL sur [[pgsql-prod>>doc:Services.PostgreSQL.WebHome]], j'ai décidé de noter ici les étapes à suivre pour une upgrade sans histoire. 2 - 3 -Les commandes listées ci dessous seront celle de la version que j'ai installé. 4 - 5 - 6 -=== Précautions à prendre === 7 - 8 -Avant de toucher à la BDD on va évidemment faire une sauvegarde, pour pouvoir remettre en état en cas de pépin. Pour cela on peut utiliser {{code language="none"}}pg_dumpall{{/code}}. Pour cela on va faire deux sauvegarde, une avec le flag {{code language="none"}}--globals-only{{/code}} pour récupérer les users/roles/etc, et une autre pour récupérer les BDDs. 9 - 10 -(% class="box warningmessage" %) 11 -((( 12 -Attention, la commande pg_dumpall ne fait qu'un dump du cluster par défaut (port 5432), il va donc falloir l'exécuter pour chaque cluster 13 -))) 14 - 15 -(% class="wikigeneratedid" %) 16 -Pour voir les différents clusters présents, utiliser la commande {{code language="none"}}pg_lsclusters{{/code}}. La sortie inclura plusieurs information importantes, comme la version pgsql utilisé par chaque cluster, et son port. 17 - 18 -(% class="wikigeneratedid" %) 19 -Pour vérifier qu'il y a de la place sur la VM on peut utiliser {{code language="none"}}df -h{{/code}} et regarder la place sur ce qui est monté sur / , le dump des BDD du cluster main faisait 1.3G dans mon cas. 20 - 21 -(% class="box" %) 22 -((( 23 -(% class="box" %) 24 -((( 25 -su - postgres -c "pg_dumpall -U postgres -p 5432" > /var/backups/pgsql_main_backup.sql 26 - 27 -su - postgres -c "pg_dumpall ~-~-globals-only -U postgres -p 5432" > /var/backups/pgsql_main_globals_backup.sql 28 -))) 29 -))) 30 - 31 -(% class="box warningmessage" %) 32 -((( 33 -Penser à copier les sauvegardes sur une autre machine en cas de problème sur la VM, on ne sait jamais. Pour la copier sur votre machine dans pgsql/ utiliser par exemple : 34 -))) 35 - 36 -(% class="box" %) 37 -((( 38 -(% class="box" %) 39 -((( 40 -scp -J root@atilla.org pgsql-prod.prod.infra:/var/backups/pgsql_main_backup.sql ./pgsql/ 41 -))) 42 -))) 43 - 44 - 45 -(% class="wikigeneratedid" %) 46 -Pour vérifier les packages installés, utiliser la commande 47 - 48 -(% class="box" %) 49 -((( 50 -(% class="box" %) 51 -((( 52 -dpkg -l | grep postgresql 53 -))) 54 -))) 55 - 56 - 57 -=== Préparation des nouveaux clusters === 58 - 59 -pour créer les nouveaux clusters, il faut commencer par regarder comment sont faits les anciens, pour qu'ils soient compatibles entre eux. L'encodage et le collationnement/type de caractères doivent être identiques. 60 - 61 -(% class="box infomessage" %) 62 -((( 63 -on peut trouver les informations nécessaires en affichant les BDDs de chaque clusters : 64 -))) 65 - 66 -(% class="box" %) 67 -((( 68 -(% class="box" %) 69 -((( 70 -sudo -u postgres psql -p 5432 71 - 72 -\l 73 -))) 74 -))) 75 - 76 -Si comme moi vous n'avez jamais touché à postgreSQL, la commande pour sortir du terminal est \q 77 - 78 -Dans mon cas, l'encodage est UTF-8 et le reste en C. Pour créer un cluster "main" utilisant pgsql 14 la commande est donc 79 - 80 -(% class="box" %) 81 -((( 82 -(% class="box" %) 83 -((( 84 -pg_createcluster ~-~-locale=C ~-~-encoding=UTF8 14 main 85 -))) 86 -))) 87 - 88 - 89 -On va utiliser la commande {{code language="none"}}pg_upgrade{{/code}} pour migrer les données, il va falloir utiliser pas mal de flags avec des arguments, n'oubliez pas de [[lire la doc>>https://www.postgresql.org/docs/15/pgupgrade.html]]. 90 - 91 -Pour passer de la version x à la version y, il faut le path des dossiers des exécutables et de data des version x et y, ainsi que le path du fichier .conf de postgres de chaque version. 92 - 93 - 94 -Avant de lancer la commande, on notera l'existence du flag ~-~-check, dont on ne manquera pas de se servir. 95 - 96 -Pour la version 13 à 14, il faut donc taper pour lancer les vérifications 97 - 98 -(% class="box" %) 99 -((( 100 -(% class="box" %) 101 -((( 102 -/usr/lib/postgresql/14/bin/pg_upgrade -b /usr/lib/postgresql/13/bin -B /usr/lib/postgresql/14/bin -d /var/lib/postgresql/13/main -D /var/lib/postgresql/14/main -o '-c config_file=/etc/postgresql/13/main/postgresql.conf' -O '-c config_file=/etc/postgresql/14/main/postgresql.conf' ~-~-check 103 -))) 104 -))) 105 - 106 -(% class="box infomessage" %) 107 -((( 108 -À ce stade là s'il y a des problèmes, google est votre ami. 109 -))) 110 - 111 - 112 -=== Lancer l'upgrade === 113 - 114 -Si la commande avec le flag ~-~-check à réussi, il n'y a plus qu'à la lancer sans. Pour autant, une erreur peut toujours survenir. 115 - 116 -(% class="box errormessage" %) 117 -((( 118 -Pour la suite, lisez bien TOUTES les infos avant de vous lancer dans les commandes des différents clusters, sinon vous risquez de devoir recommencer. 119 -))) 120 - 121 -(% class="box" %) 122 -((( 123 -(% class="box" %) 124 -((( 125 -/usr/lib/postgresql/14/bin/pg_upgrade -b /usr/lib/postgresql/13/bin -B /usr/lib/postgresql/14/bin -d /var/lib/postgresql/13/main -D /var/lib/postgresql/14/main -o '-c config_file=/etc/postgresql/13/main/postgresql.conf' -O '-c config_file=/etc/postgresql/14/main/postgresql.conf' 126 -))) 127 -))) 128 - 129 -