# Mise à jour de Postgresql sous windows

## Mise à jour de PostgreSQL de la version 14 à la version 15 sur Windows Server <a href="#bkmrk-upgrade-postgresql" id="bkmrk-upgrade-postgresql"></a>

Aujourd'hui, nous allons mettre à jour PostgreSQL de la version 14 à la version 15, ce qui est considéré comme une mise à niveau majeure (14->15). Voici les instructions étape par étape pour effectuer cette mise à jour sur Windows.

### **Étape 1 : Installer PostgreSQL 15**

Rendez-vous sur le site officiel de [PostgreSQL](https://www.postgresql.org/download/windows/) pour télécharger l'installeur de la version 15 pour Windows.

Installez PostgreSQL 15 sur la machine. Cela créera un dossier séparé dans le répertoire d'installation pour la version 15 par rapport à la version 14.

Il est recommandé de conserver le même mot de passe pour l'utilisateur PostgreSQL.

### **Étape 2 : Arrêter les services PostgreSQL**

Arrêtez les deux versions de PostgreSQL en cours d'exécution sur le système. Utilisez la commande PowerShell suivante :

```powershell
net stop postgresql-x64-14
net stop postgresql-x64-15
```

### **Étape 3 : Configurer les fichiers pg\_hba.conf**

Dans le répertoire `/data` (dans notre cas  `C:\Program Files\PostgreSQL\14\data` et `C:\Program Files\PostgreSQL\15\data`) de chaque version, conservez les fichiers pg\_hba.conf existants. Je les renomme généralement en `pg_hba.conf.org` pour les conserver en sauvegarde.

Ensuite, créez un nouveau fichier `pg_hba.conf` dans chaque répertoire `/data`, basé sur les anciens fichiers, avec le contenu suivant pour éviter les problèmes de sécurité pendant la mise à jour :

<pre><code><strong>host    all     postgres        127.0.0.1/32            trust
</strong>host    all     postgres        ::1/128                 trust
</code></pre>

{% hint style="info" %}
Assurez-vous que ce nouveau fichier `pg_hba.conf` inclut également toutes les autres configurations nécessaires à votre environnement, en plus des nouvelles lignes ci-dessus. Cela permet de maintenir les paramètres de sécurité requis tout en facilitant la mise à jour.
{% endhint %}

### **Étape 4 : Mettre à jour les données**

Nos répertoires binaires se trouvent ici :

* `C:\Program Files\PostgreSQL\14\bin`
* `C:\Program Files\PostgreSQL\15\bin`

Nos répertoires de données se trouvent ici :

* `C:\Program Files\PostgreSQL\14\data`
* `C:\Program Files\PostgreSQL\15\data`

Pour mettre à jour les données vers la version 15, nous utiliserons `pg_upgrade.exe`.&#x20;

{% hint style="info" %} <mark style="color:red;">Il est recommandé d'exécuter la commande</mark> <mark style="color:red;"></mark><mark style="color:red;">`pg_upgrade.exe`</mark> <mark style="color:red;"></mark><mark style="color:red;">dans un répertoire temporaire pour plusieurs raisons importantes :</mark>

* <mark style="color:red;">**Isolation des Fichiers :**</mark> <mark style="color:red;"></mark><mark style="color:red;">En utilisant un répertoire temporaire, vous isolez les fichiers générés pendant le processus de mise à niveau, ce qui facilite leur gestion et évite toute confusion avec les fichiers de données existants.</mark>
* <mark style="color:red;">**Nettoyage Simplifié :**</mark> <mark style="color:red;"></mark><mark style="color:red;">Un répertoire temporaire permet un nettoyage plus simple après la mise à niveau, car vous pouvez supprimer tous les fichiers temporaires sans affecter les fichiers principaux.</mark>
* <mark style="color:red;">**Prévention des Conflits :**</mark> <mark style="color:red;"></mark><mark style="color:red;">L'isolement des fichiers temporaires réduit les risques de conflits avec d’autres opérations ou fichiers critiques, garantissant ainsi une mise à niveau plus fluide.</mark>
  {% endhint %}

Pour créer un répertoire temporaire, utilisez les commandes suivantes :

* **PowerShell :**&#x20;

```powershell
New-Item -Path C:\Temp\PgUpgrade -ItemType Directory
```

* **Invite de Commandes :**&#x20;

```shell
mkdir C:\Temp\PgUpgrade
```

Une fois le répertoire créé, vous pouvez y exécuter `pg_upgrade.exe` pour effectuer la mise à niveau en toute sécurité.

```powershell
& 'C:\Program Files\PostgreSQL\15\bin\pg_upgrade.exe' --old-datadir "C:\Program Files\PostgreSQL\14\data" --new-datadir "C:\Program Files\PostgreSQL\15\data" --old-bindir "C:\Program Files\PostgreSQL\14\bin" --new-bindir "C:\Program Files\PostgreSQL\15\bin" -U postgres
```

{% hint style="success" %}
Explication des paramètres :

* **`--old-datadir`** : Chemin vers le répertoire de données de l'ancienne version (PostgreSQL 14).
* **`--new-datadir`** : Chemin vers le répertoire de données de la nouvelle version (PostgreSQL 15).
* **`--old-bindir`** : Chemin vers le répertoire contenant les exécutables de l'ancienne version.
* **`--new-bindir`** : Chemin vers le répertoire contenant les exécutables de la nouvelle version.
* **`-U`** : Nom de l'utilisateur PostgreSQL, généralement `postgres`.
* Le symbole `&` en PowerShell est utilisé pour exécuter une commande dont le chemin pourrait contenir des espaces ou des caractères spéciaux. Il est appelé "call operator" ou "opérateur d'appel".&#x20;

<mark style="color:red;">Le symbole</mark> <mark style="color:red;"></mark><mark style="color:red;">`&`</mark> <mark style="color:red;"></mark><mark style="color:red;">en PowerShell est appelé "opérateur d'appel". Il est utilisé pour exécuter une commande lorsque le chemin contient des espaces ou des caractères spéciaux. Sans cet opérateur, PowerShell pourrait interpréter le chemin comme une chaîne littérale plutôt que comme une commande.</mark>
{% endhint %}

### **Étape 5 : Post-Mise à jour**

Après une mise à jour réussie, procédez comme suit :

1. Copiez votre `pg_hba.conf` de l'ancienne version dans le répertoire de données de la nouvelle version. Supprimez également le fichier `.org` si vous n'en avez plus besoin.
2. Mettez à jour le fichier `postgresql.conf` dans la nouvelle version. L'installation a probablement détecté que le port 5432 était déjà utilisé (par l'ancienne version) et a attribué un autre port, comme 5433. Changez ce port en 5432.
3. Démarrez le nouveau serveur avec PowerShell :

   ```powershell
   net start postgresql-x64-15
   ```
4. Désinstallez l'ancienne version.
5. Supprimez les données de l'ancienne version si nécessaire.

Après ces étapes, votre serveur devrait être opérationnel avec PostgreSQL 15.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki-tech.fikara.io/base-de-donnees/postgresql/mise-a-jour-de-postgresql-sous-windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
