Blog

Blog

Les modes d'archivage

Si vous êtes un peu sérieux avec la durabilité de vos données, vous avez déjà activé le mode archive de vos WALs. Je l'explique assez souvent: dans le chemin d'écriture d'une donnée dans les fichiers de données, les WALs jouent un rôle critique et en garder une copie est une bonne idée.
En plus de peut-être vous sauver la vie un jour, cela permet également d'utiliser des fonctionnalités comme:
  • Les sauvegardes physiques à chaud
  • La réplication
  • Le Point In Time Recovery
Dans cet article, je vais parler du paramètre archive_mode.

Archive_mode

Les valeurs les plus utilisées de ce paramètre sont 'off' (valeur par défaut) et 'on'. Cependant, si on regarde attentivement la documentation, on voit qu'il existe une valeur 'always' pour ce paramètre.

Lorsque le paramètre est valorisé à 'off', les WAL ne sont pas archivés. Une fois qu'ils ne sont plus utiles, ils ne sont pas copiés alors et lorsqu'on aura besoin de place, on les recyclera. C'est la valeur par défaut et, encore une fois, je vous conseille de ne pas utiliser cette valeur.

Lorsque le paramètre est valorisé à 'on', les WAL sont archivés lors du fonctionnement normal de l'instance (c'est à dire lorsque des requêtes envoyées par les clients modifient la structure ou les données).

La dernière valeur (qui est peu utilisée), 'always', permet de créer des WAL y compris lors des opérations de recovery. En effet, lorsqu'une instance est en recovery, elle modifie la structure et les données des bases de données.

On pourrait considérer qu'étant donné qu'on a les WAL qui ont permis le recovery, il n'est pas nécessaire de créer des nouveaux WAL. Cependant, si nous nous plaçons dans le cas d'une streaming replication, les blocs sont streamés directement et pour éviter d'envoyer à nouveau ces informations à la standby via les WALs complets (avec archive_command ou pg_receivexlog), il est possible de demander à la standby de créer ses propres WAL. Cela permet d'économiser un peu la bande passante.

Pour en savoir plus

Cette fonctionnalité est disponible depuis la version 9.5.
Vous trouverez la documentation officielle ici: https://www.postgresql.org/docs/current/static/runtime-config-wal.html#GUC-ARCHIVE-MODE