Utiliser les fichiers journaux WAL de base de données PostgreSQL

Présentation

Datastream utilise le journal des transactions WAL (Write Ahead Log) PostgreSQL pour lire les flux PostgreSQL. Le journal est stocké dans des fichiers WAL sur le serveur de base de données. Chaque enregistrement du journal WAL représente une modification unique des données réelles dans l'une des tables de la base de données.

Définir les paramètres de configuration des fichiers WAL PostgreSQL

Il est recommandé d'appliquer les paramètres de configuration suivants à votre base de données PostgreSQL:

  • max_slot_wal_keep_size: définissez ce paramètre (disponible uniquement pour PostgreSQL 13 et versions ultérieures) afin de limiter la quantité de stockage utilisée par l'emplacement de réplication. Cela est particulièrement important pour les transactions de longue durée qui, dans des cas extrêmes, peuvent entraîner l'utilisation de la taille du fichier WAL par la totalité de l'espace de stockage et le plantage de la base de données.

  • statement_timeout: définissez ce paramètre sur une valeur sélectionnée pour réduire la latence causée par les transactions de longue durée. Vous pouvez également utiliser statement_timeout comme autre mesure de précaution pour les bases de données qui ne sont pas compatibles avec max_slot_wal_keep_size.

  • wal_sender_timeout: définissez ce paramètre sur 0 (pour désactiver le délai d'inactivité) ou sur une valeur supérieure ou égale à 10 minutes.

Si vous prévoyez de créer plus de 10 flux ou si le nombre d'emplacements de réplication logique utilisés par d'autres ressources (en plus du nombre de flux planifiés) dépasse 10, veillez à modifier les paramètres suivants:

  • max_replication_slots: augmentez la valeur de ce paramètre en fonction du nombre d'emplacements de réplication définis pour votre base de données (vous avez besoin d'un emplacement de réplication par flux). Vous ne pouvez définir max_replication_slots qu'au démarrage du serveur.

  • max_wal_senders: augmentez la valeur de ce paramètre afin qu'elle soit supérieure à celle du paramètre max_replication_slots. Vous ne pouvez définir max_wal_senders que lorsque vous démarrez le serveur.