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

Datastream utilise le journal des transactions WAL (Write Ahead Log) de 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 apportée aux données réelles dans l'une des tables de la base de données.

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

Nous vous recommandons 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. C'est particulièrement important pour les transactions de longue durée qui, dans des cas extrêmes, peuvent entraîner une taille de fichier WAL occupant tout l'espace de stockage et provoquer 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 mesure de précaution alternative 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 avant expiration) 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 prévus 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.

Optimiser les fichiers journaux WAL

Pour éviter une latence élevée de vos flux et une croissance rapide de la taille des fichiers journaux WAL lors de la réplication de données à partir d'une source PostgreSQL, envisagez d'appliquer les précautions suivantes :

  • Évitez les opérations de longue durée volumineuses, car elles peuvent augmenter considérablement la taille de votre fichier WAL.
  • Utilisez les tables UNLOGGED ou TEMPORARY lors des opérations par lot.
  • Vérifiez votre configuration WAL et envisagez de réduire la fréquence des points de contrôle. Pour en savoir plus, consultez Configuration WAL.
  • Recherchez les opérations DELETE volumineuses et envisagez de les remplacer par des opérations TRUNCATE. Cela peut réduire considérablement les données des fichiers WAL. Toutefois, vous devez être prudent, car Datastream ne réplique pas les opérations TRUNCATE.

Étape suivante