# PostgreSQL - Mise à jour

## **Processus de mise à niveau**

### Requête <a href="#postgresqlupgradeinplace-requete" id="postgresqlupgradeinplace-requete"></a>

La mise à jour d'un PaaS PostgreSQL est de la responsabilité de **cegedim.cloud** et peut être demandée via un [ticket requête](https://itcare.cegedim.cloud/support?createTicket=true\&requestTypeIndex=3\&formName=DB_POSTGRES\&step=Request) soumis depuis ITCare en précisant un créneau de disponibilité pour l'opération.

Merci de préciser si celle-ci doit être réalisée en heures non ouvrées pour planification d'une RFC.

Il est recommandé de procéder à la mise à jour de vos environnements de non production d'abord afin de pouvoir estimer le temps d'interruption généré par l'opération ainsi que de recetter vos applications dans la nouvelle version du moteur.

### Déroulement <a href="#postgresqlupgradeinplace-deroulement" id="postgresqlupgradeinplace-deroulement"></a>

La mise à jour d'un déploiement PostgreSQL (mono-instance ou haute disponibilité) se déroule en deux étapes complètement automatisées :

* Mise à jour du système d'exploitation préalable
  * Plusieurs mises à jour selon le scénario : Debian 10 → Debian 11 -> Debian 12 -> Debian 13
* Mise à jour du moteur PostgreSQL dans la version cible

Selon la version source et cible de PostgreSQL, il peut donc être nécessaire de migrer d'abord le système d'exploitation dans une version supportée par **cegedim.cloud** (voir [#postgresqlupgradeinplace-os-postgresqlsupportmatrixmatrice](#postgresqlupgradeinplace-os-postgresqlsupportmatrixmatrice "mention")).

<figure><picture><source srcset="https://1991151216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu3cmMjeBxFoEweG69ePZ%2Fuploads%2Fgit-blob-baebfe5b517a5d89dc2b7990a10ed88ae8aa8518%2Fdarkfr.png?alt=media" media="(prefers-color-scheme: dark)"><img src="https://1991151216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu3cmMjeBxFoEweG69ePZ%2Fuploads%2Fgit-blob-448305a2ce87bba5f4bdf073cdce1022c6992658%2Flight_fr.png?alt=media" alt="" width="563"></picture><figcaption></figcaption></figure>

### Impacts <a href="#postgresqlupgradeinplace-impacts" id="postgresqlupgradeinplace-impacts"></a>

* La durée d'une mise à jour est variable selon :
  * Les ressources cpu et ram configurées
  * La quantité de données dont les entêtes doivent être modifiés par le moteur PostgreSQL.
  * La quantité de données à réindexer suite au changement de librairie C, après une mise à jour de l'OS.
* Le mode de sauvegarde :
  * Point-in-time Recovery (PITR) à partir de PostgreSQL 12 et supérieur.
    * Le mode de sauvegarde "dump" disparait donc au profit du "PITR" et ne reste utilisé que dans les versions de PostgreSQL inférieures à la version 12.

### Temps de référence <a href="#postgresqlupgradeinplace-tempsdereference" id="postgresqlupgradeinplace-tempsdereference"></a>

A titre indicatif, voici les durées pour chaque étape d'une mise à jour d'une base de données pgbench de 100 Go :

* Mise à jour de Debian : 10 minutes en moyenne
* Réindexation PostgreSQL : 5 minutes en moyenne
* Mise à jour de PostgreSQL : 1 minute en moyenne
* Checksum PostgreSQL : 3 minutes en moyenne
* Vacuuming de PostgreSQL : 1 minute en moyenne
* Sauvegarde complète de PostgreSQL (mode PITR) : 16 minutes en moyenne

En mode PostgreSQL HA, nous devons également mettre à jour le réplica et le synchroniser avec le leader :

* Synchronisation PostgreSQL : 4 minutes en moyenne

Durée moyenne totale pour une base de données de 100GB : 40 minutes

## **Matrice de support OS / PostgreSQL** <a href="#postgresqlupgradeinplace-matricedesupportos-postgresqlmatrice" id="postgresqlupgradeinplace-matricedesupportos-postgresqlmatrice"></a>

Distribution Linux supportées par **cegedim.cloud** en fonction de la version de PostgreSQL :

<table><thead><tr><th width="258">Versions de PostgreSQL</th><th>Distribution Linux supportée</th></tr></thead><tbody><tr><td>PostgreSQL 12</td><td>Debian 10</td></tr><tr><td>PostgreSQL 13</td><td>Debian 11</td></tr><tr><td>PostgreSQL 14</td><td>Debian 11</td></tr><tr><td>PostgreSQL 15</td><td>Debian 11</td></tr><tr><td>PostgreSQL 16</td><td>Debian 12</td></tr><tr><td>PostgreSQL 17</td><td>Debian 13</td></tr><tr><td>PostgreSQL 18</td><td>Debian 13</td></tr></tbody></table>

## **Chemins de mises à jour PostgreSQL supportés** <a href="#postgresqlupgradeinplace-cheminsdemisesajourpostgresqlsupportes" id="postgresqlupgradeinplace-cheminsdemisesajourpostgresqlsupportes"></a>

La mise à jour du système d'exploitation, si elle a lieu, peut nécessiter une réindexation complète (aussi prise en charge par **cegedim.cloud**) du fait des évolutions de la librairie C lors de la mise à jour du système d'exploitation.

Selon la quantité de données, cette opération peut prendre un certains temps.

Ci-dessous les chemins de mises à jour supportés par **cegedim.cloud** :

<table data-full-width="true"><thead><tr><th width="181">Version Source</th><th>PostgreSQL 13</th><th>PostgreSQL 14</th><th>PostgreSQL 15</th><th>PostgreSQL 16</th><th>PostgreSQL 17</th><th>PostgreSQL 18</th></tr></thead><tbody><tr><td>PostgreSQL 12</td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 10 → Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 10 → Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 10 → Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 10 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>***</strong></p><p>Debian 10 → Debian 13</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>***</strong></p><p>Debian 10 → Debian 13</p></td></tr><tr><td>PostgreSQL 13</td><td></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td></tr><tr><td>PostgreSQL 14</td><td></td><td></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td></tr><tr><td>PostgreSQL 15</td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>**</strong></p><p>Debian 11 → Debian 13</p></td></tr><tr><td>PostgreSQL 16</td><td></td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 12 → Debian 13</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><strong>*</strong></p><p>Debian 12 → Debian 13</p></td></tr><tr><td>PostgreSQL 17</td><td></td><td></td><td></td><td></td><td></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr></tbody></table>

**\*** Une migration du système d'exploitation est requise.

**\*\*** Une double migration du système d'exploitation est requise.

**\*\***\* Une triple migration du système d'exploitation est requise.


---

# 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://academy.cegedim.cloud/francais/bases-de-donnees/postgresql/postgresql-mise-a-jour.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.
