Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

583 lines (530 sloc) 24.772 kB
<?xml version="1.0" encoding="UTF-8"?>
<!-- Dernière modification
le $Date$
par $Author$
révision $Revision$ -->
<article id="runtime-config">
<title>Configuration</title>
<indexterm>
<primary>configuration</primary>
<secondary>du démon slon</secondary>
</indexterm>
<para>
Il existe plusieurs paramètres de configuration qui affectent le comportement
du système de réplication. Dans cette section, nous allons décrire
comment définir les paramètres de configuration du démon
<application>slon</application>&nbsp;; La sous-section qui suit détaille
chaque paramètre&nbsp;:
</para>
<para>
Tous les noms de paramètres sont sensibles à la casse des lettres.
Chaque paramètre se voir assigner un type&nbsp;: booléen,
entier, flottant ou chaîne de caractères. Les valeurs booléennes
peuvent être <literal>ON</literal>, <literal>OFF</literal>,
<literal>FALSE</literal>, <literal>YES</literal>, <literal>NO</literal>,
<literal>1</literal>, <literal>0</literal> (toutes en majuscule) ou
n'importe quel préfixe non ambigü de ces valeurs.
</para>
<para>
On spécifie un paramètre par ligne. Le signe égal entre le nom
et la valeur est optionnel. Les espaces ne sont pas
significatifs et les lignes vides sont ignorées.
Le caractère dièse (<literal>#</literal>) permet de placer
un commentaire n'importe où. Les valeurs des paramètres qui ne
sont pas des identifiant ou des nombres doivent être encadrées
par des guillemets simples.
</para>
<para>
Certaines options peuvent être définies en ligne de commande,
ces options surchargent les paramètres identiques qui se trouvent
dans le fichier de configuration.
</para>
<sect1 id="slon-config-logging">
<title>Traces</title>
<variablelist>
<varlistentry id="slon-config-logging-syslog" xreflabel="slon_conf_syslog">
<term>
<varname>syslog</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration de <varname>syslog</varname></primary>
</indexterm>
</term>
<listitem>
<para>Active les traces avec syslog. Si le paramètre vaut 1, les messages vont
à la fois vers syslog et la sortie standard. La valeur 2 envoie les traces
uniquement à syslog. Toutefois, certains messages seront toujours envoyés
sur la sortie standard ou sur la sortie des erreurs. Par défaut, ce paramètre
est à 0, ce qui signifie que syslog est désactivé.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-syslog-facility" xreflabel="slon_conf_syslog_facility">
<term>
<varname>syslog_facility</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration de <varname>syslog_facility</varname></primary>
</indexterm>
</term>
<listitem>
<para>Positionne la <quote>facility</quote> que syslog devra utiliser.
Les valeurs valides sont LOCAL0, LOCAL1, LOCAL2,
LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. La valeur par défaut est
LOCAL0.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-syslog-ident" xreflabel="slon_conf_syslog_ident">
<term>
<varname>syslog_ident</varname> (<type>chaîne</type>)
<indexterm>
<primary>Paramètre de configuration de <varname>syslog_ident</varname></primary>
</indexterm>
</term>
<listitem>
<para>Définit le nom du programme utilisé pour identifier les messages slon
dans syslog. La valeur par défaut est slon.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-log-level" xreflabel="lon_conf_log_level">
<term>
<varname>log_level</varname> (<type>entier</type>)
<indexterm>
<primary>Paramètre de configuration du <varname>log_level</varname></primary>
</indexterm>
</term>
<listitem>
<para>Niveau de traces de débogage (plus la valeur est haute, plus les
messages sont verbeux).
Valeurs possibles&nbsp;: de 0 à 4. Valeur par défaut&nbsp;: 0.</para>
<para>Il y a <link linkend="nineloglevels">neuf niveaux de messages
de trace</link>&nbsp;; en utilisant cette option, une partie ou l'ensemble
des niveaux <quote>debug</quote> peut être désactivé.
Avec &slony1; version 2, beaucoup de niveaux de message ont
été révisé afin que des <quote>informations intéressantes</quote>
apparaissent à partir des niveaux CONFIG/INFO, et qu'il soit possible
de fonctionner au niveau 0, en ignorant tous les messages
<quote>DEBUG</quote> et continuer à recevoir des informations
utiles dans les journaux applicatifs.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-log-pid" xreflabel="slon_conf_log_pid">
<term>
<varname>log_pid</varname> (<type>booléen</type>)
<indexterm>
<primary>paramètre de configuration du <varname>log_pid</varname></primary>
</indexterm>
</term>
<listitem>
<para>Détermine si le PID du processus père slon
doit apparaître dans chaque ligne du journal applicatif.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-log-timestamp" xreflabel="slon_conf_log_timestamp">
<term>
<varname>log_timestamp</varname> (<type>booléen</type>)
<indexterm>
<primary>paramètre de configuration de <varname>log_timestamp</varname></primary>
</indexterm>
</term>
<listitem>
<para>Détermine si l'horodatage de chaque événement doit
apparaître dans chaque ligne du journal applicatif.</para>
<para>
Notez que si l'utilisation de <envar>syslog</envar> est configuré,
alors ceci est ignoré&nbsp;; il est supposé que
<application>syslog</application> fournira des horodatages, ce qui
fait cet horodatage est supprimé car inutile.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-log-timestamp-format" xreflabel="slon_conf_log_timestamp_format">
<term>
<varname>log_timestamp_format</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration du <varname>log_timestamp_format</varname></primary>
</indexterm>
</term>
<listitem>
<para>Une chaîne au format conforme avec <function>strftime()</function>
qui sera utilisé si <envar>log_timestamp</envar> est activé.
La valeur par défaut est <quote>%Y-%m-%d %H:%M:%S %Z</quote></para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-logging-pid-file" xreflabel="slon_conf_log_pid_file">
<term>
<varname>pid_file</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration du <varname>pid_file</varname></primary>
</indexterm>
</term>
<listitem>
<para>L'emplacement et le nom du fichier où vous souhaitez
stocker le PID du processus slon. La valeur par défaut n'est
pas définie, ce qui implique qu'aucun fichier n'est écrit.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="slon-config-connection">
<title>Paramètres de connexion</title>
<variablelist>
<varlistentry id="slon-config-connection-cluster-name" xreflabel="slon_conf_cluster_name">
<term>
<varname>cluster_name</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration <varname>cluster_name</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Définit le nom du cluster que l'instance de
<application>slon</application> doit gérer.
Par défaut, cette valeur est obtenue en ligne de commande.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-connection-conn-info" xreflabel="slon_conf_conn_info">
<term><varname>conn_info</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration <varname>conn_info</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Définit les informations de connexion pour <application>slon</application>.
Par défaut, cette valeur est obtenue en ligne de commande.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-sql-on-connection" xreflabel="slon_conf_sql_on_connection">
<term><varname>sql_on_connection</varname> (<type>chaîne</type>)
<indexterm>
<primary>paramètre de configuration de <varname>sql_on_connection</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Exécute cette requête SQL sur chaque n&oelig;ud lorsque
<application>slon</application> s'y connecte. Utile pour
définir un niveau de trace, ou pour configurer les
paramètres du planificateur ou de la mémoire.
Vous pouvez spécifier de multiples requêtes en les
séparant par un point-virgule.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="slon-archive-logging">
<title>Options d'archivage</title>
<variablelist>
<varlistentry id="slon-config-archive-dir" xreflabel="slon_conf_archive_dir">
<term><varname>archive_dir</varname> (<type>text</type>)
<indexterm>
<primary>paramètre de configuration <varname>archive_dir</varname></primary>
</indexterm>
</term>
<listitem>
<para>Ceci indique dans quel répertoire les fichiers d'archivages des SYNC doivent
être stockés.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-command-on-logarchive" xreflabel="slon_conf_command_on_log_archive">
<term><varname>command_on_logarchive</varname> (<type>texte</type>)
<indexterm>
<primary>paramètre de configuration de <varname>command_on_logarchive</varname></primary>
</indexterm>
</term>
<listitem>
<para>Ce paramètre définit une commande Unix qui sera exécutée à
chaque fois qu'un fichier d'archive est produit.
</para>
<para>Un paramètre est passé à cette commande&nbsp;: le chemin absolu
du fichier d'archive. Ainsi, si on imagine la configuration suivante&nbsp;:
</para>
<para>
<command>command_on_logarchive = <filename>/usr/local/bin/logstuff</filename></command>
</para>
<para>
<command>archive_dir = <filename>/var/log/slony1/archivelogs/payroll</filename></command>
</para>
<para>Un fichier de d'archive sera nommé de cette façon&nbsp;:
<filename>/var/log/slony1/archivelogs/payroll/slony1_log_1_00000000000000000036.sql</filename></para>
<para>La commande exécutée après que le SYNC soit généré est&nbsp;:</para>
<para>
<command><filename>/usr/local/bin/logstuff</filename> <filename>/var/log/slony1/archivelogs/payroll/slony1_log_1_00000000000000000036.sql</filename></command>
</para>
<warning><para>Notons que cette commande est lancée avec la fonction
<function>system(const char *COMMAND)</function>&nbsp;; si le programme
exécuté dure 5 minutes, cela retardera le prochain
<command>SYNC</command> de cinq minutes. Vous devez vous assurer
que la commande d'archivage ne fait pas de choses trop
<quote>compliquées</quote>.</para></warning>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="slon-config-interval">
<title>Configuration des évènements</title>
<variablelist>
<varlistentry id="slon-config-sync-interval" xreflabel="slon_conf_sync_interval">
<term><varname>sync_interval</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>sync_interval</varname></primary>
</indexterm>
</term>
<listitem>
<para>Fréquence maximale (en millisecondes) de vérification des mises à jour.
Valeurs possibles&nbsp;: de 10 à 60000, La valeur par défaut est 100.
</para>
<para>
Ce paramètre est principalement intéressant sur les n&oelig;uds origines
des ensembles de réplication. Sur les autres n&oelig;uds, il n'y aura
pas d'activité de mise à jour qui pourrait induire un SYNC&nbsp;; à
la place, le délai décrit ci-dessous induit un SYNC à cette fréquence
<emphasis>même en absence de modifications du réplicat</emphasis>.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-sync-interval-timeout" xreflabel="slon_conf_sync_interval_timeout">
<term><varname>sync_interval_timeout</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration<varname>sync_interval_timeout</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Délai maximal, en millisecondes, avant qu'un événement
<command>SYNC</command> soit déclenché. Ceci évite les
situations de compétition («&nbsp;race conditions&nbsp;») 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 <command>SYNC</command> est attrapé
par un n&oelig;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
<command>SYNC</command> 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 <option>-s</option> n'y feront rien.
Ainsi, il est nécessaire d'avoir un paramètre
<envar>sync_interval_timeout</envar>.
Valeurs possibles&nbsp;: [0-120000]. Valeur par défaut&nbsp;: 1000.
</para>
<para>
Ce paramètre peut rapidement devenir important pour les n&oelig;uds
orgines bien qu'il affecte la façon dont les événements sont générés
sur les autes n&oelig;uds.
</para>
<para>
sur un n&oelig;ud qui n'est pas une origine, il n'y a aucune activité
réclamant la génération d'un SYNC&nbsp;; du coup, il va y avoir un
SYNC généré chaque <envar>sync_interval_timeout</envar> 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.
</para>
<para>
Les deux valeurs fonctionnent ensemble de façon différente&nbsp;:
</para>
<para>
Sur un n&oelig;ud origine, <envar>sync_interval</envar> est la période
de temps <emphasis>minimum</emphasis> 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 <envar>sync_interval</envar> millisecondes.
</para>
<para>
Sur le meme n&oelig;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 <envar>sync_interval_timeout</envar>
millisecondes.
</para>
<para>
Sur un n&oelig;ud abonné qui n'est l'origine d'aucun ensemble, seuls
des SYNC <quote>de délai</quote> seront générés.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-sync-group-maxsize" xreflabel="slon_conf_sync_group_maxsize">
<term><varname>sync_group_maxsize</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>sync_group_maxsize</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Nombre maximum d'événements <command>SYNC</command> qu'un n&oelig;ud
abonné groupera ensemble quand/si un abonné accuse trop de retard. Les
<command>SYNC</command> 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
<command>SYNC</command> est disponible, alors que vous avez utilisé
l'option <option>-g600</option>, &lslon; n'appliquera que celui qui
est disponible. Dès que l'abonné a rattrapé son retard, il cherchera
à appliquer chaque <command>SYNC</command> séparément, en solo, sauf si
le traitement entraîne à nouveau un retard.
Valeurs possibles&nbsp;: [0,10000]. Valeur par défaut&nbsp;: 20.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-vac-frequency" xreflabel="slon_conf_vac_frequency">
<term><varname>vac_frequency</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>vac_frequency</varname></primary>
</indexterm>
</term>
<listitem>
<para>
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 <application>pg_autovacuum</application>.
Valeurs possibles&nbsp;: [0,100]. Valeur par défaut&nbsp;: 3.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-cleanup-interval" xreflabel="slon_config_cleanup_interval">
<term><varname>cleanup_interval</varname> (<type>interval</type>)
<indexterm>
<primary>paramètre de configuration <varname>cleanup_interval</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Contrôle à quelle fréquence les vieux événements doivent être effacés.
En corollaire, cela contrôle le nettoyage des tables
<envar>sl_log_1</envar> et <envar>sl_log_2</envar>.
Valeur par défaut&nbsp;: '10 minutes'.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-cleanup-deletelogs" xreflabel="slon_conf_cleanup_deletelogs">
<term><varname>cleanup_deletelogs</varname> (<type>booléen</type>)
<indexterm>
<primary>paramètre de configuration <varname>cleanup_deletelogs</varname></primary>
</indexterm>
</term>
<listitem>
<para>
Contrôle si la commande DELETE est utilisée (ou pas) pour effacer les anciennes données
à l'intérieur des tables <envar>sl_log_1</envar> et <envar>sl_log_2</envar>.
Valeur par défaut&nbsp;: false.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-desired-sync-time" xreflabel="desired_sync_time">
<term><varname>desired_sync_time</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>desired_sync_time</varname></primary>
</indexterm>
</term>
<listitem>
<para>Temps maximum prévu pour un groupe d'événements
<command>SYNC</command>. Si la réplication est en retard,
<application>slon</application> essaie d'augmenter le nombre
de SYNC en évaluant le temps d'exécution qu'ils auraient du prendre.
Valeurs possibles&nbsp;: [10000,600000] ms. Valeur par défaut&nbsp;: 60000.</para>
<para>Si cette valeur est à 0, alors ce mécanisme est désactivé.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-quit-sync-provider" xreflabel="quit_sync_provider">
<term><varname>quit_sync_provider</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>quit_sync_provider</varname></primary>
</indexterm>
</term>
<listitem>
<para>Ce paramètre doit être utilisé conjointement avec <xref
linkend="slon-config-quit-sync-finalsync"/>. Il indique
le processus du n&oelig;ud fournisseur à surveiller pour
savoir si le slon doit s'arrêter après avoir atteint le numéro d'un
événement <quote>final</quote>.</para>
<para>Si cette valeur est à 0, alors ce mécanisme est désactivé.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-quit-sync-finalsync" xreflabel="quit_sync_finalsync">
<term><varname>quit_sync_finalsync</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>quit_sync_finalsync</varname></primary>
</indexterm>
</term>
<listitem>
<para>Numéro de l'événement final à traiter. Ceci
doit être utilisé en conjonction avec <xref linkend="slon-config-quit-sync-finalsync"/>,
et permet à <application>slon</application> de s'arrêter lorsqu'il atteint
un certain événement sur le n&oelig;ud fournisseur.</para>
<para>Si cette valeur est à 0, alors ce mécanisme est désactivé.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-lag-interval" xreflabel="lag_interval">
<term><varname>lag_interval</varname> (<type>chaîne/interval</type>)
<indexterm>
<primary>paramètre de configuration <varname>lag_interval</varname></primary>
</indexterm>
</term>
<listitem>
<para>Indique un intervalle à partir duquel le n&oelig;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&nbsp;;
les événements plus récents que <command>now() -
lag_interval::interval</command> sont laissés de côté afin d'être
traités plus tard.</para>
<para>Si cette valeur est vide, alors ce mécanisme est désactivé.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-max-rowsize" xreflabel="sync_max_rowsize">
<term><varname>sync_max_rowsize</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>sync_max_rowsize</varname></primary>
</indexterm>
</term>
<listitem>
<para>Taille à partir de laquelle le champ <envar>log_cmddata</envar> 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 <envar>sync_max_largemem</envar> et libérées à la demande (avec
la fonction <function>free()</function>).
</para>
<para>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&nbsp;Mo.
</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-max-largemem" xreflabel="sync_max_largemem">
<term><varname>sync_max_largemem</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>sync_max_largemem</varname></primary>
</indexterm>
</term>
<listitem>
<para>Taille maximum de la mémoire allouée pour les lignes volumineuses
quand <envar>log_cmddata</envar> est plus grand que
<envar>sync_max_rowsize</envar>.</para>
<para>Notez que l'algorithme lit les lignes jusqu'à ce que la valeur soit
<emphasis>dépassée</emphasis>. 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.
</para>
<para>La valeur par défaut est 5242880.</para>
</listitem>
</varlistentry>
<varlistentry id="slon-config-remote-listen-timeout" xreflabel="slon_conf_remote_listen_timeout">
<term><varname>remote_listen_timeout</varname> (<type>entier</type>)
<indexterm>
<primary>paramètre de configuration <varname>remote_listen_timeout</varname></primary>
</indexterm>
</term>
<listitem>
<para>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&nbsp;: [30-30000]. Valeur par défaut&nbsp;: 300ms.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</article>
Jump to Line
Something went wrong with that request. Please try again.