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

Datastream lit le journal WAL (Write-Ahead Log) de PostgreSQL pour capturer et répliquer les modifications de données au niveau des lignes de vos tables sources. Le serveur de base de données stocke chaque modification de transaction dans des fichiers WAL. Vous pouvez configurer les paramètres de conservation, de délai avant expiration et d'emplacement de réplication du WAL, et optimiser la croissance des fichiers journaux pour éviter une latence élevée du flux et l'épuisement de l'espace de stockage.

Définir les paramètres de configuration des 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) pour limiter la quantité d'espace de stockage utilisée par l'emplacement de réplication. Ceci est particulièrement important pour les transactions de longue durée qui, dans des cas extrêmes, peuvent entraîner l'occupation de l'intégralité de l'espace de stockage par la taille du fichier WAL 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 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 pour 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, tenez compte des précautions suivantes :

  • Évitez les opérations de longue durée, car elles peuvent augmenter considérablement la taille de votre fichier WAL.
  • Utilisez des 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.

Étapes suivantes