Changeset 519
- Timestamp:
- 12/08/06 09:46:03 (2 years ago)
- Files:
-
- traduc/trunk/manuel/backup.xml (modified) (35 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/trunk/manuel/backup.xml
r511 r519 1 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 2 <!-- $Header: /var/lib/cvs/pgsql-fr/sgml/backup.sgml,v 1.17 2005/09/15 07:03:14 guillaume Exp $ --> 3 <!-- SAS : 20061208 --> 3 4 <chapter id="backup"> 4 5 <title>Sauvegardes et restaurations</title> … … 17 18 données de <productname>PostgreSQL</productname> : 18 19 <itemizedlist> 19 <listitem><para><acronym> La sauvegarde SQL ;</acronym></para></listitem>20 <listitem><para> La sauvegarde au niveau du système de20 <listitem><para><acronym>la sauvegarde SQL ;</acronym></para></listitem> 21 <listitem><para>la sauvegarde au niveau du système de 21 22 fichiers ;</para></listitem> 22 <listitem><para> L'archivage continue.</para></listitem>23 <listitem><para>l'archivage continue.</para></listitem> 23 24 </itemizedlist> 24 25 Chacune a ses avantages et inconvénients. … … 40 41 41 42 <para> 42 <application>pg_dump</application> est un programme client <productname>PostgreSQL</productname> 43 <application>pg_dump</application> est un programme client 44 <productname>PostgreSQL</productname> 43 45 classique (mais plutôt intelligent). Ceci signifie que la 44 46 sauvegarde peut être effectuée depuis n'importe quel ordinateur ayant accès à la base. … … 50 52 51 53 <para> 52 Pour préciser quel serveur de bases de données <application>pg_dump</application> doit 53 contacter, on utilise les options de ligne de commande <option>-h 54 <replaceable>serveur</replaceable></option> et <option>-p <replaceable>port</replaceable></option>. 55 Le serveur par défaut est le serveur local, ou bien celui spécifié par la 54 Pour préciser le serveur de bases de données que 55 <application>pg_dump</application> doit 56 contacter, on utilise les options de ligne de commande 57 <option>-h <replaceable>serveur</replaceable></option> et 58 <option>-p <replaceable>port</replaceable></option>. 59 Le serveur par défaut est le serveur local ou celui indiqué par la 56 60 variable d'environnement <envar>PGHOST</envar>. 57 61 De la même façon, le port par défaut est indiqué par la variable d'environnement 58 62 <envar>PGPORT</envar> ou, en son absence, par la valeur par défaut précisée 59 à la compilation. Le serveur a normalement la même valeurpar63 à la compilation. Le serveur a normalement reçu les mêmes valeurs par 60 64 défaut à la compilation. 61 65 </para> 62 66 63 67 <para> 64 Comme tout programme client <productname>PostgreSQL</productname>, <application>pg_dump</application> 68 Comme tout programme client <productname>PostgreSQL</productname>, 69 <application>pg_dump</application> 65 70 se connecte par défaut avec l'utilisateur de base de données de même nom que 66 l'utilisateur système courant. Pour passer outre, on utilise l'option 67 <option>-U</option> ou on donne une valeur à la variable d'environnement 68 <envar>PGUSER</envar>. Les connexions de 71 l'utilisateur système courant. L'utilisation de l'option 72 <option>-U</option> ou de la variable d'environnement 73 <envar>PGUSER</envar> permettent de 74 modifier le comportement par défaut. Les connexions de 69 75 <application>pg_dump</application> sont soumises aux mécanismes normaux 70 d'authentification des programmes clients ( qui sont décrits dans le <xref71 linkend="client-authentication"/>).76 d'authentification des programmes clients (décrits dans le 77 <xref linkend="client-authentication"/>). 72 78 </para> 73 79 74 80 <para> 75 81 Les sauvegardes créées par <application>pg_dump</application> sont cohérentes, ce 76 qui veut dire que les modifications effectuées alors que <application>pg_dump</application>82 qui signifie que les modifications effectuées alors que <application>pg_dump</application> 77 83 est en cours de fonctionnement ne sont pas reprises dans le fichier de résultat. 78 84 <application>pg_dump</application> ne bloque pas les autres opérations sur la base … … 95 101 96 102 <para> 97 Les fichiers texte créés par <application>pg_dump</application> sont prévus pourêtre103 Les fichiers texte créés par <application>pg_dump</application> peuvent être 98 104 lus par le programme <application>psql</application>. La syntaxe générale 99 105 d'une commande de restauration est … … 119 125 restauration échoue pour la création des objets dont ils sont 120 126 propriétaires ou sur lesquels ils ont des droits (quelque fois, cela 121 est souhaitable mais ce n'est pas le cas habituellement).127 est souhaitable mais ce n'est habituellement pas le cas). 122 128 </para> 123 129 … … 155 161 Les fichiers de sauvegarde produits par <application>pg_dump</application> sont 156 162 relatifs à <literal>template0</literal>. Cela signifie que chaque langage, 157 procédure, etc. ajouté s à <literal>template1</literal> seront aussi sauvegardés163 procédure, etc. ajouté à <literal>template1</literal> est aussi sauvegardé 158 164 par <application>pg_dump</application>. En conséquence, si une base 159 <literal>template1</literal> modifiée est utilisée , il faut créer la base160 vide à partir de165 <literal>template1</literal> modifiée est utilisée lors de la 166 restauration, il faut créer la base vide à partir de 161 167 <literal>template0</literal>, comme dans l'exemple précédent. 162 168 </para> … … 164 170 165 171 <para> 166 Après la restauration d'une sauvegarde, il est conseillé d'exécuter <xref167 linkend="sql-analyze" endterm="sql-analyze-title"/> sur chaque base de172 Après la restauration d'une sauvegarde, il est conseillé d'exécuter 173 <xref linkend="sql-analyze" endterm="sql-analyze-title"/> sur chaque base de 168 174 données pour que l'optimiseur de requêtes dispose de statistiques utiles. 169 175 Un moyen simple de le faire est d'exécuter <command>vacuumdb -a -z</command> ; … … 181 187 182 188 <para> 183 <application>pg_dump</application> sauvegarde seulement une base de données 184 à la fois et il ne sauvegarde pas les informations sur les rôles et les 185 tablespaces (car ils sont communs au cluster et non pas par base). Pour 186 supporter une sauvegarde simple de contenu entier du cluster, le programme 187 <xref linkend="app-pg-dumpall"/> est fourni. 189 <application>pg_dump</application> ne sauvegarde qu'une seule base à la 190 fois, et ne sauvegarde pas les informations relatives aux rôles et 191 <foreignphrase>tablespaces</foreignphrase> (parce que ceux-ci portent 192 sur l'ensemble des bases du cluster, et non sur une base particulière). 193 Pour permettre une sauvegarde aisée de tout le contenu d'un cluster, le 194 programme <xref linkend="app-pg-dumpall"> est fourni. 188 195 <application>pg_dumpall</application> sauvegarde toutes les bases de données d'un 189 196 groupe de bases de données <productname>PostgreSQL</productname> (appelé cluster) et 190 préserve les données communes au cluster, comme les rôles et tablespaces.197 préserve les données communes au cluster, telles que les rôles et tablespaces. 191 198 L'utilisation basique de cette commande est : 192 199 <synopsis>pg_dumpall > <replaceable>fichier_de_sortie</replaceable></synopsis> … … 194 201 <application>psql</application> : 195 202 <synopsis>psql -f <replaceable class="parameter">fichier_d_entree</replaceable> postgres</synopsis> 196 (N'importe quelle base de données peut être utilis erpour la connexion203 (N'importe quelle base de données peut être utilisée pour la connexion 197 204 mais si le rechargement est exécuté sur un cluster vide, il est 198 205 préférable d'utiliser <literal>postgres</literal>.) … … 200 207 une sauvegarde faite avec <application>pg_dumpall</application>, afin de 201 208 pouvoir restaurer les informations sur les rôles et les tablespaces. 202 Si vous utilisez des tablespaces, faites attention que les chemins des203 tablespaces dans la sauvegarde sont appropriées pourla nouvelle209 Si les <foreignphrase>tablespaces</foreignphrase> sont utilisés, il faut 210 s'assurer que leurs chemins sauvegardés sont appropriés à la nouvelle 204 211 installation. 205 212 </para> … … 254 261 255 262 <formalpara> 256 <title>Utilisation du format de sauvegarde spécial</title>263 <title>Utilisation du format de sauvegarde personnalisé</title> 257 264 <para> 258 265 Si <productname>PostgreSQL</productname> est installé sur un système où la 259 bibliothèque de compression <application>zlib</application> est disponible, ce format 260 de sauvegarde spécial peut être utilisé. Pour les grandes bases de données, 266 bibliothèque de compression <application>zlib</application> est 267 disponible, le format de sauvegarde personnalisé peut être utilisé pour 268 compresser les données à la volée. Pour les bases de données 269 volumineuses, 261 270 cela produit un fichier de sauvegarde d'une taille comparable à celle 262 271 du fichier produit par 263 272 <command>gzip</command>, avec l'avantage supplémentaire de permettre de 264 273 restaurer des tables sélectivement. La commande qui suit sauvegarde une 265 base de données en utilisant le format de sauvegarde spécial :274 base de données en utilisant ce format de sauvegarde : 266 275 267 276 <programlisting>pg_dump -Fc <replaceable class="parameter">base_de_donnees</replaceable> > <replaceable class="parameter">nom_fichier</replaceable></programlisting> 268 277 269 Le format personnalisé de la sauvegardene produit pas un script278 Le format de sauvegarde personnalisé ne produit pas un script 270 279 utilisable par 271 280 <application>psql</application>. Ce script doit être restauré avec 272 <application>pg_restore</application>. Voir les pages de référence de <xref273 linkend="app-pgdump"/> et <xref linkend="app-pgrestore"/> pour plus de281 <application>pg_restore</application>. Voir les pages de référence de 282 <xref linkend="app-pgdump"/> et <xref linkend="app-pgrestore"/> pour plus de 274 283 détails. 275 284 </para> … … 283 292 284 293 <para> 285 Une autre stratégie de sauvegarde est decopier les fichiers286 utilisés par <productname>PostgreSQL</productname> pour enregistrer les données.294 Une autre stratégie de sauvegarde consiste à copier les fichiers 295 utilisés par <productname>PostgreSQL</productname> pour le stockage des données. 287 296 Dans la <xref linkend="creating-cluster"/>, l'emplacement de ces 288 297 fichiers est précisé mais quiconque s'intéresse à cette méthode les a … … 305 314 (principalement parce que <command>tar</command> et les outils similaires 306 315 ne font pas une image atomique de l'état du système de fichiers à un 307 moment spécifique). Les informations concernant la façon d'arrêter308 le serveur <productname>PostgreSQL</productname> se trouvent dans la <xref309 linkend="server-shutdown"/>.316 moment donné). Les informations concernant la façon d'arrêter 317 le serveur <productname>PostgreSQL</productname> se trouvent dans la 318 <xref linkend="server-shutdown"/>. 310 319 </para> 311 320 … … 317 326 <listitem> 318 327 <para> 319 Qui s'est aventuré dans les détails de l'organisation de la328 Quiconque s'est aventuré dans les détails de l'organisation de la 320 329 base de données peut être tenté de ne sauvegarder et 321 330 de ne restaurer que certaines tables ou bases de données particulières. … … 323 332 contenues dans ces fichiers ne représentent que la moitité de la 324 333 vérité. L'autre moitié est dans les fichiers journaux de validation 325 <filename>pg_clog/*</filename> ,qui334 <filename>pg_clog/*</filename> qui 326 335 contiennent l'état de la validation de chaque transaction. Un fichier de 327 336 table n'est utilisable qu'avec cette information. Bien entendu, il est … … 337 346 338 347 <para> 339 Une autre approche à la sauvegarde du système de fichiers est de réaliser 340 une <quote>image cohérente</quote> du répertoire des données si le système 341 de fichiers supporte cette fonctionnalité (et qu'il peut lui être fait 342 confiance). La procédure typique est de faire une 343 <quote>image gelée</quote> du volume contenant la base de données, et enfin de 344 copier entièrement le répertoire de données (pas uniquement quelques parties, 348 Une autre approche à la sauvegarde du système de fichiers consiste à réaliser 349 une <quote>image cohérente</quote> du répertoire des données. Il faut 350 pour cela que le système 351 de fichiers supporte cette fonctionnalité (et qu'il puisse lui être fait 352 confiance). La procédure typique consiste à réaliser une 353 <quote>image gelée</quote> du volume contenant la base de données et 354 ensuite de copier entièrement le répertoire de données (pas seulement 355 quelques parties, 345 356 voir ci-dessus) de l'image sur un périphérique de sauvegarde, puis de 346 357 libérer l'image gelé. Ceci fonctionne même si le serveur de la base de 347 données est en cours d'exécution. Néanmoins, une sauvegarde créée de cette348 façon sauvegarde les fichiers de la base de données dans un état où le358 données est en cours d'exécution. Néanmoins, une telle sauvegarde 359 copie les fichiers de la base de données dans un état où le 349 360 serveur n'est pas correctement arrêté ; du coup, au lancement du 350 361 serveur à partir des données sauvegardées, PostgreSQL peut penser que le … … 392 403 393 404 <sect1 id="continuous-archiving"> 394 <title>Archivage en continueet récupération d'un instantané (PITR)</title>405 <title>Archivage continu et récupération d'un instantané (PITR)</title> 395 406 396 407 <indexterm zone="backup"> … … 413 424 bases. Ils existent principalement pour se prémunir des suites d'un 414 425 arrêt brutal : si le système s'arrête brutalement, la base de données 415 peut être restaurée dans un état cohérent des donnéesen426 peut être restaurée dans un état cohérent en 416 427 <quote>rejouant</quote> les entrées des journaux enregistrées depuis le dernier 417 428 point de vérification. Néanmoins, l'existence de ces journaux rend possible … … 426 437 <listitem> 427 438 <para> 428 il n'est pas nécessaire de faireune sauvegarde parfaitement cohérente439 Il n'est pas nécessaire de disposer d'une sauvegarde parfaitement cohérente 429 440 comme point de départ. Toute incohérence dans la sauvegarde est corrigée 430 441 par la ré-exécution des journaux (ceci n'est pas significativement … … 438 449 <para> 439 450 Puisqu'une longue séquence de fichiers WAL peut être assemblée pour 440 être rejouée, la sauvegarde continue est possible en continuant451 être rejouée, une sauvegarde continue est obtenue en continuant 441 452 simplement à archiver les fichiers WAL. Ceci est particulièrement 442 intéressant pour les grosses bases de données dont lafréquente453 intéressant pour les grosses bases de données dont une fréquente 443 454 sauvegarde complète est difficilement réalisable. 444 455 </para> … … 459 470 Si la série de fichiers WAL est fournie en continu à une autre 460 471 machine chargée avec le même fichier de sauvegarde de base, 461 on obtient un système <quote>de reprise automatique</quote>472 on obtient un système <quote>de reprise intermédiaire</quote> 462 473 (<foreignphrase>warm standby</foreignphrase>) : à tout 463 474 moment, la deuxième machine peut être montée et disposer d'une copie … … 705 716 superutilisateur et lancer la commande 706 717 <programlisting>SELECT pg_stop_backup();</programlisting> 707 Ce ci termine le mode de sauvegarde et exécute un basculement automatique708 vers le prochain segment WAL. La raison de ce basculement est de s'arranger709 pour que le dernier segment WAL écrit pendant l'interval de sauvegarde710 s oit immédiatement prêt à archiver.718 Cela met fin au processus de sauvegarde et réalise un basculent 719 automatique vers le prochain segment WAL. Ce basculement est nécessaire 720 pour permettre au dernier fichier de segment WAL écrit pendant la 721 sauvegarde d'être immédiatement archivable. 711 722 </para> 712 723 </listitem> … … 1023 1034 récupération pour permettre à cette dernière de se terminer correctement. 1024 1035 Si la récupération échoue pour une raison externe (arrêt brutal du système 1025 ou archive WAL devenue inaccessible), alorsla récupération peut être1036 ou archive WAL devenue inaccessible), la récupération peut être 1026 1037 simplement relancée. Elle redémarre alors pratiquement là où elle a échoué. 1027 Le re lancement de la récupération fonctionne plus comme les vérifications1028 en opération normale : le serveur force périodiquement tout son état1029 sur disque puis met à jour le fichier <filename>pg_control</filename> pour1030 indiquer que les données WAL déjà traitées n'ont pas besoin d'être de1031 nouveau parcourues.1038 Le redémarrage de la restauration fonctionne comme les points de 1039 contrôle du déroulement normal : le serveur force une écriture 1040 régulière de son état sur les disques et actualise alors le fichier 1041 <filename>pg_control</filename> pour indiquer que les données WAL déjà 1042 parcourues n'ont plus à être parcourus. 1032 1043 </para> 1033 1044 … … 1351 1362 1352 1363 <indexterm zone="backup"> 1353 <primary> Haute Disponibilité</primary>1364 <primary>haute disponibilité</primary> 1354 1365 </indexterm> 1355 1366 … … 1394 1405 1395 1406 <para> 1396 L'envoi des journaux est asynchrone, c 'est-à-dire que les enregistrements1407 L'envoi des journaux est asynchrone, ce qui signifie que les enregistrements 1397 1408 WAL sont envoyés après validation de la transaction. De ce fait, il y a un 1398 1409 léger risque de perte de données si le serveur principal est l'objet d'une 1399 panne catastrophique : les transactions non envoyées seront perdues. 1400 La quantité de données perdues peut être limitée en modifiant le paramètre 1401 <varname>archive_timeout</varname> qui peut être configuré très bas, par 1402 exemple quelques secondes si nécessaire. Néanmoins, des paramètres si bas 1403 augmenteront de façon substantielle les besoins en bande passante pour le 1404 transfert de fichiers. Si vous avez besoin d'une fenêtre de moins d'une 1405 minute, il est probablement mieux de se tourner vers le transfert de 1406 journaux basés sur les enregistrements. 1410 panne catastrophique : les transactions qui ne sont pas encore 1411 transmises sont perdues. La taille de la fenêtre des données perdues peut 1412 être réduite par l'utilisation du paramètre 1413 <varname>archive_timeout</varname>. Celui-ci peut être positionné à une 1414 valeur de quelques secondes seulement, si nécessaire. Toutefois, une 1415 valeur aussi faible augmente considérablement les besoins en bande 1416 passante du transfert de fichiers. Si une valeur aussi basse est 1417 nécessaire, il peut être préférable de s'intéresser au transfert de 1418 journaux par enregistrement. 1407 1419 </para> 1408 1420 … … 1410 1422 Le serveur de secours n'est pas accessible, car il est en permanence 1411 1423 occupé par la récupération. Les performances de récupération 1412 sont suffisamment bonnes pour que l'attente ne soit que d'un peu de temps 1413 avant d'obtenir une disponibilité complète une fois qu'il a été 1414 activé. En conséquence, on appelle cela une configuration de reprise intermédiaire ou 1415 de secours semi-automatique (<foreignphrase>warm 1416 standby</foreignphrase>) permettant d'obtenir de la haute disponibilité. 1424 sont suffisamment bonnes pour que l'attente soit réduite 1425 avant d'obtenir une disponibilité complète une fois le serveur de secours 1426 activé. En conséquence, on appelle cela une configuration de reprise 1427 intermédiaire ou de secours semi-automatique 1428 (<foreignphrase>warm standby</foreignphrase>), qui permet d'atteindre la 1429 haute disponibilité. 1417 1430 La restauration d'un serveur à partir d'une sauvegarde archivée de la 1418 base et de la relecture des journaux prend raconsidérablement plus de temps.1431 base et de la relecture des journaux prend considérablement plus de temps. 1419 1432 Cette technique n'offre qu'une solution de récupération suite à une panne, 1420 1433 mais pas de la haute disponibilité. … … 1425 1438 1426 1439 <para> 1427 Il est généralement conseillé de créer les serveurs primaire et d'attente 1428 pour qu'ils soient aussi similaires que possible, au moins du point de 1429 vue du serveur de base de données. En particulier, les noms des chemins 1430 associés avec les tablespaces seront passés sans modification, donc les 1431 serveurs primaire et d'attente doivent avoir les mêmes chemins de montage 1432 pour les tablespaces si cette fonctionnalité est utilisée. Gardez en tête 1433 que si <xref linkend="sql-createtablespace" 1434 endterm="sql-createtablespace-title"/> est exécuté sur le primaire, tout 1435 point de montage nécessaire pour ce dernier doit être créé sur le serveur 1436 principal et tous les serveurs d'attente avant l'exécution de la commande. 1437 Le matériel n'est pas obligatoirement identique mais l'expérience a montré 1438 que maintenir deux systèmes identiques est plus facile que maintenir deux 1439 systèmes différents pendant toute la durée de vie de l'application et du 1440 système. Dans tous les cas, l'architecture du matériel doit être identique 1441 — transférer d'un système 32 bits vers un 64 bits ne fonctionnera pas. 1442 </para> 1443 1444 <para> 1445 En général, le transfert de journaux entre serveurs de versions majeures 1446 différentes n'est pas possible. La politique des développeurs du 1440 Il est généralement préférable de créer des serveurs primaire et de 1441 secours aussi semblables que possible, au moins du point de 1442 vue du serveur de bases de données. En particulier, les noms des chemins 1443 associés aux <foreignphrase>tablespaces</foreignphrase> sont passés tels 1444 quels. Les serveurs doivent donc, tous, posséder les mêmes chemins de 1445 montage des <foreignphrase>tablespaces</foreignphrase> si cette fonctionnalité 1446 est utilisée. Si 1447 <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/> 1448 est exécuté sur le serveur principal, tout nouveau point de montage 1449 nécessaire doit être créé à la fois sur le serveur principal et sur tous les 1450 serveurs de secours, avant l'exécution de la commande. 1451 Le matériel ne doit pas obligatoirement être identique mais l'expérience 1452 prouve qu'il est plus facile de maintenir deux systèmes identiques 1453 sur la durée de vie de l'application et du système. Dans tous les cas, 1454 l'architecture du matériel doit être identique 1455 — le transfert d'un système 32 bits à un 64 bits ne fonctionne pas. 1456 </para> 1457 1458 <para> 1459 En général, il n'est pas possible d'effectuer le transfert de journaux 1460 entre serveurs de versions majeures différentes. La politique des 1461 développeurs du 1447 1462 <quote>PostgreSQL Global Development Group</quote> consiste à ne pas 1448 1463 modifier les formats disque lors de mises à jour mineures. De ce fait, il 1449 1464 est possible d'utiliser des serveurs principal et de secours de versions 1450 mineures différentes. Toutefois, aucun support formel n'est offert 1451 pour cela. Autant que possible, il est préférable de conserver les serveurs 1452 primaire et d'attente au même niveau de version. Lors de la mise à jour 1465 mineures différentes. Toutefois, aucune garantie formelle n'est offerte à 1466 ce sujet. Il est préférable, dans la mesure du possible, de conserver les 1467 serveurs 1468 primaire et de secours au même niveau de version. Lors de la mise à jour 1453 1469 vers une nouvelle version mineure, la meilleure politique est de mettre 1454 à jour les serveurs en attente en premier — une nouvelle version 1455 mineure a plus de chances de lire les fichiers WAL d'une version mineure 1456 précédente plutôt que le contraire. 1457 </para> 1458 1459 <para> 1460 Il n'existe pas de mode spécial pour activer un serveur de secours. 1470 à jour les serveurs de secours en premier — il y a plus de chances 1471 qu'une version mineure sache lire les fichiers WAL d'une version mineure 1472 précédente que le contraire. 1473 </para> 1474 1475 <para> 1476 Il n'y a pas de mode particulier requis pour activer un serveur de 1477 secours. 1461 1478 Les seules opérations sur les serveurs principal et de secours 1462 sont des tâches normales et continuelles d'archivageet de récupération.1479 sont des tâches normales d'archivage continu et de récupération. 1463 1480 Le seul point de contact entre les deux serveurs est 1464 l'archive de sfichiers WAL qu'ils partagent : le principal les1481 l'archive de fichiers WAL qu'ils partagent : le principal les 1465 1482 écrit, le serveur de secours les lit. Il est impératif que des 1466 1483 archives WAL de serveurs primaires différents ne soient pas mélangées. … … 1470 1487 La magie qui permet à deux serveurs faiblement liés de travailler 1471 1488 ensemble réside dans une simple <varname>restore_command</varname> 1472 utilisé sur le serveur en attente qui attend la disponibilité du prochain 1473 fichier WAL en provenance du serveur principal. 1474 <varname>restore_command</varname> est indiqué 1475 dans le fichier <filename>recovery.conf</filename> du serveur de secours. 1476 Le traitement usuel de la récupération attend un fichier dans l'archive 1477 WAL, indiquant une erreur si le fichier était indisponible. Dans le cas du serveur de 1478 secours, il est normal que le fichier suivant n'existe pas. Il ne reste donc 1489 utilisée sur le serveur de secours qui attend la disponibilité du 1490 prochain fichier WAL en provenance du serveur principal. 1491 <varname>restore_command</varname> est indiqué dans le fichier 1492 <filename>recovery.conf</filename> du serveur de secours. 1493 En fonctionnement normal, le processus de récupération attend un fichier 1494 dans l'archive WAL, remontant une erreur si le fichier est indisponible. 1495 Dans le cas du serveur de secours, il est normal que le fichier suivant 1496 n'existe pas. Il ne reste donc 1479 1497 qu'à attendre son arrivée. Une <varname>restore_command</varname> 1480 d'attente peut être obtenue par l'écriture d'un script personnalisé 1498 d'attente peut être obtenue par l'écriture d'un script personnalisé 1481 1499 qui boucle sur un test d'apparition du prochain fichier WAL. Il faut 1482 1500 également définir un moyen de déclencher la bascule 1483 1501 (<foreignphrase>failover</foreignphrase>), ce qui interrompt la 1484 1502 <varname>restore_command</varname>, sort de la boucle et retourne une 1485 erreur au serveur de secours indiquant que le fichier n'a pas été trouvé. 1486 Cela arrête alors la récupération et le serveur de secours deviend un serveur normal. 1487 </para> 1488 1489 <para> 1490 Voici un exemple de pseudocode pour <varname>restore_command</varname> : 1503 erreur au serveur de secours indiquant que le fichier n'a pas été 1504 trouvé. Cela arrête alors la récupération et le serveur de secours devient 1505 un serveur normal. 1506 </para> 1507 1508 <para> 1509 Un exemple de pseudocode de <varname>restore_command</varname> 1510 peut être : 1491 1511 <programlisting>triggered = false; 1492 1512 while (!NextWALFileReady() && !triggered) … … 1505 1525 qui permette d'identifier une panne du serveur principal et d'en 1506 1526 notifier le serveur de secours. De nombreux outils de ce type existent 1507 et sont bien intégrés à d'autres aspects requis pour un 1508 <foreignphrase>failover</foreignphrase> réussi comme la migration d'adresse 1509 IP. 1510 </para> 1511 1512 <para> 1513 Les moyens pour déclencher un <foreignphrase>failover</foreignphrase> sont 1514 une partie importante de la planification et de la conception. 1527 et sont bien intégrés à d'autres aspects nécessaires à la réussite du 1528 <foreignphrase>failover</foreignphrase>, comme la migration d'adresse IP. 1529 </para> 1530 1531 <para> 1532 Le déclenchement du <foreignphrase>failover</foreignphrase> est une partie 1533 importante de la planification et de la conception. 1515 1534 <varname>restore_command</varname> est 1516 1535 exécutée complètement pour chaque fichier WAL. Le processus … … 1551 1570 située dans un répertoire du serveur de secours. S'assurer que les deux 1552 1571 paramètres <xref linkend="guc-archive-command"/> et 1553 <xref linkend="guc-archive-timeout"/> sont co nfigurés de façon appropriés1572 <xref linkend="guc-archive-timeout"/> sont correctement configurés 1554 1573 sur le serveur principal (voir <xref linkend="backup-archiving-wal"/>). 1555 1574 </para> … … 1558 1577 <para> 1559 1578 Faire une sauvegarde des bases du serveur principal (voir <xref 1560 linkend="backup-base-backup"/>) et charger les données sur le serveur en1561 attente.1579 linkend="backup-base-backup"/>) et charger ces données sur le serveur 1580 de secours. 1562 1581 </para> 1563 1582 </listitem> … … 1632 1651 1633 1652 <para> 1634 Une fois que le <foreignphrase>failover</foreignphrase> survientsur le1653 Au moment où le <foreignphrase>failover</foreignphrase> est mis en place sur le 1635 1654 serveur se secours, un seul serveur est opérationnel. On parle alors 1636 d'état dégénéré. L'ancien serveur de secours est devenu serveur principal,1637 l'ancien serveur principal est arrêté et peut le rester. Pour revenir aux1638 opérations normales, il faut désormais recréer un serveur de secours, soit1655 d'état dégénéré. L'ancien serveur de secours est 1656 devenu serveur principal, l'ancien serveur principal est arrêté 1657 et peut le rester. Il faut désormais recréer un serveur de secours, soit 1639 1658 sur l'ancien système principal, s'il peut redémarrer, soit sur un 1640 1659 troisième, de préférence nouveau, système. Lorsque cela est réalisé, on 1641 peut considérer que les deux serveurs ont échangé leurs rôles. Certains 1642 choisissent d'utiliser un troisième serveur pour fournir la sauvegarde vers 1643 le nouveau primaire jusqu'à ce que le nouveau serveur en attente ne soit 1644 recréé. Toutefois, cela complique assurément la configuration du système et 1645 les processus opérationnels. 1660 peut considérer que les deux serveurs ont échangé leurs rôles. 1661 </para> 1662 <para> 1663 Certains administrateurs choisissent d'utiliser un troisième serveur 1664 pour servir de sauvegarde au nouveau serveur principal le temps que le 1665 serveur de secours devienne opérationnel. Toutefois, cela complique 1666 assurément la configuration du système et les processus opérationnels. 1646 1667 </para> 1647 1668 … … 1651 1672 <foreignphrase>failover</foreignphrase>. Une bascule régulière 1652 1673 est encouragée car elle permet l'arrêt régulier de chaque système, 1653 pour la maintenance. Cela permet également de tester les mécanismes de 1674 arrêt nécessaire pour maintenir la haute-disponiblité. 1675 Cela permet également de tester les mécanismes de 1654 1676 <foreignphrase>failover</foreignphrase> pour s'assurer que cela 1655 fonctionnera toujours en cas de besoin. 1677 fonctionnera toujours en cas de besoin. Il est judicieux de rédiger ces 1678 procédures. 1656 1679 </para> 1657 1680 </sect2> … … 1662 1685 1663 1686 <para> 1664 Les principales fonctionnalités du transfert de journaux 1665 (<foreignphrase>Log Shipping</foreignphrase>) accessibles 1666 dans cette version reposent sur le transfert d'après fichier 1667 (<foreignphrase>File-based Log Shipping</foreignphrase>) 1668 décrit ci -dessus. Le 1669 <foreignphrase>Record-based Log Shipping</foreignphrase> peut également 1670 être mis en place à l'aide de la fonction 1671 <function>pg_xlogfile_name_offset()</function> (voir 1672 <xref linkend="functions-admin"/>), mais cela nécessite un développement 1673 adapté. 1674 </para> 1675 1676 <para> 1677 Un programme externe peut appeler la fonction 1678 <function>pg_xlogfile_name_offset()</function> (voir <xref 1679 linkend="functions-admin"/>) pour trouver le nom du fichier et le décalage 1680 exact en octets de la fin actuelle du WAL. Ensuite, il peut accéder au 1681 fichier WAL directement et copier les données depuis la dernière fin 1682 connue du WAL jusqu'à la fin actuelle sur le(s) serveur(s) en attente. 1683 Avec cette approche, la fenêtre de données perdues correspond au cycle 1684 d'interrogation du programme de copie qui peut être vraiment très petit 1685 et il n'y a pas de perte de bande passante dû à l'archivage forcé de 1686 segments WAL partiellement utilisés. Notez que les scripts 1687 <varname>restore_command</varname> des serveurs en attente gèrent toujours 1688 les fichiers WAL complets, donc les données copiées de façon incrémentale 1689 ne sont pas rendues disponibles aux serveurs en attente. Elles sont 1690 seulement utilisées quand le primaire meurt — alors le dernier fichier 1691 WAL partiel est rempli sur le serveur en attente avant de lui permettre 1692 d'être disponible. Dans ce cas, une implémentation correcte de ce processus 1693 requiert une coopération du script <varname>restore_command</varname> avec 1694 le programme de copie des données. 1695 copying program. 1687 <productname>PostgreSQL</productname> supporte directement le transfert 1688 de journaux d'après fichiers (<foreignphrase>file-based 1689 log shipping</foreignphrase>) tel que décrit plus haut. Elle est 1690 également possible d'implanter le transfert de journaux d'après 1691 enregistrements, mais cela demande un développement adapté. 1692 </para> 1693 1694 <para> 1695 Un programme externe peut faire appel à la fonction 1696 <function>pg_xlogfile_name_offset()</function> (voir à ce propos 1697 <xref linkend="functions-admin">) pour trouver le nom du fichier et 1698 l'exact décalage en octet dans celui-ci de la fin actuelle du WAL. Il 1699 peut alors accéder directement au fichier WAL et copier les données 1700 depuis la dernière fin connue des WAL jusqu'à l'actuelle vers le(s) 1701 serveur(s) de secours. Par cette approche, la fenêtre de perte de 1702 données correspond au temps du cycle d'interrogation du programme 1703 de copie. Elle peut alors être très courte. Il n'y a, de plus, pas de 1704 surconsommation de la bande passante du fait de l'archivage de fichiers 1705 segment partiellement utilisés. Les scripts 1706 <varname>restore_command</varname> du serveur de secours continuent de 1707 traiter avec l'ensemble des fichiers WAL. De ce fait, les serveurs de 1708 secours ne peuvent pas, en fonctionnement normal, disposer des données 1709 copiées par incréments. Elles ne deviennent utilisables que lorsque le 1710 serveur principal subit une panne — le dernier fichier WAL partiel 1711 est alors chargé dans le serveur de secours avant qu'il puisse démarrer. 1712 Un codage correct de cette procédure nécessite une réelle coopération 1713 entre le script de <varname>restore_command</varname> et le programme de 1714 copie des donneés. 1696 1715 </para> 1697 1716 </sect2> 1698 1717 1699 1718 <sect2 id="backup-incremental-updated"> 1700 <title>Sauvegardes mises à jour de façon incrémentale</title> 1701 1702 <indexterm zone="backup"> 1703 <primary>sauvegardes mises à jour de façon incrémentale</primary> 1704 </indexterm> 1705 1706 <indexterm zone="backup"> 1707 <primary>accumulation de modifications</primary> 1708 </indexterm> 1709 1710 <para> 1711 Dans une configuration <foreignphrase>warm standby</foreignphrase>, il est 1712 possible de décharger les dépenses causées par les sauvegardes périodiques 1713 de base à partir du serveur primaire ; à la place, des sauvegardes de 1714 base peuvent être réalisées en sauvegardant les fichiers du serveur en 1715 attente. Ce concept est généralement connu sous le nom de sauvegardes mises 1716 à jour de façon incrémentale, l'accumulation de modifications des journaux 1717 ou, plus simplement, l'accumulation de modifications. 1718 </para> 1719 1720 <para> 1721 Si nous prenons une sauvegarde des fichiers du serveur en attente pendant 1722 qu'il suit les journaux envoyés du primaire, nous serons capable de recharger 1723 les données et relancer le processus de récupération du serveur en attente à 1724 partir du dernier point de restauration. Nous n'avons plus besoin de 1725 conserver les fichiers WAL depuis le point de redémarrage. Si nous avons 1726 besoin de récupérer, il sera plus rapide de récupérer à partir de la 1727 sauvegarde mise à jour de façon incrémentale plutôt qu'à partir de la 1728 sauvegarde de base originale. 1729 </para> 1730 1731 <para> 1732 Comme le serveur en attente n'est pas <quote>en cours d'exécution</quote>, 1733 il n'est pas possible d'utiliser <function>pg_start_backup()</function> et 1719 <title>Sauvegardes incrémentales</title> 1720 1721 <indexterm zone="backup"> 1722 <primary>incrementally updated backups</primary> 1723 </indexterm> 1724 1725 <indexterm zone="backup"> 1726 <primary>sauvegarde incrémentale</primary> 1727 </indexterm> 1728 1729 <indexterm zone="backup"> 1730 <primary>accumulation des modifications</primary> 1731 </indexterm> 1732 1733 <!-- Le terme accumulation des modifications ne me semble pas très heureux. 1734 --> 1735 <para> 1736 Dans une configuration de reprise intermédiaire (<foreignphrase>warm 1737 standby</foreignphrase>), il est possible de décharger le serveur 1738 principal du coût des sauvegardes régulières des bases. Les sauvegardes 1739 des bases peuvent, pour cela, être effectuées en sauvegardant les fichiers 1740 d'un serveur de secours. Ce concept prend le nom de sauvegardes 1741 incrémentales, accumulation des journaux de modifications ou 1742 accumulation des modifications. 1743 </para> 1744 1745 <para> 1746 Si une sauvegarde des fichiers du serveur de secours est effectuée alors 1747 qu'il retrace les journaux transférés du serveur principal, il est 1748 possible de recharger ces données et de redémarrer le processus de 1749 restauration sur le serveur de secours à partir du dernier point de 1750 redémarrage. Il n'est alors plus nécessaire de conserver les fichiers 1751 WAL précédant le point de redémarrage. En cas de restauration, elle sera 1752 plus rapide à partir d'une sauvegarde incrémentale qu'à partir de la 1753 sauvegarde originale. 1754 </para> 1755 1756 <para> 1757 Puisque le serveur de secours n'est pas <quote>actif</quote>, il n'est 1758 pas possible d'utiliser <function>pg_start_backup()</function> et 1734 1759 <function>pg_stop_backup()</function> pour gérer le processus de 1735 sauvegarde ; C'est à vous de déterminer combien de temps conserver les 1736 fichiers WAL pour avoir une sauvegarde récupérable. Vous pouvez le faire 1737 en exécutant <application>pg_controldata</application> sur le serveur en 1738 attente pour inspecter le fichier de contrôle et déterminer l'emplacement 1739 du point de vérification du WAL en cours. 1760 sauvegarde ; c'est à l'utilisateur de déterminer depuis quand il 1761 doit conserver les fichiers de segment WAL pour avoir une sauvegarde 1762 récupérable. Cela peut se faire en exécutant 1763 <application>pg_controldata</application> sur le serveur de secours. 1764 Ce programme inspecte le fichier de contrôle pour déterminer 1765 l'emplacement du point de contrôle WAL actuel. 1740 1766 </para> 1741 1767 </sect2>

