root/traduc/branches/bv803/manuel/backup.sgml

Revision 869, 63.3 kB (checked in by gleu, 1 year ago)

Mise à jour pour la version 8.0.15.

Line 
1 <!--
2 $Header: /var/lib/cvs/pgsql-fr/sgml/backup.sgml,v 1.16 2005/07/15 06:14:20 guillaume Exp $
3 -->
4 <chapter id="backup">
5  <title>Sauvegardes et restaurations</title>
6
7  <indexterm zone="backup"><primary>backup</></>
8
9  <para>
10   Comme avec tout ce qui contient des données importantes, les bases de données
11   <productname>PostgreSQL</> doivent être sauvegardées régulièrement.
12   Bien que la procédure soit plutôt simple, il est important de comprendre les
13   techniques sous-jacentes ainsi que les hypothèses prises.
14  </para>
15
16  <para>
17   Il y a trois approches fondamentalement différentes pour sauvegarder les
18   données de <productname>PostgreSQL</>&nbsp;:
19   <itemizedlist>
20    <listitem><para><acronym>La sauvegarde SQL&nbsp;;</></para></listitem>
21    <listitem><para>La sauvegarde de niveau système de
22     fichiers&nbsp;;</para></listitem>
23    <listitem><para>La sauvegarde à chaud (ou en ligne).</para></listitem>
24   </itemizedlist>
25   Chacune a ses avantages et inconvénients.
26  </para>
27
28  <sect1 id="backup-dump">
29   <title>Sauvegarde <acronym>SQL</></title>
30
31   <para>
32    Le principe est de générer un fichier texte de commandes SQL (appelé
33    <quote>fichier dump</quote>), qui, si on le renvoie au serveur, recrée une
34    base de données identique à celle sauvegardée.
35    <productname>PostgreSQL</> propose pour cela le programme utilitaire
36    <xref linkend="app-pgdump">. L'usage basique est&nbsp;:
37 <synopsis>
38 pg_dump <replaceable class="parameter">base_de_donnees</replaceable> &gt; <replaceable class="parameter">fichier_de_sortie</replaceable>
39 </synopsis>
40    Comme vous le voyez, <application>pg_dump</> écrit son résultat sur la sortie standard.
41    Nous verrons plus loin que cela peut être pratique.
42   </para>
43
44   <para>
45    <application>pg_dump</> est un programme client <productname>PostgreSQL</>
46    classique (mais plutôt intelligent). Ceci veut dire que vous pouvez
47    faire une sauvegarde depuis n'importe quel ordinateur ayant accès à la base.
48    Mais rappelez-vous que <application>pg_dump</> n'a pas de droits spéciaux.
49    En particulier, il doit avoir accès en lecture à toutes les tables que
50    vous voulez sauvegarder, si bien qu'il doit être lancé pratiquement
51    toujours en tant que super-utilisateur de la base.
52   </para>
53
54   <para>
55    Pour préciser quel serveur de bases de données <application>pg_dump</> doit
56    contacter, utilisez les options de ligne de commande <option>-h
57    <replaceable>serveur</></> et <option>-p <replaceable>port</></>.
58    Le serveur par défaut est le serveur local, ou bien celui spécifié par la
59    variable d'environnement <envar>PGHOST</envar>.
60    De la même façon, le port par défaut est indiqué par la variable d'environnement
61    <envar>PGPORT</envar> ou, en son absence, par la valeur par défaut précisée
62    à la compilation. Heureusement, la serveur a normalement la même valeur par
63    défaut à la compilation.
64   </para>
65
66   <para>
67    Comme tout programme client <productname>PostgreSQL</>, <application>pg_dump</>
68    se connecte par défaut avec l'utilisateur de base de données de même nom que
69    l'utilisateur système courant. Pour passer outre, précisez l'option
70    <option>-U</option> ou donnez une valeur à la variable d'environnement
71    <envar>PGUSER</envar>. Rappelez-vous que les connexions de
72    <application>pg_dump</> sont soumises aux mécanismes normaux
73    d'authentification des programmes clients (qui sont décrits dans le <xref
74    linkend="client-authentication">).
75   </para>
76
77   <para>
78    Les sauvegardes créées par <application>pg_dump</> sont cohérentes, ce
79    qui veut dire que les modifications effectuées alors que <application>pg_dump</>
80    est en cours de fonctionnement ne sont pas dans le fichier de résultat.
81    <application>pg_dump</> ne bloque pas les autres opérations sur la base
82    lorsqu'il fonctionne (sauf celles qui ont besoin d'un verrou exclusif, comme
83    <command>VACUUM FULL</command>.)
84   </para>
85
86   <important>
87    <para>
88     Lorsque votre base de données dépend des OID (par exemple en tant que clés
89     étrangères), vous devez indiquer à <application>pg_dump</> de sauvegarder
90     aussi les OID. Pour cela, utilisez l'option <option>-o</option> sur la ligne
91     de commande.
92     Les <quote>gros objets</> ne sont pas non plus sauvegardés par défaut.
93     Consultez la page de référence de la commande <xref linkend="app-pgdump"> si
94     vous utilisez les <quote>gros objets</>.
95    </para>
96   </important>
97
98   <sect2 id="backup-dump-restore">
99    <title>Restaurer la sauvegarde</title>
100
101    <para>
102     Les fichiers texte créés par <application>pg_dump</> sont prévus pour être
103     lus par le programme <application>psql</application>. La syntaxe générale
104     d'une commande de restauration est
105 <synopsis>
106 psql <replaceable class="parameter">base_de_donnees</replaceable> &lt; <replaceable class="parameter">fichier_d_entree</replaceable>
107 </synopsis>
108     où <replaceable class="parameter">fichier_d_entree</replaceable> est ce que
109     vous avez précisé comme <replaceable class="parameter">fichier_de_sortie</replaceable>
110     à la commande <application>pg_dump</>. La base de données
111     <replaceable class="parameter">base_de_donnees</replaceable> n'est pas créée par cette
112     commande. Vous devez la créer vous-même à partir de <literal>template0</>
113     avant d'exécuter <application>psql</> (par exemple avec <literal>createdb -T
114     template0 <replaceable class="parameter">base_de_donnees</></literal>).
115     <application>psql</> propose des options similaires à celles de
116     <application>pg_dump</> pour contrôler l'emplacement du serveur de bases de
117     données et le nom d'utilisateur. Voyez la page de référence de <xref
118     linkend="app-psql"> pour plus d'informations.
119     </para>
120
121    <para>
122     La base de données cible doit déjà exister avant de lancer la restauration,
123     ainsi que les utilisateurs possédant les objets dans la base de données
124     sauvegardée ou ayant des droits sur ces objets. S'ils n'existent pas, la
125     restauration échouera pour la création des objets dont ils sont
126     propriétaires ou pour lesquels ils ont des droits (quelque fois, cela
127     correspond à ce que vous souhaitez mais ce n'est pas le cas habituellement).
128    </para>
129
130    <para>
131     Une fois restauré, il est recommandé de lancer <xref linkend="sql-analyze"
132     endterm="sql-analyze-title"> sur chacune des bases de données afin que
133     l'optimiseur de requêtes dispose de statistiques utiles. Une façon aisée de
134     le faire est de lancer la commande <command>vacuumdb -a -z</> pour lancer
135     <command>ANALYZE</> sur toutes les bases de données&nbsp;; ceci est
136     équivalent à lancer <command>VACUUM ANALYZE</command> manuellement.
137    </para>
138
139    <para>
140     La capacité de <application>pg_dump</> et <application>psql</> à écrire
141     et à lire dans des tubes permet de sauvegarder une base de données
142     directement d'un serveur sur un autre. Par exemple&nbsp;:
143 <programlisting>
144 pg_dump -h <replaceable>serveur1</> <replaceable>base_de_donnees</> | psql -h <replaceable>serveur2</> <replaceable>base_de_donnees</>
145 </programlisting>
146    </para>
147
148    <important>
149     <para>
150      Les fichiers de sauvegarde produits par <application>pg_dump</> sont
151      relatifs à <literal>template0</>. Cela signifie que chaque langage,
152      procédure, etc. ajoutés à <literal>template1</> seront aussi sauvegardés
153      par <application>pg_dump</>. En conséquence, si vous utilisez une base
154      <literal>template1</> modifiée, vous devez créer la base vide à partir de
155      <literal>template0</>, comme dans l'exemple précédent.
156     </para>
157    </important>
158
159    <para>
160     Pour des conseils sur le chargement efficace de grosses quantités de
161     données dans <productname>PostgreSQL</productname>, référez-vous à la <xref
162     linkend="populate">.
163    </para>
164    
165   </sect2>
166
167   <sect2 id="backup-dump-all">
168    <title>Utilisation de <application>pg_dumpall</></title>
169
170    <para>
171     Le mécanisme précédent est peu pratique pour sauvegarder un serveur de bases
172     de données complet. <xref linkend="app-pg-dumpall"> est prévu pour cela.
173     <application>pg_dumpall</> sauvegarde toutes les bases de données d'un
174     groupe de bases de données <productname>PostgreSQL</> (appelé cluster) et
175     préserve les données communes au groupe de bases comme les utilisateurs et
176     les groupes. L'utilisation basique de cette commande est&nbsp;:
177 <synopsis>
178 pg_dumpall &gt; <replaceable>fichier_de_sortie</>
179 </synopsis>
180     Le fichier de sauvegarde résultant peut être restauré avec <application>psql</>&nbsp;:
181 <synopsis>
182 psql -f <replaceable class="parameter">fichier_d_entree</replaceable> template1
183 </synopsis>
184     (Vous pouvez utiliser n'importe quelle base de données pour vous
185     connecter mais si vous êtes en train de recharger un serveur vide,
186     <literal>template1</> est la seule base de données disponible.)
187     Il faut obligatoirement être le super-utilisateur de la base pour restaurer
188     une sauvegarde faite avec <application>pg_dumpall</>, pour pouvoir restaurer
189     les informations sur les utilisateurs et les groupes.
190    </para>
191   </sect2>
192
193   <sect2 id="backup-dump-large">
194    <title>Gérer les grosses bases de données</title>
195
196    <para>
197     Comme <productname>PostgreSQL</productname> permet que des tables soient plus
198     grandes que la taille maximale d'un fichier sur votre système de fichiers,
199     sauvegarder une telle table en fichier peut poser des problèmes.
200     Comme <application>pg_dump</> peut écrire sur la sortie standard, vous pouvez
201     utiliser des outils standard d'Unix pour contourner ce problème éventuel.
202    </para>
203
204    <formalpara>
205     <title>Compresser le fichier de sauvegarde</title>
206     <para>
207      Vous pouvez utiliser votre programme de compression habituel. Par exemple
208      <application>gzip</application>.
209
210 <programlisting>
211 pg_dump <replaceable class="parameter">base_de_donnees</replaceable> | gzip &gt; <replaceable class="parameter">nom_fichier</replaceable>.gz
212 </programlisting>
213
214      Pour restaurer&nbsp;:
215
216 <programlisting>
217 createdb <replaceable class="parameter">base_de_donnees</replaceable>
218 gunzip -c <replaceable class="parameter">nom_fichier</replaceable>.gz | psql <replaceable class="parameter">base_de_donnees</replaceable>
219 </programlisting>
220
221      ou
222
223 <programlisting>
224 cat <replaceable class="parameter">nom_fichier</replaceable>.gz | gunzip | psql <replaceable class="parameter">base_de_donnees</replaceable>
225 </programlisting>
226     </para>
227    </formalpara>
228
229    <formalpara>
230     <title>Couper le fichier avec <command>split</></title>
231     <para>
232      La commande <command>split</command> vous permet de découper le fichier en
233      morceaux d'une taille acceptable pour le système de fichiers sous-jacent.
234      Par exemple, pour faire des morceaux de 1&nbsp;Mo&nbsp;:
235  
236 <programlisting>
237 pg_dump <replaceable class="parameter">base_de_donnees</replaceable> | split -b 1m - <replaceable class="parameter">nom_fichier</replaceable>
238 </programlisting>
239
240      Pour restaurer&nbsp;:
241
242 <programlisting>
243 createdb <replaceable class="parameter">base_de_donnees</replaceable>
244 cat <replaceable class="parameter">nom_fichier</replaceable>* | psql <replaceable class="parameter">base_de_donnees</replaceable>
245 </programlisting>
246     </para>
247    </formalpara>
248
249    <formalpara>
250     <title>Utilisation du format de sauvegarde spécial</title>
251     <para>
252      Si <productname>PostgreSQL</productname> est installé sur un système où la
253      bibliothèque de compression <application>zlib</> est disponible, ce format
254      de sauvegarde spécial peut être utilisé. Pour les grandes bases de données,
255      cela produira un fichier de sauvegarde d'une taille comparable à celle de
256      <command>gzip</command>, avec l'avantage supplémentaire de permettre de
257      restaurer des tables sélectivement. La commande qui suit sauvegarde une
258      base de données en utilisant le format de sauvegarde spécial&nbsp;:
259  
260 <programlisting>
261 pg_dump -Fc <replaceable class="parameter">base_de_donnees</replaceable> &gt; <replaceable class="parameter">nom_fichier</replaceable>
262 </programlisting>
263
264      Un format personnalisé de la sauvegarde n'est pas un script pour
265      <application>psql</> mais doit, à la place, être restauré avec
266      <application>pg_restore</>. Voir les pages de référence de <xref
267      linkend="app-pgdump"> et <xref linkend="app-pgrestore"> pour quelques
268      détails.
269     </para>
270    </formalpara>
271
272   </sect2>
273
274   <sect2 id="backup-dump-caveats">
275    <title>Limitations</title>
276
277    <para>
278     Pour des raisons de compatibilité avec les versions précédentes,
279     <application>pg_dump</> ne sauvegarde pas les gros objets par défaut.
280     <indexterm><primary>gros
281     objets</primary><secondary>sauvegarde</secondary></indexterm> Pour
282     les sauvegarder, vous devez utiliser soit le format de sauvegarde
283     spécial soit le format TAR, et passer l'option <option>-b</> à
284     <application>pg_dump</>. Voyez la page de référence de <xref
285     linkend="app-pgdump"> pour plus de détails.
286     Le répertoire <filename>contrib/pg_dumplo</> des fichiers sources de <productname>PostgreSQL</>
287     contient aussi un programme qui peut sauvegarder les gros objets.
288   </para>
289
290    <para>
291     Merci de vous familiariser avec la page de référence de
292     <xref linkend="app-pgdump">.
293    </para>
294   </sect2>
295  </sect1>
296
297  <sect1 id="backup-file">
298   <title>Sauvegarde de niveau système de fichiers</title>
299
300   <para>
301    Une autre stratégie de sauvegarde est de copier les fichiers
302    utilisés par <productname>PostgreSQL</> pour enregistrer les données.
303    Dans la <xref linkend="creating-cluster">, l'emplacement de ces
304    fichiers sont donnés mais vous les avez probablement déjà trouvés si vous
305    vous intéressez à cette méthode. Vous pouvez utiliser n'importe quelle
306    méthode de sauvegarde, par exemple&nbsp;:
307  
308 <programlisting>
309 tar -cf sauvegarde.tar /usr/local/pgsql/data
310 </programlisting>
311   </para>
312
313   <para>
314    Cependant, il y a deux restrictions qui rendent cette méthode inutilisable
315    ou en tout cas inférieure à la méthode <application>pg_dump</>.
316  
317    <orderedlist>
318     <listitem>
319      <para>
320       Le serveur de base de données <emphasis>doit</> être arrêté pour obtenir
321       une sauvegarde utilisable. Toutes les demi-mesures, comme supprimer
322       toutes les connections, ne fonctionneront <emphasis>pas</emphasis>
323       (principalement parce que <command>tar</command> et les outils similaires
324       ne font pas une image atomique de l'état du système de fichiers à un
325       moment spécifique). Vous trouverez des informations sur la façon d'arrêter
326       le serveur <productname>PostgreSQL</> dans la <xref
327       linkend="postmaster-shutdown">.
328     </para>
329
330      <para>
331       Il va sans dire que vous devez aussi éteindre le serveur avant de
332       restaurer les données.
333       </para>
334     </listitem>
335
336     <listitem>
337      <para>
338       Si vous vous êtes aventurés dans les détails de l'organisation de la
339       base de données, vous pouvez être tentés de ne sauvegarder et
340       de ne restaurer que certaines tables ou bases de données particulières.
341       Ceci ne fonctionnera <emphasis>pas</> parce que les informations
342       contenues dans ces fichiers ne sont qu'à moitié vraies. L'autre moitié
343       est dans les fichiers journaux de validation
344       <filename>pg_clog/*</filename>, qui
345       contiennent l'état de la validation de chaque transaction. Un fichier de
346       table n'est utilisable qu'avec cette information. Bien entendu, il est
347       impossible de ne restaurer qu'une table et les données <filename>pg_clog</filename>
348       associées car cela rendrait toutes les autres tables du serveur
349       inutilisables. Donc, les sauvegardes du système de fichiers fonctionnent
350       seulement pour les restaurations complètes d'un groupe entier de bases de
351       données.
352      </para>
353     </listitem>
354    </orderedlist>
355   </para>
356
357   <para>
358    Une autre approche à la sauvegarde du système de fichiers est de réaliser
359    une <quote>image cohérente</quote> du répertoire des données si le système
360    de fichiers supporte cette fonctionnalité (et que vous avez confiance
361    en sa bonne implémentation). La procédure typique est de faire une
362    <quote>image gelée</> du volume contenant la base de données, et enfin de
363    copier le répertoire data complètement (pas seulement quelques parties,
364    voir ci-dessus) de l'image sur un périphérique de sauvegarde, puis de
365    libérer l'image gelé. Ceci fonctionnera même si le serveur de la base de
366    données est en cours d'exécution. Néanmoins, une sauvegarde créée de cette
367    façon sauvegarde les fichiers de la base de données dans un état où le
368    serveur n'était pas correctement arrêté&nbsp;; du coup, au lancement du
369    serveur à partir des données sauvegardées, PostgreSQL pensera que le
370    serveur s'est stoppé brutalement et rejouera les journaux WAL. Ceci n'est
371    pas un problème, soyez-en juste conscient (et assurez-vous d'inclure les
372    fichiers WAL dans votre sauvegarde).
373   </para>
374
375   <para>
376    Si votre base de données est répartie sur plusieurs systèmes de fichiers,
377    il pourrait ne pas y avoir de moyens pour obtenir des images gelées
378    exactement simultanément de tous les disques. Par exemple, si vos fichiers
379    de données et vos journaux WAL sont sur des disques différents ou si les
380    tablespaces sont sur des systèmes de fichiers différents, il pourrait
381    ne pas être possible d'utiliser une sauvegarde par image parce que ces
382    dernières doivent être simultanées.
383    Lisez la documentation de votre système
384    de fichiers avec attention avant de faire confiance à la technique d'images
385    cohérentes dans de telles situations. L'approche la plus sûre est d'arrêter
386    le serveur de bases de données assez longtemps pour créer toutes les images
387    gelées.
388   </para>
389
390   <para>
391    Une autre option est d'utiliser <application>rsync</> pour réaliser une
392    sauvegarde du système de fichiers. Ceci se fait tout d'abord en lançant
393    <application>rsync</> alors que le serveur de bases de données est en cours
394    d'exécution, puis en arrêtant le serveur juste assez longtemps pour lancer
395    <application>rsync</> une deuxième fois. Le deuxième
396    <application>rsync</> sera beaucoup plus rapide que le premier car il aura
397    relativement peu de données à transférer et le résultat final sera cohérent
398    parce que le serveur était arrêté. Cette méthode permet de réaliser une
399    sauvegarde du système de fichiers avec un arrêt minimal.
400   </para>
401
402   <para>
403    Notez aussi qu'une sauvegarde des fichiers de données ne sera pas forcément
404    moins grosse qu'une sauvegarde SQL. Au contraire, elle sera très certainement
405    plus  grande (<application>pg_dump</application> ne sauvegarde pas le
406    contenu des index, mais la commande pour les recréer).
407   </para>
408
409  </sect1>
410
411  <sect1 id="backup-online">
412   <title>Sauvegardes à chaud et récupération à un instant (PITR)</title>
413
414   <indexterm zone="backup">
415    <primary>sauvegarde à chaud</primary>
416   </indexterm>
417
418   <indexterm zone="backup">
419    <primary>récupération à un instant</primary>
420   </indexterm>
421
422   <indexterm zone="backup">
423    <primary>PITR</primary>
424   </indexterm>
425
426   <para>
427    En permanence, <productname>PostgreSQL</> maintient des journaux WAL
428    (<firstterm>write ahead log</>) dans le sous-répertoire
429    <filename>pg_xlog/</> du répertoire des données du groupe. Ces journaux
430    décrivent chaque modification effectuée sur les fichiers de données des
431    bases. Ils existent principalement pour des raisons de sécurité suite à un
432    arrêt brutal&nbsp;: si le système s'arrête brutalement, la base de données
433    peut être restaurée pour avoir une cohérence des données en
434    <quote>rejouant</> les entrées des journaux enregistrées depuis le dernier
435    point de vérification. Néanmoins, l'existence de ces journaux rend possible
436    l'utilisation d'une troisième stratégie pour la sauvegarde des bases de
437    données&nbsp;: nous pouvons combiner une sauvegarde au niveau système de
438    fichiers avec la sauvegarde des fichiers WAL. Si la récupération est
439    nécessaire, nous restaurons la sauvegarde, puis rejouons à partir des
440    fichiers WAL sauvegardés pour amener la sauvegarde jusqu'à la date
441    actuelle. Cette approche est plus complexe à administrer que toutes les
442    autres approches mais elle apporte des bénéfices significatifs&nbsp;:
443   <itemizedlist>
444    <listitem>
445     <para>
446      Nous n'avons pas besoin de faire une sauvegarde parfaitement cohérente
447      comme point de départ. Toute incohérence dans la sauvegarde sera corrigée
448      par la ré-exécution des journaux (ceci n'est pas significativement
449      différent de ce qu'il se passe lors d'une récupération après un arrêt
450      brutal). Donc, nous n'avons pas besoin d'une fonctionnalité d'image
451      système du système de fichiers, simplement <application>tar</> ou un
452      autre outil d'archivage.
453     </para>
454    </listitem>
455    <listitem>
456     <para>
457      Comme nous pouvons assembler une longue séquence de fichiers à WAL pour
458      les rejouer, la sauvegarde continue est possible en continuant
459      simplement d'archiver les fichiers WAL. Ceci est particulièrement
460      intéressant pour les grosses bases de données où il pourrait ne pas
461      être facile de réaliser une sauvegarde complète fréquemment.
462     </para>
463    </listitem>
464    <listitem>
465     <para>
466      Rien ne dit que nous devons rejouer les entrées WAL jusqu'à la fin. Nous
467      pouvons stopper la ré-exécution à un certain point et avoir une image
468      cohérente de la base de données à ce moment-là. Du coup, cette technique
469      supporte la <firstterm>récupération à un instant t</> (PITR)&nbsp;: il est
470      possible de restaurer la base de données à n'importe quel point dans le
471      temps depuis la dernière sauvegarde de base.
472     </para>
473    </listitem>
474    <listitem>
475     <para>
476      Si nous remplissons en continue la série de fichiers WAL dans une autre
477      machine qui a été chargée avec le même fichier de sauvegarde de base,
478      nous avons un système <quote>à jour en permanence</>&nbsp;: à tout
479      moment, nous pouvons monter la deuxième machine et avoir une copie quasi
480      complète de la base de données.
481     </para>
482    </listitem>
483   </itemizedlist>
484   </para>
485
486   <para>
487    Comme avec la technique de sauvegarde standard du système de fichiers,
488    cette méthode supporte la restauration d'un groupe de bases de données
489    complet, pas un sous-ensemble. De plus, il requiert beaucoup d'espace
490    d'archivage&nbsp;: la sauvegarde de base peut être légère mais un système
491    très utilisé générera beaucoup de mégaoctets de trafic WAL qui seront à
492    archiver. Malgré tout, c'est la technique de sauvegarde préférée dans
493    beaucoup de situations où la haute fiabilité est nécessaire.
494   </para>
495
496   <para>
497    Pour récupérer avec succès suite à l'utilisation d'une sauvegarde à chaud,
498    vous avez besoin d'une séquence continue de fichiers WAL archivés qui
499    s'étendent au moins jusqu'au point de départ de votre sauvegarde. Pour
500    commencer, vous devriez configurer et tester votre procédure d'archivage
501    des journaux WAL <emphasis>avant</> de faire votre première sauvegarde de
502    base. Il nous faut donc commencer par vous présenter les mécanismes
503    d'archivage des fichiers WAL.
504   </para>
505
506   <sect2 id="backup-archiving-wal">
507    <title>Configurer l'archivage WAL</title>
508
509    <para>
510     Dans un sens abstrait, un système <productname>PostgreSQL</> fonctionnel
511     produit une séquence indéfiniment longue d'enregistrements WAL. Le système
512     divise physiquement cette séquence en <firstterm>fichiers segment</>
513     WAL, qui font normalement 16&nbsp;Mo chaque (bien que la taille puisse
514     être modifiée lors de la construction de <productname>PostgreSQL</>). Les
515     fichiers segment se voient donnés des noms numériques pour refléter leur
516     position dans la séquence abstraite des WAL. Lorsque le système n'utilise
517     pas l'archivage des WAL, il crée seulement quelques fichiers segment, puis
518     les <quote>recycle</> en renommant les fichiers segment devenus inutiles.
519     Il est supposé qu'un fichier segment dont le contenu précède le
520     dernier point de vérification n'a plus d'intérêt et peut être recyclé.
521    </para>
522
523    <para>
524     Lors de l'archivage des données WAL, nous voulons capturer le contenu de
525     chaque fichier segment une fois qu'il est rempli et sauvegarder les
526     données quelque part avant que le fichier segment ne soit recyclé pour
527     être réutilisé. Suivant l'application et le matériel disponible,
528     <quote>sauvegarder les données quelque part</> peut se faire de plusieurs
529     façons&nbsp;: nous pouvons copier les fichiers segment dans un répertoire
530     NFS monté sur une autre machine, les écrire sur une cartouche (en vous
531     assurant que vous avez un moyen de restaurer le fichier avec son nom
532     d'origine) ou le grouper pour les graver sur un CD, ou encore autre chose.
533     Pour fournir autant de flexibilité que possible à l'administrateur de la
534     base de données, <productname>PostgreSQL</> essaie de ne faire aucune
535     supposition sur la façon dont l'archivage est réalisé. À la place,
536     <productname>PostgreSQL</> vous laisse spécifier une commande
537     shell à exécuter pour copier le fichier segment rempli là où vous le
538     souhaitez. La commande pourrait être aussi simple qu'un
539     <application>cp</> ou il pourrait impliquer un shell complexe &mdash;
540     à vous de voir.
541    </para>
542
543    <para>
544     La commande shell à utiliser est spécifiée par le paramètre de
545     configuration <xref linkend="guc-archive-command"> qui, en pratique, sera
546     toujours placé dans le fichier <filename>postgresql.conf</filename>. Dans
547     cette chaîne, tout <literal>%p</> est remplacé par le chemin absolu de
548     l'archive alors que tout <literal>%f</> est remplacé seulement par le
549     nom du fichier. Écrivez <literal>%%</> si vous avez besoin d'écrire le
550     vrai caractère <literal>%</> dans la commande. La commande utile la plus
551     simple est quelque chose comme
552 <programlisting>
553 archive_command = 'cp -i %p /mnt/serveur/repertoire_archive/%f &lt;/dev/null'
554 </programlisting>
555     qui copiera les segments WAL archivables dans le répertoire
556     <filename>/mnt/serveur/repertoire_archive</>. (Ceci est un exemple, pas
557     une recommandation, et pourrait ne pas fonctionner sur toutes les
558     plateformes.)
559    </para>
560
561    <para>
562     La commande d'archivage sera exécutée en tant qu'utilisateur
563     propriétaire du serveur <productname>PostgreSQL</>. Comme la série de
564     fichiers WAL en cours d'archivage contient réellement tout ce qui se
565     trouve dans votre base de données, vous vous assurerez que les
566     données archivées sont protégées des autres utilisateurs&nbsp;; par
567     exemple, si les archives sont stockées dans un répertoire où se trouvent
568     des droits de lecture pour le groupe ou pour les autres.
569    </para>
570
571    <para>
572     Il est important que la commande d'archivage renvoie le code de sortie
573     zéro si et seulement si l'exécution a réussi. En obtenant un résultat
574     zéro, <productname>PostgreSQL</> supposera que le fichier segment WAL a
575     été archivé avec succès et qu'il peut le supprimer ou le recycler.
576     Néanmoins, un statut différent de zéro indique à 
577     <productname>PostgreSQL</> que le fichier n'a pas été archivé&nbsp;; il
578     essaiera périodiquement jusqu'à ce qu'il y arrive.
579    </para>
580
581    <para>
582     La commande d'archivage devrait être généralement conçue pour refuser
583     d'écraser tout fichier archive déjà existant. Ceci est une fonctionnalité
584     de sécurité importante pour préserver l'intégrité de votre archive dans le
585     cas d'une erreur de l'administrateur (comme l'envoi de la sortie de deux
586     serveurs différents dans le même répertoire d'archivage). Il est
587     conseillé de tester votre commande d'archivage proposée pour vous
588     assurer qu'en effet il n'écrase pas un fichier existant <emphasis>et qu'il
589     renvoie un statut différent de zéro dans ce cas</>. Nous avons découvert
590     que <literal>cp -i</> travaille correctement sur certaines plateformes,
591     mais pas sur toutes. Si la commande choisie ne gère pas elle-même ce
592     cas, vous pouvez ajouter une commande pour tester l'existence du fichier
593     d'archivage. Par exemple, quelque chose comme
594 <programlisting>
595 archive_command = 'test ! -f .../%f &amp;&amp; cp %p .../%f'
596 </programlisting>
597     fonctionne correctement sur la plupart des variantes Unix.
598    </para>
599
600    <para>
601     Lors de la conception de votre configuration d'archivage, considérez ce
602     qui se passerait si la commande d'archivage échouait de façon répétée parce
603     que certains aspects demanderaient une intervention de l'opérateur ou
604     à cause d'un manque d'espace dans le répertoire d'archivage. Par exemple,
605     ceci pourrait arriver si vous écrivez sur une cartouche sans changeur
606     automatique&nbsp;; quand la cartouche est remplie, rien ne peut être
607     archivé tant que la cassette n'est pas changée. Vous devez vous assurer
608     que toute erreur ou requête à un opérateur humain est rapportée de façon
609     approprié pour que la situation puisse être résolue relativement
610     rapidement. Le répertoire <filename>pg_xlog/</> continuera à se remplir
611     de fichiers segment WAL jusqu'à la résolution de la situation.
612    </para>
613
614    <para>
615     La vitesse de la commande d'archivage n'est pas importante, tant qu'elle
616     est au même rythme que la génération de données WAL du serveur. Les
617     opérations normales continuent même si le processus d'archivage est un peu
618     plus lent. Si l'archivage est significativement plus lent, alors la
619     quantité de données qui pourrait être perdue va croître. Cela signifie
620     aussi que le répertoire <filename>pg_xlog/</> contiendra un grand nombre
621     de fichiers segment non archivés, qui finiront éventuellement par
622     dépasser l'espace disque disponible. Il vous est conseillé de surveiller
623     le processus d'archivage pour vous assurer que tout fonctionne
624     normalement.
625    </para>
626
627    <para>
628     Si vous êtes encore inquiet sur votre capacité à récupérer tout à
629     l'instant présent, vous devriez prendre quelques actions supplémentaires
630     pour vous assurer que les fichiers segments WAL partiellement remplis sont
631     aussi copiés quelque part. Ceci est particulièrement important si votre
632     serveur génère peu de trafic WAL (ou que seules certaines périodes sont
633     dans ce cas) car cela prendra beaucoup de temps avant qu'un fichier
634     segment WAL soit complètement remplis et prêt à archiver. Une façon
635     possible de gérer ceci est de configurer un job <application>cron</> qui,
636     périodiquement (une fois par minute, peut-être), identifie le fichier
637     segment WAL en cours et le sauvegarde à un endroit sûr. Ensuite, la
638     combinaison des segments WAL archivés et du segment courant sauvegardé
639     seront suffisant pour vous assurer de pouvoir toujours restaurer à une
640     minute près. Ce comportement n'est pas actuellement construit dans
641     <productname>PostgreSQL</> parce que nous ne voulions pas compliquer la
642     définition de <xref linkend="guc-archive-command"> en lui demandant de
643     garder trace des différentes copies archivées successivement du même
644     fichier WAL. <xref linkend="guc-archive-command"> est seulement
645     appelée sur des segments WAL complets. Sauf dans le cas d'un échec, il
646     sera appelé seulement une fois pour un nom de fichier donné.
647    </para>
648
649    <para>
650     En écrivant votre commande d'archivage, vous devez vous assurer que les
651     noms de fichier à archiver auront 64 caractères maximum et peuvent
652     contenir toute combinaison de lettres ASCII, de chiffres et de points.
653     Il n'est pas nécessaire de rappeler le chemin complet original
654     (<literal>%p</>) mais il est nécessaire de rappeler le nom du fichier
655     (<literal>%f</>).
656    </para>
657
658    <para>
659     Notez que, bien que l'archivage WAL vous autorisera à restaurer toute
660     modification réalisée sur les données de votre base
661     <productname>PostgreSQL</>, il ne restaurera pas les modifications
662     effectuées sur les fichiers de configuration (c'est-à-dire
663     <filename>postgresql.conf</>, <filename>pg_hba.conf</> et
664     <filename>pg_ident.conf</>) car ceux-ci sont édités manuellement plutôt
665     qu'au travers d'opérations SQL. Vous pourriez souhaiter conserver les
666     fichiers de configuration à un endroit où ils seront sauvegardés avec vos
667     procédures standards de sauvegarde du système de fichiers. Voir la
668     <xref linkend="runtime-config-file-locations"> pour savoir comment
669     modifier l'emplacement des fichiers de configuration.
670    </para>
671   </sect2>
672
673   <sect2 id="backup-base-backup">
674    <title>Réaliser une sauvegarde de base</title>
675
676    <para>
677     La procédure pour réaliser une sauvegarde de base est relativement
678     simple&nbsp;:
679   <orderedlist>
680    <listitem>
681     <para>
682      Assurez-vous que l'archivage WAL est activée et fonctionnelle.
683     </para>
684    </listitem>
685    <listitem>
686     <para>
687      Connectez-vous à la base de données en tant que superutilisateur et
688      lancez la commande
689 <programlisting>
690 SELECT pg_start_backup('label');
691 </programlisting>
692      où <literal>label</> est toute chaîne que vous voulez utiliser pour
693      identifier de façon unique l'opération de sauvegarde (une bonne pratique
694      est d'utiliser le chemin complet où vous avez l'intention de placer le
695      fichier de sauvegarde). <function>pg_start_backup</> crée un fichier
696      <firstterm>label de sauvegarde</> nommé <filename>backup_label</> dans
697      le répertoire du groupe avec des informations sur votre sauvegarde.
698     </para>
699
700     <para>
701      Peu importe la base de données à laquelle vous vous connectez pour lancer
702      cette commande. Vous pouvez ignorer le résultat renvoyé par la
703      fonction mais, si elle rapporte une erreur, gérez-la avant de
704      continuer.
705     </para>
706    </listitem>
707    <listitem>
708     <para>
709      Lancez la sauvegarde en utilisant n'importe quel outil de sauvegarde du
710      système de fichiers comme <application>tar</> ou <application>cpio</>. Il
711      n'est ni nécessaire ni désirable de stopper les opérations normales de
712      la base de données lorsque vous faites cela.
713     </para>
714    </listitem>
715    <listitem>
716     <para>
717      Connectez-vous de nouveau sur la base de données en tant que
718      superutilisateur et lancez la commande
719 <programlisting>
720 SELECT pg_stop_backup();
721 </programlisting>
722      Elle devrait réussir.
723     </para>
724    </listitem>
725    <listitem>
726     <para>
727      Une fois que les fichiers des segments WAL utilisées lors de la sauvegarde
728      sont archivées de la même façon qu'une partie de l'activité normale de
729      sauvegarde de la base de données, vous avez terminé.
730     </para>
731    </listitem>
732   </orderedlist>
733    </para>
734
735    <para>
736     Il n'est pas nécessaire d'être très concerné sur le temps passé entre
737     <function>pg_start_backup</> et le début réel de la sauvegarde, pas plus
738     qu'entre la fin de la sauvegarde et <function>pg_stop_backup</>&nbsp;; un
739     délai de quelques minutes ne posera pas de problème. Vous devez néanmoins
740     vous assurer que ces opérations sont effectuées dans la bonne séquence et
741     ne se recouvrent pas.
742    </para>
743
744    <para>
745     Assurez-vous que votre sauvegarde inclut tous les fichiers du répertoire
746     du groupe de bases de données (c'est-à-dire
747     <filename>/usr/local/pgsql/data</>). Si vous utilisez des tablespaces
748     qui ne se trouvent pas dans ce répertoire, faites attention à bien les
749     inclure (et assurez-vous que votre sauvegarde archive les liens
750     symboliques comme des liens, sinon la restauration posera problème pour
751     les tablespaces).
752    </para>
753
754    <para>
755     Néanmoins, vous devriez omettre de sauvegarder les fichiers du
756     sous-répertoire <filename>pg_xlog/</> contenu dans le répertoire du
757     groupe. Cette petite complication est intéressante parce qu'elle réduit le
758     risque d'erreurs lors de la restauration. Ceci est facile à arranger si
759     <filename>pg_xlog/</> est un lien symbolique pointant quelque part à
760     l'extérieur du répertoire du groupe, ce qui est une configuration commune
761     pour des raisons de performance.
762    </para>
763
764    <para>
765     Pour utiliser cette sauvegarde, vous aurez besoin de conserver les
766     fichiers segments WAL générés pendant ou après le lancement de la
767     sauvegarde. Pour vous aider dans ce travail, la fonction
768     <function>pg_stop_backup</> crée un <firstterm>fichier historique de la
769     sauvegarde</> qui est immédiatement stocké dans l'aire des archives WAL.
770     Ce fichier est nommé d'après le nom du premier fichier segment WAL dont
771     vous avez besoin pour utiliser la sauvegarde. Par exemple, si le fichier
772     WAL du début est <literal>0000000100001234000055CD</>, le fichier
773     historique sera nommé quelque chose comme
774     <literal>0000000100001234000055CD.007C9330.backup</> (le deuxième nombre
775     dans le nom de ce fichier contient la position exacte à l'intérieur du fichier
776     WAL et peut être habituellement ignorée). Une fois que vous avez archivé de
777     façon sûre la sauvegarde du système de fichiers et les segments WAL utilisés
778     pendant la sauvegarde (comme spécifié dans le fichier d'historique des
779     sauvegardes), tous les segments WAL archivés avec des noms numériquement plus
780     petits ne sont plus nécessaires pour la récupération de la sauvegarde du
781     système de fichiers et pourraient être supprimés. Néanmoins, vous devriez
782     penser à conserver plusieurs ensembles de sauvegarde pour être absolument
783     certain de pouvoir récupérer vos données. Gardez en tête que seuls les fichiers
784     WAL complets sont archivés, donc il y aura un délai entre l'exécution de
785     <function>pg_stop_backup</> et l'archivage de tous les fichiers de segment
786     WAL pour rendre la sauvegarde du système de fichiers cohérente.
787    </para>
788
789    <para>
790     Le fichier d'historique de la sauvegarde est un simple fichier texte. Il
791     contient le label que vous avez donné à <function>pg_start_backup</>, ainsi
792     que l'heure de début et de fin de la sauvegarde. Si vous utilisez le label
793     pour identifier où le fichier de sauvegarde associé est conservé, alors le
794     fichier historique archivé est suffisant pour vous dire quel fichier de
795     sauvegarde restaurer, si vous en avez besoin.
796    </para>
797
798    <para>
799     Comme vous devez conserver tous les fichiers WAL archivés depuis votre
800     dernière sauvegarde de base, l'intervalle entre les sauvegardes de base
801     devrait habituellement être choisie suivant la quantité de stockage que
802     vous voulez consommer en fichiers archives WAL. Vous devriez aussi
803     considérer combien de temps vous êtes prêt à dépenser pendant la
804     récupération, si celle-ci est nécessaire &mdash; le système devra rejouer
805     tous les segments WAL et ceci peut prendre beaucoup de temps si la
806     dernière sauvegarde de base est ancienne.
807    </para>
808
809    <para>
810     Il est aussi important de noter que la fonction
811     <function>pg_start_backup</> crée un fichier nommé
812     <filename>backup_label</> dans le répertoire du groupe de bases de données
813     qui est ensuite supprimé de nouveau par <function>pg_stop_backup</>. Ce
814     fichier sera bien sûr archivé comme faisant parti du fichier de
815     sauvegarde. Le fichier label de la sauvegarde inclut la chaîne label que
816     vous avez donné à <function>pg_start_backup</>, ainsi que l'heure à
817     laquelle <function>pg_start_backup</> a été exécuté et le nom du fichier
818     WAL du début. En cas de confusion, il sera du coup possible de regarder
819     dans le fichier sauvegarde et de déterminer exactement de quelle session
820     de sauvegarde provient ce fichier.
821    </para>
822
823    <para>
824     Il est aussi possible de faire une sauvegarde alors que le postmaster est
825     arrêté. Dans ce cas, vous ne pouvez évidemment pas utiliser
826     <function>pg_start_backup</> ou <function>pg_stop_backup</> et vous serez
827     donc contraint à garder trace vous-même des fichiers de sauvegarde et de
828     jusqu'où vont les fichiers WAL associés. Il est généralement mieux de
829     suivre la procédure de sauvegarde à chaud ci-dessus.
830    </para>
831   </sect2>
832
833   <sect2 id="backup-pitr-recovery">
834    <title>Récupérer à partir d'une sauvegarde à chaud</title>
835
836    <para>
837     OK, le pire est arrivé et vous avez besoin de récupérer votre sauvegarde.
838     Voici la procédure&nbsp;:
839   <orderedlist>
840    <listitem>
841     <para>
842      Arrêtez le postmaster s'il est en cours d'exécution.
843     </para>
844    </listitem>
845    <listitem>
846     <para>
847      Si vous avez de la place pour le faire, copiez le répertoire entier des
848      données du groupe et tout tablespace dans un emplacement temporaire
849      au cas où vous en auriez besoin plus tard. Notez que cette précaution
850      demandera que vous ayez assez de place libre sur votre système pour
851      contenir deux copies de votre base de données existante. Si vous n'avez
852      pas assez de place, vous devez au moins copier le contenu du
853      sous-répertoire <filename>pg_xlog</> du répertoire des données car il
854      pourrait contenir des journaux qui n'ont pas été archivés avant l'arrêt
855      du serveur.
856     </para>
857    </listitem>
858    <listitem>
859     <para>
860      Effacez tous les fichier et sous-répertoires existants sous le
861      répertoire des données du groupe et sous les répertoires racines des
862      tablespaces que vous utilisez.
863     </para>
864    </listitem>
865    <listitem>
866     <para>
867      Restaurez les fichiers de la base de données à partir de votre
868      sauvegarde. Faites attention à ce qu'ils soient restaurés avec le bon
869      propriétaire (l'utilisateur système de la base de données, et non pas
870      root&nbsp;!) et avec les bons droits. Si vous utilisez les espaces
871      logiques, vous vérifirez que les liens symboliques dans
872      <filename>pg_tblspc/</> ont été correctement restaurés.
873     </para>
874    </listitem>
875    <listitem>
876     <para>
877      Supprimez tout fichier présent dans <filename>pg_xlog/</>&nbsp;; ils
878      proviennent de la sauvegarde et sont du coup probablement obsolètes.
879      Si vous n'avez pas archivé <filename>pg_xlog/</> du tout, alors
880      re-créez ce répertoire ainsi que le sous-répertoire
881      <filename>pg_xlog/archive_status/</>.
882     </para>
883    </listitem>
884    <listitem>
885     <para>
886      Si vous aviez des fichiers segments WAL non archivés que vous avez
887      sauvegardé dans l'étape 2, copiez-les dans <filename>pg_xlog/</> (il
888      est mieux de les copier, pas de les déplacer, car vous aurez toujours les
889      fichiers non modifiés si un problème survient et que vous devez
890      recommencer).
891     </para>
892    </listitem>
893    <listitem>
894     <para>
895      Créez un fichier de commandes de récupération
896      <filename>recovery.conf</> dans le répertoire des données du groupe
897      (voir <xref linkend="recovery-config-settings">). De plus, vous pourriez
898      vouloir modifier temporairement <filename>pg_hba.conf</> pour empêcher
899      les utilisateurs ordinaires de se connecter tant que vous n'êtes pas
900      certain que la récupération a réussi.
901     </para>
902    </listitem>
903    <listitem>
904     <para>
905      Lancez le postmaster. Le postmaster se trouvera en mode récupération et
906      commencera la lecture des fichiers WAL archivés dont il a besoin. À la
907      fin du processus de récupération, le postmaster renommera
908      <filename>recovery.conf</> en <filename>recovery.done</> (pour empêcher
909      de retourner accidentellement en mode de récupération dans le cas d'un
910      arrêt brutal un peu plus tard), puis commencera les opérations normales
911      de la base de données.
912     </para>
913    </listitem>
914    <listitem>
915     <para>
916      Inspectez le contenu de la base de données pour vous assurer que vous
917      avez récupéré ce que vous vouliez. Sinon, retournez à l'étape 1. Si
918      tout va bien, laissez vos utilisateurs venir en restaurant le fichier
919      <filename>pg_hba.conf</> à son état normal.
920     </para>
921    </listitem>
922   </orderedlist>
923    </para>
924
925    <para>
926     La partie clé de tout ceci est de configurer le fichier de commandes de
927     récupération. Il décrit comment vous voulez récupérer et à quel point la
928     récupération doit fonctionner. Vous pouvez utiliser
929     <filename>recovery.conf.sample</> (normalement présent dans le
930     répertoire d'installation <filename>share/</>) comme prototype. La seule
931     chose que vous devez absolument spécifier dans
932     <filename>recovery.conf</> est <varname>restore_command</> indiquant à
933     <productname>PostgreSQL</> comment récupérer les fichiers segments WAL
934     archivés. Comme <varname>archive_command</>, ceci est une chaîne contenant
935     le nom de la commande. Elle pourrait contenir <literal>%f</>, qui est
936     remplacé par le nom du journal souhaité, et <literal>%p</>, qui est
937     remplacé par le chemin absolu où copier le journal. Écrivez
938     <literal>%%</> si vous avez besoin d'embarquer un vrai caractère
939     <literal>%</> dans la commande. La commande utile la plus simple est
940     quelque chose comme
941 <programlisting>
942 restore_command = 'cp /mnt/serveur/répertoire_archive/%f %p'
943 </programlisting>
944     qui copiera les segments WAL précédemment archivés à partir du répertoire
945     <filename>/mnt/serveur/répertoire_archive</>.  Vous pourriez bien sûr
946     utiliser quelque chose de plus compliqué, peut-être même un script shell
947     qui demandera à l'utilisateur de monter la cassette appropriée.
948    </para>
949
950    <para>
951     Il est important que la commande renvoie un code de sortie différent de
952     zéro en cas d'échec. La commande <emphasis>se verra demander</> les
953     journaux absents de l'archive&nbsp;; il doit renvoyer autre chose que
954     zéro dans ce cas. Ceci n'est pas une condition d'erreur. Soyez conscient
955     que le nom de base du chemin <literal>%p</> sera différent de
956     <literal>%f</>&nbsp;; ne vous attendez pas à ce qu'ils soient
957     interchangeables.
958    </para>
959
960    <para>
961     Les segments WAL qui n'ont pas pu être trouvés dans l'archive seront
962     recherchés dans <filename>pg_xlog/</>&nbsp;; cela autorise l'utilisation
963     des segments non archivés. Néanmoins, les segments disponibles à partir de
964     l'archive seront utilisés de préférence par rapport aux fichiers dans
965     <filename>pg_xlog/</>. Le système ne surchargera pas le contenu existant
966     de <filename>pg_xlog/</> lors de la récupération des fichiers archivés.
967    </para>
968
969    <para>
970     Normalement, la récupération traitera tous les segments WAL disponibles,
971     restaurant du coup la base de données à cet instant (ou aussi proche que
972     nous le pouvons suivant les segments WAL disponibles). Mais, si vous
973     voulez récupérer à un instant particulier (disons, juste avant que
974     l'administrateur junior ait supprimé votre table principale de
975     transaction), spécifiez simplement le point d'arrêt requis dans
976     <filename>recovery.conf</>. Vous pouvez spécifier le point d'arrêt, connu
977     sous le nom de <quote>cible de récupération</>, soit par la date/heure
978     soit par l'ID de la dernière transaction. Au moment où nous écrivons ceci,
979     seule l'option date/heure est tout à fait utilisable car il n'existe pas
980     d'outils pour vous aider à identifier avec une certaine précision l'ID de
981     transaction à utiliser.
982    </para>
983
984    <note>
985      <para>
986       Le point d'arrêt doit se situer après l'heure de fin de la sauvegarde
987       de base (le moment de <function>pg_stop_backup</>). Vous ne pouvez pas
988       utiliser une sauvegarde de base pour récupérer à un tel instant où la
989       sauvegarde était encore en cours (pour récupérer jusqu'à cet instant,
990       vous devez récupérer votre sauvegarde de base précédente et recommencer
991       à partir de là).
992      </para>
993     </note>
994
995     <sect3 id="recovery-config-settings" xreflabel="Configuration de la récupération">
996      <title>Configuration de la récupération</title>
997
998      <para>
999       Ces configurations peuvent seulement être placées dans le fichier
1000       <filename>recovery.conf</> et s'appliquent seulement pour la durée de la
1001       récupération. Ils doivent être réinitialisés pour toute récupération
1002       ultérieure que vous souhaitez réaliser. Ils ne peuvent pas être modifiés
1003       une fois que la récupération a commencé.
1004      </para>
1005
1006      <variablelist>
1007
1008      <varlistentry id="restore-command" xreflabel="restore_command">
1009       <term><varname>restore_command</varname> (<type>string</type>)</term>
1010       <listitem>
1011        <para>
1012         La commande shell à exécuter pour récupérer un segment archivé de la
1013         série de fichiers WAL. Ce paramètre es