root/traduc/trunk/slony/adminscripts.xml

Revision 1173, 34.7 kB (checked in by gleu, 3 weeks ago)

Modifications pour permettre la génération du manuel.
Patch de Christophe Bouchet, avec quelques modifications supplémentaires de ma
part.
Cependant, il reste encore du travail pour avoir une génération parfaite.

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- DerniÚre modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6
7 <sect1 id="adminscripts">
8   <title>Scripts d'administration</title>
9
10   <indexterm><primary>scripts d'administration de &slony1;</primary></indexterm>
11
12   <para> Un certain nombre de scripts ont été développes tout au long de l'histoire de
13         &slony1; pour aider les utilisateurs à gérer leurs clusters. Cette section ainsi
14         que celle sur le <xref linkend="monitoring"/> et la  <xref
15   linkend="maintenance"/> décrit leur utilisation. </para>
16
17   <sect2 id="altperl"> <title>Les scripts altperl</title>
18
19     <indexterm><primary> Script altperl pour &slony1;</primary></indexterm>
20
21     <para>Il existe un ensemble de scripts qui simplifie l'administration de plusieurs
22     instances &slony1;. Ces scripts supportent une nombre variable de noeuds. Ils peuvent
23     être installés pendant le processus d'installation :</para>
24
25     <para><command> ./configure --with-perltools</command></para>
26
27     <para>Ceci va produire un certain nombre de scripts avec le préfixe
28     <command>slonik_</command>.  Ils éliminent les risques de confusion en se référençant
29     à un fichier central de configuration qui contient les détails de la configuration
30     de votre site. Un exemple documenté de ce fichier est fourni dans
31     <filename>altperl/slon_tools.conf-sample</filename>. La plupart dispose également
32     une aide en ligne grâce à l'option "--help", ce qui les rend plus facile à prendre en main
33     et à utiliser.</para>
34
35     <para>La plupart des scripts de génération Slonik utilise la sortie STDOUT.
36     Pendant un temps, les commandes étaient passées directement à <xref linkend="slonik"/>
37     pour qu'il les exécute. Malheureusement, il s'agit d'une méthode trop .
38     <quote>agressive</quote>, car de légÚres coquilles dans la ligne de commande
39     peuvent conduire, dans certains cas, à des situations calamiteuses.
40     Tout administrateur qui se respecte doit relire le script
41     <emphasis>avant</emphasis> de l'envoyer à <xref linkend="slonik"/>.</para>
42
43     <sect3><title>Gestion de multiples clusters</title>
44       <indexterm><primary>Gérer de multiples clusters avec les outils altperl</primary></indexterm>
45
46       <para>La variable d'environnement <envar>SLONYNODES</envar> est utilisée pour déterminer
47       quel fichier de configuration Perl sera utilisé pour controler les noeuds du cluster
48       &slony1;. Si elle n'est pas fournie le fichier  <filename>slon_tools.conf</filename>
49       situé dans l'emplacement par défaut sera utilisé. </para>
50
51       <para>Voici la liste des variables qui peuvent être configurées :
52       <itemizedlist>
53
54         <listitem><para><envar>$CLUSTER_NAME</envar>=orglogs;   # Quel est le nom du cluster de réplication ?</para></listitem>
55         <listitem><para><envar>$LOGDIR</envar>='/opt/OXRS/log/LOGDBS';  # Quel est le répertoire des logs ?</para></listitem>
56         <listitem><para><envar>$APACHE_ROTATOR</envar>="/opt/twcsds004/OXRS/apache/rotatelogs";  # Si ce paramÚtre est défini, il indique où trouver le gestionnaire de logs d'Apache</para></listitem>
57         <listitem><para><envar>foldCase</envar> # Si la valeur est 1, les noms d'objet ( y compris les noms de schéma) seront transformés en minuscule. Par défaut, les noms d'objets restent inchangés. Notons que &postgres; lui-même transforme les noms d'objets en minuscule;
58         Si vous créez une table avec la commande <command> CREATE TABLE
59         MA_TABLE (Id INTEGER, MoNChamp text);</command>, le résultat sera
60         équivalent à <command> create table ma_table (id integer,
61         monchamp text);</command>, le nom de la table et ses champs sera transformé en minuscule.
62         </para>
63
64         </listitem>
65       </itemizedlist>
66       </para>
67
68       <para> Vous pouvez ensuite définir un ensemble de noeuds qui participeront à la réplication
69       en utilisant plusieurs appels à la fonction <function>add_node()</function>.
70       </para>
71
72       <para><command>
73         add_node (host => '10.20.30.40', dbname => 'orglogs', port => 5437,
74                                 user => 'postgres', node => 4, parent => 1);
75       </command></para>
76
77       <para>Les paramÚtres de la fonction <function>add_node()</function> sont les suivants :</para>
78
79       <programlisting>
80       my %PARAMS =   (host=> undef,             # nom de l'hÃŽte
81                         dbname => 'template1',  # nom de la base
82                       port => 5432,             # numéro du port
83                       user => 'postgres',       # utilisateur de la connexion
84                       node => undef,            # numéro du noeud
85                       password => undef,        # mot de passe de l'utilisateur
86                       parent => 1,              # l'identifiant du noeud pÚre
87                       noforward => undef        # ce noeud doit-il retransmettre les modifications ?
88                       sslmode => undef        # mode SSL - détermine la priorité
89                                               # d'utilisation de la couche SSL
90                                               # = disable,allow,prefer,require
91       );
92       </programlisting>
93     </sect3>
94
95     <sect3><title>Configuration d'un ensemble de réplication </title>
96       <indexterm><primary>cluster.set1 - configuration d'un ensemble de réplication pour les outils
97       Perl</primary></indexterm>
98
99       <para>La variable d'environnement UNIX <envar>SLONYSET</envar> est utilisée pour déterminer
100       quel fichier de configuration doit être lu pour connaître les objets qui sont contenus
101       dans un ensemble donné.</para>
102
103       <para>Contrairement à <envar>SLONYNODES</envar>, qui est essentielle pour
104       <emphasis>tous</emphasis> les scripts de génération <xref linkend="slonik"/>,
105       celle-ci n'est nécessaire que lorsqu'on exécute
106       <filename>create_set</filename>, car il s'agit du seul script qui contrÃŽle
107       le placement des tables dans les différents ensemble de réplication.
108       </para>
109
110     </sect3>
111     <sect3><title>slonik_build_env</title>
112       <indexterm><primary>slonik_build_env</primary></indexterm>
113
114       <para>Cette commande interroge la base de données et produit un résultat qui
115       peut être utilisé dans <filename>slon_tools.conf</filename>, notamment :</para>
116       <itemizedlist>
117
118       <listitem><para> une série d'appel à <function>add_node()</function> pour configurer
119       le cluster</para></listitem>
120       <listitem><para> les tableaux <envar>@KEYEDTABLES</envar>,
121       <envar>@SERIALT</envar>, et <envar>@SEQUENCES</envar></para></listitem>
122       </itemizedlist>
123     </sect3>
124     <sect3><title>slonik_print_preamble</title>
125
126       <para>Cette commande produit simplement le <quote>préambule</quote> qui est nécessaire
127       à chaque scripts slonik. En fait, elle fournit un <quote>squelette</quote> de script slonik
128       qui ne fait pas d'action particuliÚre.</para>
129     </sect3>
130     <sect3><title>slonik_create_set</title>
131
132       <para>Cette commande nécessite que les variables <envar>SLONYSET</envar> et
133       <envar>SLONYNODES</envar> soit configurées;
134       Elle permet de produire le script <command>slonik</command>
135       qui configure un ensemble de réplication en décrivant les tables et les séquences
136       qui seront répliquées.</para>
137     </sect3>
138     <sect3><title>slonik_drop_node</title>
139       <para>Cette commande produit une script Slonik qui supprime une noeud du cluster &slony1; .</para>
140     </sect3>
141     <sect3><title>slonik_drop_set</title>
142       <para>Cette commande produit un script Slonik qui supprime un ensemble de réplication
143       (<emphasis>c'est à dire</emphasis> un groupe de tables et de séquences).</para>
144     </sect3>
145
146     <sect3 id="slonik-drop-table"><title>slonik_drop_table</title>
147       <para>Cette commande produit un script Slonik qui supprime une table de la réplication.
148       Elle nécessite en entrée l'identifiant de la table ( disponible dans le table
149       <envar>sl_table</envar>). </para>
150     </sect3>
151
152     <sect3><title>slonik_execute_script</title>
153       <para>Cette commande produit un script pour effectuer des changements DDL sur un ensemble
154       de réplication.</para>
155     </sect3>
156
157     <sect3><title>slonik_failover</title>
158       <para>Cette commande produit un script qui demande une bascule d'urgence entre un noeud
159       mort et une nouvelle origine</para>
160     </sect3>
161     <sect3><title>slonik_init_cluster</title>
162       <para>Cette commande produit un script Slonik qui intialise un cluster &slony1; tout entier,
163       y compris les noeuds, les voies de communications et les voies d'écoute.
164       </para>
165     </sect3>
166
167     <sect3><title>slonik_merge_sets</title>
168       <para>Cette commande produit un script Slonik qui fusionne deux ensembles de réplication.
169       </para>
170     </sect3>
171    
172     <sect3><title>slonik_move_set</title>
173       <para>Cette commande produit un script Slonik qui déplace l'origine d'un ensemble de réplication vers un autre noeud.</para>
174     </sect3>
175     <sect3><title>réplication_test</title>
176
177       <para>Ce script vérifie que &slony1; réplique correctement les données.</para>
178     </sect3>
179     <sect3><title>slonik_restart_node</title>
180
181       <para>Cette commande produit un script Slonik que demande le redémarrage d'un noeud.
182       Elle était particuliÚrement utile avant la version 1.0.5, lorsque les noeuds étaient
183       bloqués suite à la mort du démon slon.</para>
184     </sect3>
185     <sect3><title>slonik_restart_nodes</title>
186
187       <para>Cette commande produit un script Slonik qui redémarre tous les noeuds du cluster.
188       Elle n'est pas trÚs utile.</para>
189     </sect3>
190
191     <sect3><title>slony_show_configuration</title>
192       <para>Cette commande affiche la configuration de l'environnement (c'est à dire la variable <envar>SLONYNODES</envar>).</para>
193     </sect3>
194
195     <sect3><title>slon_kill</title>
196       <para>Cette commande tue le chien de garde slony et tous les démons slon pour un
197       ensemble de réplication donné. Elle ne fonctionne que si ces processus fonctionnent sur l'hÃŽte local, bien sûr !
198       </para>
199     </sect3>
200    
201     <sect3><title>slon_start</title>
202       <para>Cette commande démarre le démon slon pour un cluster et un noeud donnés, elle utilise
203       le chien de garde slon_watchdog pour s'assurer qu'il fonctionne.</para>
204     </sect3>
205    
206     <sect3 id="slonwatchdog"><title>slon_watchdog</title>
207       <para>Processus utilisé par <command>slon_start</command>.</para>
208     </sect3>
209    
210     <sect3><title>slon_watchdog2</title>
211       <para>Ce script est un chien de garde plus malin; il surveille un noeud donné et relance
212       le processus slon si il constate qu'aucune modification ne s'est produite depuis 20 minutes ou plus.</para>
213       <para>Ceci est utile lorsqu'une connexion réseau est instable et que le démon slon s'arrête sans crier gare.</para>
214     </sect3>
215    
216     <sect3><title>slonik_store_node</title>
217       <para>Cette commande ajoute un noeud dans un cluster.</para>
218     </sect3>
219    
220     <sect3><title>slonik_subscribe_set</title>
221       <para>Ce script génÚre un script Slonik script pour abonner un noeud donné çà un ensemble donné.</para>
222     </sect3>
223    
224     <sect3><title>slonik_uninstall_nodes</title>
225       <para>Cette commande parcours le cluster et supprime le schéma &slony1; sur tous les noeuds;
226       Vous pouvez utilisez cet outil si vous souhaitez détruire la réplication sur l'ensemble du cluster. Il s'agit d'un script <emphasis>TRÈS</emphasis> dangereux !</para>
227     </sect3>
228    
229     <sect3><title>slonik_unsubscribe_set</title>
230       <para>Cette commande produit un script Slonik qui désabonne un noeud d'un ensemble de réplication.</para>
231     </sect3>
232  
233     <sect3><title>slonik_update_nodes</title>
234       <para>Cette commande produit un script Slonik qui incite tous les noeuds à mettre à jour les fonctions &slony1;. Elle est utile lorsque l'on effectue un changement de version de &slony1;.</para>
235     </sect3>
236 </sect2>
237 <sect2 id="mkslonconf"><title>mkslonconf.sh</title>
238   <indexterm><primary>Générer le fichier slon.conf pour &slony1;</primary></indexterm>
239
240   <para> Ce script shell est conçu parcourir un cluster &slony1; et
241   produire un ensemble de fichiers <filename>slon.conf</filename>
242   qui pourront être utilisé via l'option <command> slon -f slon.conf </command>.
243   </para>
244
245   <para> Lorsque toute la configuration est placée dans un fichier pour chaque &lslon;,
246   on peut alors facilement les invoquer, sans risquer d'oublier l'option
247   <command>-a</command>, ce qui peut provoquer le crash d'un noeud en mode
248   <link linkend="logshipping"> log shipping </link>. </para>
249
250   <para> Pour lancer le script, il faut configurer l'environnement de la maniÚre suivante :</para>
251
252   <itemizedlist>
253     <listitem><para> Tout d'abord, l'environnement doit être configuré avec les paramÚtres
254       adéquats pour que libpq puisse se connecter à une des bases de données du cluster.
255       Vous devez donc définir une combinaison parmi les variables d'environnement suivantes :
256       </para>
257
258       <itemizedlist>
259         <listitem><para><envar>PGPORT</envar></para></listitem>
260         <listitem><para><envar>PGDATABASE</envar></para></listitem>
261         <listitem><para><envar>PGHOST</envar></para></listitem>
262         <listitem><para><envar>PGUSER</envar></para></listitem>
263         <listitem><para><envar>PGSERVICE</envar></para></listitem>
264       </itemizedlist>
265     </listitem>
266
267     <listitem>
268       <para> <envar>SLONYCLUSTER</envar> - le nom du cluster &slony1; qui
269       doit être <quote>parcouru</quote>.  </para>
270     </listitem>
271
272     <listitem>
273       <para> <envar>MKDESTINATION</envar> - un répertoire qui accueillera
274       la configuration; le script crée un dossier
275       <filename>MKDESTINATION/$SLONYCLUSTER/conf</filename> pour les fichiers de configuration
276       des démons &lslon; et un dossier
277       <filename>MKDESTINATION/$SLONYCLUSTER/pid</filename> pour que &lslon; y stocke
278       les fichiers PID. </para>
279     </listitem>
280
281     <listitem>
282       <para> <envar>LOGHOME</envar> - un répertoire qui accueillera les fichiers
283       de log; un dossier nommé
284       <command>$LOGHOME/$SLONYCLUSTER/node[numéro]</command> sera créé pour chaque noeud.</para>
285     </listitem>
286  
287   </itemizedlist>
288   <para> Pour chaque <quote>nouveau</quote> noeud qu'il découvre, ce script
289   va créer un nouveau fichier de configuration &lslon;. </para>
290
291   <warning>
292     <para> Il est important de préciser que ce script présente quelques particularités
293     qu'il faut connaître, même aucune n'est vraiment surprenante.</para>
294
295     <itemizedlist>
296       <listitem>
297         <para> Le DSN est positionné à la plus petite valeur trouvé pour
298         chaque noeud dans le table <envar>sl_path</envar>.  Vous devrez probablement
299         modifier cette valeur.</para>
300       </listitem>
301
302       <listitem>
303         <para> Plusieurs paramÚtres sont initialisés avec leur valeur par défaut;
304         Vous devrez probablement les réajuster à la main. </para>
305       </listitem>
306
307       <listitem>
308         <para> Si vous exécutez les processus &lslon; sur de multiples noeuds (<emphasis>par exemple</emphasis> - si vous utilisez &slony1; à travers un réseau WAN),
309         ce script va joyeusement créer des fichiers de configuration pour des
310         &lslon;s que vous comptez lancer sur un hÃŽte différent.  </para>
311
312         <para> Vérifiez bien quels noeuds sont configurés avant de redémarrer les &lslon;s.  </para>
313
314         <para> En général, cela provoque des inconvénients mineurs,
315         comme, par exemple, un &lslon; fonctionnant de maniÚre inapproprié,
316          Ã©chouant suite à un problÚme de connectivité, (ce qui ne provoque pas
317         de dégâts ! ), ou fonctionnant moins efficacement vu qu'il se trouve du mauvais
318         coté du <quote>tuyau</quote>.</para>
319
320         <para> D'un autre cÃŽté, si vous faites fonctionner un noeud en mode log shipping sur
321         le site distant, l'arrivée d'un &lslon; que
322         <emphasis>ne collecte pas</emphasis> les logs peut ruiner une semaine complÚte d'activité. </para>
323       </listitem>
324     </itemizedlist>
325  
326   </warning>
327
328   <para> Les fichiers produits par <filename>mkslonconf.sh</filename>
329   sont spécifiquement conçu pour gérer des &lslon;s sur de multiples clusters
330   avec le script décrit dans la section suivante... </para>
331
332 </sect2>
333
334 <sect2 id="launchclusters"><title> launch_clusters.sh </title>
335
336   <indexterm><primary>lancer un cluster &slony1; cluster en utilisant les fichiers slon.conf </primary></indexterm>
337
338   <para> Voici un autre script shell qui utilise la configuration produite
339   par <filename>mkslonconf.sh</filename> et qui peut être utilisé lors du
340   démarrage du systÚme, à la suite des processus <filename>rc.d</filename>,
341   ou dans un processus cron, pour s'assurer que les processus &lslon;
342   fonctionnent.</para>
343
344   <para> Il utilise les variables d'environnement suivantes :</para>
345
346   <itemizedlist>
347
348     <listitem><para><envar>PATH</envar> qui doit contenir, de préférence au début, le
349     chemin vers les binaires &lslon; qui doivent être exécutés.</para></listitem>
350
351     <listitem><para><envar>SLHOME</envar> indique le répertoire
352       <quote>home</quote> qui contient les fichiers de configuration de &lslon;;
353       ces fichiers doivent être rangés en sous-répertoires, un pour chaque cluster,
354       avec un nom de fichier du type <filename>node1.conf</filename>,
355       <filename>node2.conf</filename>, et ainsi de suite. </para>
356
357       <para> Le script utilise la commande <command>find $SLHOME/$cluster/conf
358       -name "node[0-9]*.conf"</command> pour trouver les fichiers de configuration &lslon;.</para>
359
360       <para> Si vous déplacez ces fichiers, ou si vous les renommez, ils ne seront pas trouvés;
361       c'est une façon trÚs simple de supprimer des noeuds.</para>
362     </listitem>
363
364     <listitem>
365       <para><envar>LOGHOME </envar> indique le répertoire
366       <quote>home</quote> pour le stockage des journaux applicatifs.</para>
367
368       <para> Ce script ne nécessite pas l'utilisation de gestionnaire de logs d'Apache,
369       sachant que &postgres; version 8 gÚre lui-même la rotation des logs,
370       il semble inopportun de garder une dépendance à une <quote>technologie</quote>
371       de rotation spécifique. </para>
372     </listitem>
373
374     <listitem><para><envar>CLUSTERS</envar> est la liste des clusters &slony1; qui sont gérés.</para>
375     </listitem>
376
377   </itemizedlist>
378
379   <para> En pratique, vous pouvez lancer ce programme toutes les cinq minutes, et il relancera tous
380   les processus &lslon; manquants. </para>
381 </sect2>
382
383 <sect2 id="extractschema"><title> <filename> slony1_extract_schema.sh </filename> </title>
384
385   <indexterm><primary>script - slony1_extract_schema.sh</primary></indexterm>
386
387   <para> Si vous souhaiterez créer un nouveau noeud, aprÚs la création du cluster, le script  <filename>
388   slony1_extract_schema.sh </filename> vous aidera dans cette tache.</para>
389
390   <para> La commande d'exécution peut ressembler à la ligne suivante :</para>
391
392   <para><command> PGPORT=5881 PGHOST=master.int.example.info ./slony1_extract_schema.sh payroll payroll temppayroll </command> </para>
393
394   <para> Elle réalise les actions suivantes :</para>
395
396   <itemizedlist>
397     <listitem><para> Elle fait un dump du schéma du noeud origine, y compris les informations du schéma
398       du cluster &slony1;. </para>
399       <para> Notons que les variables d'environnement <envar>PGPORT</envar>
400       et <envar>PGHOST</envar> fournissent des informations additionnelles sur l'emplacement de la
401       base de données. </para>
402     </listitem>
403
404     <listitem><para> Ces informations sont chargées dans une table temporaire fraîchement créée : <envar>temppayroll</envar> </para>
405     </listitem>
406     <listitem><para> Les OIDs de table et de séquence dans les tables &slony1; sont corrigées pour
407     pointer vers la configuration de la base temporaire. </para> </listitem>
408     <listitem><para>  Un script slonik est lancé pour effectuer l'action <xref linkend="stmtuninstallnode"/>
409     sur la base temporaire. Ceci élimine toutes les tables et le schéma spécifique à &slony1;
410     et supprime les triggers &slony1; des tables répliquées. </para> </listitem>
411     <listitem><para> Enfin, la commande <application>pg_dump</application> est lancée sur la base
412     temporaire, et produit une copie nettoyée du schéma sur la sortie standard. </para> </listitem>
413   </itemizedlist>
414
415 </sect2>
416 <sect2><title> slony-cluster-analysis </title>
417
418   <indexterm><primary>script - slony-cluster-analysis</primary></indexterm>
419
420   <para> Si vous exploitez beaucoup de bases répliquées, au sein de plusieurs clusters &slony1;,
421   il peut devenir pénible de suivre et de documenter votre architecture.
422   L'outil suivant peut vous y aider.</para>
423
424   <para> <application>slony-cluster-analysis.sh</application> est un script shell
425   conçu pour fournir une analyse à long terme de la configuration d'un cluster
426   &slony1;.  Vous passez les variables d'environnement
427   <application>libpq</application> habituelles
428   (<envar>PGHOST</envar>, <envar>PGPORT</envar>,
429   <envar>PGDATABASE</envar>, et ainsi de suite) pour se connecter à un membre du cluster
430   &slony1;, et passer le nom du cluster comme argument.</para>
431
432   <para> Le script effectue alors les actions suivantes :</para>
433   <itemizedlist>
434     <listitem><para> Lancement d'une séries de requêtes sur les tables &slony1; pour obtenir la liste des
435     noeuds, des voies de communication, des ensembles de réplication et des tables.
436      </para> </listitem>
437     <listitem><para> Ces données sont stockées dans un fichier temporaire situé dans <filename>/tmp</filename> </para> </listitem>
438     <listitem><para> Une comparaison est effectuée entre la configuration présente et la configuration
439     trouvée lors de la derniÚre exécution du script. Si la configuration a changé, un courriel contenant
440     les différences ( produit avec <application>diff</application>)
441     est envoyée à l'adresse spécifiée. </para> </listitem>
442     <listitem><para> Si la configuration a changé, l'ancien fichier de configuration est renommé
443     pour indiquer quand le script a remarqué le changement. </para></listitem>
444     <listitem><para> Finalement, la configuration courante est stockée dans le dossier
445     <envar>LOGDIR</envar> dans un fichier nommé <filename>cluster.last </filename> </para> </listitem>
446   </itemizedlist>
447
448   <para> Il existe une exemple de script <quote>d'encapsulation</quote>,
449   <filename>slony-cluster-analysis-mass.sh</filename>, qui permet de
450   pointer vers un ensemble de clusters &slony1;.</para>
451
452   <para> Ceci devrait simplifier la taches des administrateurs ("DBA") sur deux plans : </para>
453
454   <itemizedlist>
455
456     <listitem><para> La documentation de l'état courant du systÚme.</para>
457     </listitem>
458
459     <listitem><para> La surveillance des changements de configuration. </para></listitem>
460   </itemizedlist>
461
462 </sect2>
463
464 <sect2 id="configurereplication"> <title> Génération de scripts slonik avec
465   <filename>configure-replication.sh</filename> </title>
466
467   <indexterm><primary> générer des scripts slonik pour un cluster </primary></indexterm>
468
469   <para> Le script
470   <filename>configure-replication.sh</filename>, situé dans le répertoire <filename>outil</filename>,
471   est conçu pour automatiser la génération de scripts slonik de configuration de la
472   réplication. La configuration de ce script reprend  la même approche que le <xref
473   linkend="testbed"/>.</para>
474
475   <para> Ce script utilise beaucoup ( peut-être énormément, si votre configuration
476   est particuliÚrement complexe) de variables d'environnement pour déterminer
477   la forme de la configuration du cluster. Il utilise massivement les valeurs par
478   défaut, et dans la plupart des cas, peu de valeurs doivent être positionnées
479   afin d'obtenir une configuration viable. </para>
480
481   <sect3><title>Valeurs Globales</title>
482
483     <para> Certaines valeurs sont utilisées universellement partout sur le cluster : </para>
484
485     <variablelist>
486     <varlistentry><term><envar>  CLUSTER </envar></term>
487     <listitem><para> Le nom du cluster Slony-I </para></listitem></varlistentry>
488     <varlistentry><term><envar>  NUMNODES </envar></term>
489     <listitem><para> Le nombre de noeuds à configurer</para></listitem></varlistentry>
490
491     <varlistentry><term><envar>  PGUSER </envar></term>
492     <listitem><para> Le nom du super-utilisateur qui contrÃŽle la réplication</para></listitem></varlistentry>
493     <varlistentry><term><envar>  PGPORT </envar></term>
494     <listitem><para> Le numéro du port par défaut</para></listitem></varlistentry>
495     <varlistentry><term><envar>  PGDATABASE </envar></term>
496     <listitem><para> Le nom de la base de données par défaut</para></listitem></varlistentry>
497
498     <varlistentry><term><envar>  TABLES </envar></term>
499     <listitem><para> une liste de noms complets de tables (<emphasis>par exemple</emphasis> - un nom
500     incluant l'espace de noms tel que  <command>public.ma_table</command>)</para></listitem></varlistentry>
501     <varlistentry><term><envar>  SEQUENCES </envar></term>
502     <listitem><para> une liste de noms complets de séquences (<emphasis>par exemple</emphasis> - un nom
503     incluant l'espace de noms tel que  <command>public.ma_sequence</command>)</para></listitem></varlistentry>
504
505     </variablelist>
506
507     <para>Des valeurs par défauts sont fournies pour <emphasis>chacune</emphasis> de ces valeurs,
508     si bien que si vous lancez <filename>configure-replication.sh</filename>
509     sans configurer aucune variable d'environnement, vous obtiendrez
510     un ensemble de scripts slonik.
511     Bien sûr, ils ne correspondront pas aux bases que vous voudrez configurer...</para>
512     </sect3>
513
514     <sect3><title>Valeur spécifique à un noeud</title>
515
516     <para>Pour chaque node, il y a également quatre variables d'environnement;
517     pour le noeud 1: </para>
518     <variablelist>
519       <varlistentry>
520         <term><envar>  DB1 </envar></term>
521         <listitem><para> La base de données à laquelle les scripts doivent se connecter</para></listitem>
522       </varlistentry>
523       <varlistentry><term><envar>  USER1 </envar></term>
524         <listitem><para> Le super-utilisateur utilisé pour la connexion</para></listitem>
525         </varlistentry>
526       <varlistentry><term><envar>  PORT1 </envar></term>
527         <listitem><para> Le port</para></listitem>
528       </varlistentry>
529       <varlistentry><term><envar>  HOST1 </envar></term>
530         <listitem><para> L'hÃŽte</para></listitem>
531       </varlistentry>
532     </variablelist>
533
534     <para> Il est trÚs probable que <envar>DB*</envar>,
535     <envar>USER*</envar>, et <envar>PORT*</envar> correspondent aux
536     variables globales <envar>PGDATABASE</envar>, <envar>PGUSER</envar>, et
537     <envar>PGPORT</envar> décrites précédemment;
538     Conserver cette correspondance est souvent une bonne chose.</para>
539
540     <para> En revanche, Les valeurs <envar>HOST*</envar> doivent être définies
541     explicitement pour <envar>HOST1</envar>, <envar>HOST2</envar>, ...,
542     car il n'est pas trÚs malin de mettre en place un systÚme de réplication
543     si toutes les bases redondantes se trouvent sur le même serveur !</para>
544
545   </sect3>
546   <sect3><title>Les scripts slonik générés</title>
547     <para> Les scripts de configuration slonik sont générés dans un répertoire
548     temporaire à l'intérieur de <filename>/tmp</filename>. 
549     Leur usage est le suivant :</para>
550
551     <itemizedlist>
552
553       <listitem> <para><filename>preamble.slonik</filename> est un fichier
554         <quote>préambule</quote> contenant les informations de connexion utilisées
555         par les autres scripts.</para>
556
557         <para> Vérifier attentivement celui-ci; vous pourrez le réutiliser pour
558         les futures opérations de maintenance que vous effectuerez sur le cluster.</para>
559       </listitem>
560
561       <listitem><para> <filename>create_set.slonik</filename></para>
562
563         <para>Ce script est le premier qu'il faut lancer; il paramÚtre les noeuds
564         spécifiés en noeud &slony1;, en y ajoutant les tables et les autres objets
565         spécifiques de &slony1;.
566         </para>
567
568         <para>Vous pouvez/devez lancer les processus slon juste aprÚs cette étape.</para>
569       </listitem>
570       <listitem><para><filename>  store_paths.slonik</filename></para>
571
572         <para> Le second script à exécuter; il indique comment
573         les &lslon;s doivent communiquer entre eux. Ce script suppose que
574         tous les &lslon; peuvent parler à tous les noeuds, ce qui n'est peut-être
575         exact dans un environnement peuplé de pare-feux complexes. Si cette supposition
576         n'est pas correcte, vous devez modifier ce script pour corriger les voies de
577         communications.</para>
578       </listitem>
579
580       <listitem>
581         <para><filename>create_set.slonik</filename></para>
582      
583         <para> Ce script configure l'ensemble de réplication composé de toutes
584         les tables et les séquences présente dans le schéma de la base de données
585         de votre application.</para>
586        
587         <para> Lorsque vous lancez ce script, la seule actions menées est
588         l'ajout de triggers sur le noeud origine (noeud #1) qui vont commencer
589         à collecter les mises à jours. La réplication ne commencera qu'à
590         l'étape  #5...</para>
591      
592         <para>Il y a deux suppositions dans ce scripts qui peuvent ne pas être
593         valides dans certaines circonstances:</para>
594      
595         <itemizedlist>
596           <listitem>
597             <para> que toutes les tables et les séquences soit répliquées.</para>
598             <para> Ceci n'est pas valide lorsque de nouvelles tables
599                   sont ajoutée dans votre schéma et qu'elles ne sont pas ajoutées
600                   dans le liste  <envar>TABLES</envar>.</para>
601                 </listitem>
602           <listitem>
603             <para> que toutes les tables sont définies avec des clefs primaires.</para>
604             <para> La bonne pratique est de toujours créer et utiliser de vraies clefs
605                 primaires.
606             Si vous avez des tables qui nécessite de choisir une clef primaire candidate ou
607             qui nécessite la création d'une clef additionnelle avec la commande <xref
608             linkend="stmttableaddkey"/>, vous devez modifier ce script à la main pour l'accommoder.
609             </para>
610           </listitem>
611         </itemizedlist>
612       </listitem>   
613       <listitem>
614         <para> <filename> subscribe_set_2.slonik </filename></para>
615
616         <para> et 3,  4,  5, si vous configurez d'autres noeuds... </para>
617        
618         <para> Ceci est l'étape qui <quote>déclenche</quote>
619         réplication.</para>
620
621         <para> Ce script fait la supposition que tous les noeuds abonnés voudront
622         s'abonner directement au noeud origine. Si vous souhaitez mettre en place
623         des <quote>sous-clusters</quote>,avec peut-être un noeud maître dans chaque
624         datacenter, vous devez modifier ces scripts.</para>
625
626         <para> Les processus slon doivent fonctionner au moment ou vous réaliser cette
627         étape. Il est absurde de lancer ces scripts lorsque ce n'est pas le cas.
628         </para>
629       </listitem>
630     </itemizedlist>
631   </sect3>
632 </sect2>
633
634 <sect2 id="bsd-ports-profile"> <title> <filename> slon.in-profiles </filename> </title>
635   <subtitle> profiles dans le style d'Apache pour FreeBSD <filename>ports/databases/slony/*</filename> </subtitle>
636
637   <indexterm><primary> profiles dans le style d'Apache pour FreeBSD </primary> <secondary>FreeBSD </secondary> </indexterm>
638
639   <para> Dans le répertoire  <filename>tools</filename>, le script <filename>slon.in-profiles</filename> permet de lancer des instances
640   &lslon; lors du démarrage du systÚme. Il est conçu pour interagir avec
641   systÚmes des ports de FreeBSD.</para>
642
643 </sect2>
644
645
646 <sect2 id="duplicate-node"> <title> <filename> duplicate-node.sh </filename> </title>
647   <indexterm><primary> dupliquer un noeud </primary> </indexterm>
648   <para> Dans le répertoire <filename>tools</filename>, le script
649   <filename>duplicate-node.sh</filename> aide à créer un nouveau noeud
650   en dupliquant un des noeuds du cluster.</para>
651
652   <para> Ce script attend les paramÚtres suivants : </para>
653   <itemizedlist>
654     <listitem><para> Le nom du cluster</para> </listitem>
655     <listitem><para> Le numéro du nouveau noeud </para> </listitem>
656     <listitem><para> Le noeud origine </para> </listitem>
657     <listitem><para> Le noeud répliqué </para> </listitem>
658     <listitem><para> Le nouveau noeud </para> </listitem>
659   </itemizedlist>
660   <para> Pour chaque noeud spécifié, le scripts permet de préciser
661   les paramÚtres de type <function>libpq</function> pour
662   <envar>PGHOST</envar>, <envar>PGPORT</envar>,
663   <envar>PGDATABASE</envar>, et <envar>PGUSER</envar>; Le fichier
664   <filename>.pgpass</filename> peut être utilisé pour le stockage
665   des mots de passe, ce qui est généralement considéré comme une
666   bonne pratique. Lorsqu'elle ne sont pas définie, ces valeurs peuvent
667   hériter des variables d'environnement <function>libpq</function>,
668   ce qui est pratique quand on réalise des tests. Toutefois
669   lorsque que ce script est utilisé <quote>de maniÚre brutale</quote>,
670   il est souvent nécessaire de définir les 14 paramÚtres disponibles.</para>
671
672   <para> Ce script prépare des fichiers, placés dans
673   <filename>/tmp</filename>, et annonce le nom du répertoire
674   qu'il a créé pour les scripts SQL et &lslonik; de configuration
675   du nouveau noeud. </para>
676
677   <itemizedlist>
678     <listitem>
679       <para><filename> schema.sql </filename></para>
680       <para> Ce script est tiré du noeud origine et contient le schéma
681       de données <quote>originel</quote> qui doit être appliqué au départ.</para>
682     </listitem>
683     <listitem>
684       <para> <filename> slonik.preamble </filename> </para>
685       <para> Ce fichier <quote>preamble</quote> est utilisé par l'ensemble des scripts slonik ci-dessous. </para>
686     </listitem>
687     <listitem>
688     <para> <filename> step1-storenode.slonik </filename> </para>
689     <para> Un script &lslonik; qui configure le nouveau noeud.</para>
690     </listitem>
691     <listitem>
692       <para> <filename> step2-storepath.slonik </filename> </para>
693       <para> Un script &lslonik; qui met en place les voies de communication entre
694       le noeud fournisseur et le nouveau noeud. </para>
695     </listitem>
696     <listitem>
697       <para> <filename> step3-subscribe-sets.slonik </filename> </para>
698       <para> Un script &lslonik; qui demande la souscriptions à tous les ensembles de
699       réplications.</para>
700     </listitem>
701   </itemizedlist>
702   <para> Lorsque l'on effectue un test, cela est suffisant pour faire fonctionner
703   un nouveau noeud. La configuration ne doit pas forcément correspondre à une
704   configuration finale, notamment :</para>
705   <itemizedlist>
706     <listitem>
707       <para> Il est souhaitable de construire des voies de communication
708       supplémentaires afin d'assurer leur redondance. </para>
709     </listitem>
710     <listitem>
711       <para> Les scripts générés supposent que le nouveau noeud doit
712       être un noeud transmetteur ("forwarding"); ce qui n'est pas forcément vrai. </para>
713     </listitem>
714     <listitem>
715       <para> Il est parfois souhaitable, une fois que le processus d'abonnement
716       est réalisé complÚtement, de modifier les abonnements. </para>
717     </listitem>
718   </itemizedlist>
719
720 </sect2>
721 </sect1>
Note: See TracBrowser for help on using the browser.