4. Configuration des évènements

sync_interval (entier)

Fréquence maximale (en millisecondes) de vérification des mises à jour. Valeurs possibles : de 10 à 60000, La valeur par défaut est 100.

Ce paramètre est principalement intéressant sur les nœuds origines des ensembles de réplication. Sur les autres nœuds, il n'y aura pas d'activité de mise à jour qui pourrait induire un SYNC ; à la place, le délai décrit ci-dessous induit un SYNC à cette fréquence même en absence de modifications du réplicat.

sync_interval_timeout (entier)

Délai maximal, en millisecondes, avant qu'un événement SYNC soit déclenché. Ceci évite les situations de compétition (« race conditions ») lorsqu'une séquence d'actions est lancée par un trigger alors que des lignes très longues sont insérées, ce qui fait que la séquence d'action est immédiatement visible pour le processus de synchronisation alors que les lignes insérées ne sont pas encore visibles. Si l'événement SYNC est attrapé par un nœud abonné, puis traité et terminé avant que la transaction ne soit validée, les changements de cette transaction ne seront pas répliqués avant le SYNC suivant. Cependant, si toutes les applications s'arrêtent soudainement, il n'y aura plus de séquence d'actions, et les vérifications fréquentes avec -s n'y feront rien. Ainsi, il est nécessaire d'avoir un paramètre sync_interval_timeout. Valeurs possibles : [0-120000]. Valeur par défaut : 1000.

Ce paramètre peut rapidement devenir important pour les nœuds orgines bien qu'il affecte la façon dont les événements sont générés sur les autes nœuds.

sur un nœud qui n'est pas une origine, il n'y a aucune activité réclamant la génération d'un SYNC ; du coup, il va y avoir un SYNC généré chaque sync_interval_timeout milli-secondes. Il n'y a pas d'abonnés cherchant ces SYNC, donc ces événements ne vont pas déclencher une activité de réplication. Par contre, ils vont occuper sl_event un moment, donc il est fortement indésirable que cette valeur soit basse. 120000ms représente 2 minutes, ce qui n'est pas une mauvaise valeur.

Les deux valeurs fonctionnent ensemble de façon différente :

Sur un nœud origine, sync_interval est la période de temps minimum qui sera couverte par un SYNC, et, durant les périodes de grosse activité, il se pourrait qu'un SYNC soit généré toutes les sync_interval millisecondes.

Sur le meme nœud origine, il peut y avoir des intervalles assez calmes, quand aucune modification réplicable de données n'est soumise. Un SYNC aura quand meme lieu, chaque sync_interval_timeout millisecondes.

Sur un nœud abonné qui n'est l'origine d'aucun ensemble, seuls des SYNC « de délai » seront générés.

sync_group_maxsize (entier)

Nombre maximum d'événements SYNC qu'un nœud abonné groupera ensemble quand/si un abonné accuse trop de retard. Les SYNC sont seulement groupés s'il sont trop nombreux et s'ils sont contigus. Tout autre type d'événement inséré entre entrainera la création d'un groupe plus petit. Et si un seul SYNC est disponible, alors que vous avez utilisé l'option -g600, slon(1) n'appliquera que celui qui est disponible. Dès que l'abonné a rattrapé son retard, il cherchera à appliquer chaque SYNC séparément, en solo, sauf si le traitement entraîne à nouveau un retard. Valeurs possibles : [0,10000]. Valeur par défaut : 20.

vac_frequency (entier)

Définit le nombre de cycles de nettoyage lancés avant qu'un VACUUM ne soit exécuté. O désactive les VACUUM internes, utilisés avec le démon pg_autovacuum. Valeurs possibles : [0,100]. Valeur par défaut : 3.

cleanup_interval (interval)

Contrôle à quelle fréquence les vieux événements doivent être effacés. En corollaire, cela contrôle le nettoyage des tables sl_log_1 et sl_log_2. Valeur par défaut : '10 minutes'.

cleanup_deletelogs (booléen)

Contrôle si la commande DELETE est utilisée (ou pas) pour effacer les anciennes données à l'intérieur des tables sl_log_1 et sl_log_2. Valeur par défaut : false.

desired_sync_time (entier)

Temps maximum prévu pour un groupe d'événements SYNC. Si la réplication est en retard, slon essaie d'augmenter le nombre de SYNC en évaluant le temps d'exécution qu'ils auraient du prendre. Valeurs possibles : [10000,600000] ms. Valeur par défaut : 60000.

Si cette valeur est à 0, alors ce mécanisme est désactivé.

quit_sync_provider (entier)

Ce paramètre doit être utilisé conjointement avec quit_sync_finalsync. Il indique le processus du nœud fournisseur à surveiller pour savoir si le slon doit s'arrêter après avoir atteint le numéro d'un événement « final ».

Si cette valeur est à 0, alors ce mécanisme est désactivé.

quit_sync_finalsync (entier)

Numéro de l'événement final à traiter. Ceci doit être utilisé en conjonction avec quit_sync_finalsync, et permet à slon de s'arrêter lorsqu'il atteint un certain événement sur le nœud fournisseur.

Si cette valeur est à 0, alors ce mécanisme est désactivé.

lag_interval (chaîne/interval)

Indique un intervalle à partir duquel le nœud est en décalage avec son fournisseur. Si cette valeur est définie, elle est utilisée dans la boucle de gestion des événements afin de modifier la priorité des événements dans la file d'attente ; les événements plus récents que now() - lag_interval::interval sont laissés de côté afin d'être traités plus tard.

Si cette valeur est vide, alors ce mécanisme est désactivé.

sync_max_rowsize (entier)

Taille à partir de laquelle le champ log_cmddata d'une ligne d'une table sl_log_? est considéré comme volumineux. Jusqu'à 500 lignes de cette taille sont autorisées en mémoire à un instant t. Les lignes plus larges sont comptées dans l'espace d'allocation sync_max_largemem et libérées à la demande (avec la fonction free()).

La valeur par défaut est 8192, ce qui signifie que la consommation mémoire (pour le curseur de LOG) ne doit pas dépasser 8 Mo.

sync_max_largemem (entier)

Taille maximum de la mémoire allouée pour les lignes volumineuses quand log_cmddata est plus grand que sync_max_rowsize.

Notez que l'algorithme lit les lignes jusqu'à ce que la valeur soit dépassée. Sinon, une ligne plus large que cette valeur bloquerait la réplication. En conséquence, ne supposez pas que la consommation mémoire restera inférieure à cette valeur.

La valeur par défaut est 5242880.

remote_listen_timeout (entier)

Durée, en millisecondes, que le processus d'écoute distant doit attendre avant de considérer qu'un événement est périmé. Valeurs possibles : [30-30000]. Valeur par défaut : 300ms.