Changeset 960
- Timestamp:
- 03/25/08 23:02:33 (8 months ago)
- Files:
-
- traduc/trunk/postgresql/array.xml (modified) (8 diffs)
- traduc/trunk/postgresql/backup.xml (modified) (57 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/trunk/postgresql/array.xml
r888 r960 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 200 70423, PG824-->6 <!-- SAS : 20080319, PG831 --> 7 7 8 8 <sect1 id="arrays"> … … 23 23 24 24 <sect2> 25 <title>Déclaration des types detableaux</title>25 <title>Déclaration des types tableaux</title> 26 26 27 27 <para> … … 69 69 Une autre syntaxe, conforme au standard SQL, peut être 70 70 utilisée pour les tableaux à une dimension. 71 <structfield>paye_par_semaine</structfield> peut être défini eainsi :71 <structfield>paye_par_semaine</structfield> peut être défini ainsi : 72 72 <programlisting>paye_par_semaine integer ARRAY[4],</programlisting> 73 73 Cette syntaxe nécessite une constante de type entier pour indiquer la taille … … 102 102 point-virgule (<literal>;</literal>) mais tous les autres utilisent une virgule 103 103 (<literal>,</literal>). Chaque <replaceable>val</replaceable> est soit une constante 104 du type des éléments du tableau soit un sous-tableau. Voici un exemple d'une 105 constante tableau : 104 du type des éléments du tableau soit un sous-tableau. 105 </para> 106 107 <para> 108 Exemple de constante tableau : 106 109 <programlisting>'{{1,2,3},{4,5,6},{7,8,9}}'</programlisting> 107 110 Cette constante a deux dimensions, un tableau 3 par 3 consistant en trois … … 139 142 140 143 <para> 141 Le résultat des deux insertions précédentes ressemble à ceci :144 Le résultat des deux insertions précédentes ressemble à : 142 145 <programlisting>SELECT * FROM sal_emp; 143 146 nom | paye_par_semaine | planning … … 252 255 253 256 <para> 254 Une expression indicée de tableau retourne NULL si , soit le tableau, soitune257 Une expression indicée de tableau retourne NULL si le tableau ou une 255 258 des expressions est NULL. De plus, NULL est renvoyé si un indice se trouve en 256 259 dehors de la plage du tableau (ce cas n'amène pas d'erreur). 257 260 Par exemple, si <literal>planning</literal> a les dimensions 258 <literal>[1:3][1:2]</literal>, alorsfaire référence à261 <literal>[1:3][1:2]</literal>, faire référence à 259 262 <literal>planning[3][3]</literal> donne un 260 263 résultat NULL. De la même façon, une référence sur un tableau avec une … … 333 336 six après une mise à jour qui affecte <literal>mon_tableau[6]</literal> 334 337 car <literal>mon_tableau[5]</literal> est alors rempli avec une valeur NULL. 335 Actuellement, l'agrandissement de cette façon est seulement autorisépour336 les tableaux à une dimension, et nonpas pour les tableaux multidimensionnels.338 Actuellement, l'agrandissement de cette façon n'est autorisé que pour 339 les tableaux à une dimension, pas pour les tableaux multidimensionnels. 337 340 </para> 338 341 … … 509 512 et <literal>}</literal>) autour des valeurs du tableau et de caractères de 510 513 délimitation entre éléments adjacents. Le caractère délimiteur est 511 habituellement une virgule (<literal>,</literal>) mais peut être 512 différent : 514 habituellement une virgule (<literal>,</literal>) mais peut différer : 513 515 il est déterminé par le paramètre <literal>typdelim</literal> du type de l'élément 514 tableau (parmi les types de données standards supportés par l'impl émentation516 tableau (parmi les types de données standards supportés par l'implantation 515 517 de <productname>PostgreSQL</productname>, le type <literal>box</literal> utilise un 516 518 point-virgule (<literal>;</literal>) mais tous les autres utilisent la virgule). traduc/trunk/postgresql/backup.xml
r947 r960 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 200 70921, PG825-->6 <!-- SAS : 20080319, PG831 --> 7 7 <chapter id="backup"> 8 8 <title>Sauvegardes et restaurations</title> … … 221 221 commandes pour re-créer des rôles, des tablespaces et des bases vides, puis 222 222 en invoquant <application>pg_dump</application> pour chaque base de 223 données. Cela signifie que, bien que chaque base de données sera224 cohérente en interne, les images des différentes bases de données ne225 seront passynchronisées.223 données. Cela signifie que, bien que chaque base de données est 224 cohérente en interne, les images des différentes bases de données peuvent 225 ne pas être tout à fait synchronisées. 226 226 </para> 227 227 </sect2> … … 235 235 sauvegarder une telle table en fichier peut poser des problèmes. 236 236 Puisque <application>pg_dump</application> peut écrire sur la sortie 237 standard, les outils standard d'Unix peuvent être utilis erpour contourner237 standard, les outils standard d'Unix peuvent être utilisés pour contourner 238 238 ce problème éventuel. 239 Il existe plusieurs façon de le faire :239 Il existe plusieurs façon de procéder : 240 240 </para> 241 241 … … 299 299 </programlisting> 300 300 301 .Voir les pages de référence de301 Voir les pages de référence de 302 302 <xref linkend="app-pgdump"/> et <xref linkend="app-pgrestore"/> pour plus de 303 303 détails. … … 306 306 307 307 <para> 308 Pour les très grosses bases de données, vous pourriez avoir besoin309 de combiner<command>split</command> avec une des deux autres approches.308 Pour les très grosses bases de données, il peut être nécessaire de combiner 309 <command>split</command> avec une des deux autres approches. 310 310 </para> 311 311 … … 353 353 Quiconque s'est aventuré dans les détails de l'organisation de la 354 354 base de données peut être tenté de ne sauvegarder et 355 de nerestaurer que certaines tables ou bases de données particulières.355 restaurer que certaines tables ou bases de données particulières. 356 356 Cela ne fonctionne <emphasis>pas</emphasis> parce que les informations 357 357 contenues dans ces fichiers ne représentent que la moitité de la … … 372 372 <para> 373 373 Une autre approche à la sauvegarde du système de fichiers consiste à réaliser 374 une <quote>image cohérente</quote> du répertoire des données. Il faut 374 une <quote>image cohérente</quote> (<foreignphrase>consistent 375 snapshot</foreignphrase>) du répertoire des données. Il faut 375 376 pour cela que le système 376 377 de fichiers supporte cette fonctionnalité (et qu'il puisse lui être fait 377 378 confiance). La procédure typique consiste à réaliser une 378 <quote>image gelée</quote> du volume contenant la base de données et 379 <quote>image gelée</quote> (<foreignphrase>frozen snapshot</foreignphrase>) 380 du volume contenant la base de données et 379 381 ensuite de copier entièrement le répertoire de données (pas seulement 380 382 quelques parties, 381 383 voir ci-dessus) de l'image sur un périphérique de sauvegarde, puis de 382 libérer l'image gelé . Ceci fonctionne même si le serveur de la base de384 libérer l'image gelée. Ceci fonctionne même si le serveur de la base de 383 385 données est en cours d'exécution. Néanmoins, une telle sauvegarde 384 386 copie les fichiers de la base de données dans un état où le 385 387 serveur n'est pas correctement arrêté ; du coup, au lancement du 386 388 serveur à partir des données sauvegardées, PostgreSQL peut penser que le 387 serveur s'est stoppé brutalement et rejouer les journaux WAL. Ce cin'est389 serveur s'est stoppé brutalement et rejouer les journaux WAL. Ce n'est 388 390 pas un problème, mais il faut en être conscient (et s'assurer d'inclure les 389 391 fichiers WAL dans la sauvegarde). … … 535 537 WAL de 16 Mo chacun (en général, mais cette taille peut 536 538 être modifiée lors de la construction de <productname>PostgreSQL</productname>). Les 537 fichiers desegment reçoivent des noms numériques pour refléter leur539 fichiers segment reçoivent des noms numériques pour refléter leur 538 540 position dans la séquence abstraite des WAL. Lorsque le système n'utilise 539 pas l'archivage des WAL, il ne crée que quelques fichiers desegment,540 qu'il <quote>recycle</quote> en renommant les fichiers de segment devenus inutiles.541 pas l'archivage des WAL, il ne crée que quelques fichiers segment, 542 qu'il <quote>recycle</quote> en renommant les fichiers devenus inutiles. 541 543 Un fichier segment dont le contenu précède le 542 544 dernier point de vérification est supposé inutile et peut être recyclé. … … 549 551 En fonction de l'application et du matériel disponible, 550 552 <quote>sauvegarder les données ailleurs</quote> peut se faire de plusieurs 551 façons : les fichiers desegment peuvent être copiés dans un répertoire553 façons : les fichiers segment peuvent être copiés dans un répertoire 552 554 NFS monté sur une autre machine, être écrits sur une cartouche (après 553 555 s'être assuré qu'il existe un moyen d'identifier le nom d'origine de chaque 554 fichier) ou être groupés pour gravage sur un CD, ou tout à faitautre chose.556 fichier) ou être groupés pour gravage sur un CD, ou toute autre chose. 555 557 Pour fournir autant de flexibilité que possible à l'administrateur de la 556 558 base de données, <productname>PostgreSQL</productname> essaie de ne faire aucune … … 564 566 565 567 <para> 566 Pour activer l'archivage des journaux de transaction, configurezle568 Pour activer l'archivage des journaux de transaction, on positionne le 567 569 paramètre <xref linkend="guc-archive-mode"/> à <literal>on</literal>, 568 et précisezla commande shell à utiliser dans le paramètre569 <xref linkend="guc-archive-command"/> configuration. En fait, ces570 et on précise la commande shell à utiliser dans le paramètre 571 <xref linkend="guc-archive-command"/> de la configuration. En fait, ces 570 572 paramètres seront toujours placés dans le fichier 571 <filename>postgresql.conf</filename>. Dans cette chaîne, tout573 <filename>postgresql.conf</filename>. Dans cette chaîne, un 572 574 <literal>%p</literal> est remplacé par le chemin absolu de 573 l'archive alors qu e tout<literal>%f</literal> n'est remplacé que par le575 l'archive alors qu'un <literal>%f</literal> n'est remplacé que par le 574 576 nom du fichier. (Le nom du chemin est relatif au répertoire de travail du 575 577 serveur, c'est-à-dire le répertoire des données du cluster.) … … 583 585 plateformes.) Après le remplacement des paramètres <literal>%p</literal> 584 586 et <literal>%f</literal>, la commande réellement exécutée peut ressembler 585 à ceci :587 à : 586 588 <programlisting>cp -i pg_xlog/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065 </dev/null 587 589 </programlisting> 588 Une commande similaire sera générée pour chaque nouveau fichier à archiver.590 Une commande similaire est produite pour chaque nouveau fichier à archiver. 589 591 </para> 590 592 … … 622 624 mais pas sur toutes. Si la commande choisie ne gère pas elle-même ce 623 625 cas, il convient d'ajouter une commande pour tester l'existence du fichier 624 d'archivage. Par exemple, quelque chose comme :626 d'archivage. Par exemple, quelque chose comme : 625 627 <programlisting>archive_command = 'test ! -f .../%f && cp %p .../%f'</programlisting> 626 628 fonctionne correctement sur la plupart des variantes Unix. … … 637 639 archivé tant que la cassette n'est pas changée. 638 640 Toute erreur ou requête à un opérateur humain doit être rapportée de façon 639 approprié pour que la situation puisse être résolue641 appropriée pour que la situation puisse être résolue 640 642 rapidement. Le répertoire <filename>pg_xlog/</filename> continue à se remplir 641 643 de fichiers de segment WAL jusqu'à la résolution de la situation. 642 644 (Si le système de fichiers contenant <filename>pg_xlog/</filename> se 643 remplit, <productname>PostgreSQL</productname> fera un arrêten mode PANIC.644 Aucune transaction précédente ne sera perdue mais la base de données sera645 indisponible le temps que vous retrouviezde l'espace.)645 remplit, <productname>PostgreSQL</productname> s'arrête en mode PANIC. 646 Aucune transaction antérieure n'est perdue mais la base de données est 647 indisponible le temps pour l'utilisateur de retrouver de l'espace.) 646 648 </para> 647 649 … … 701 703 <function>pg_switch_xlog</function>. Cela permet de s'assurer qu'une 702 704 transaction tout juste terminée est archivée aussi vite que possible. 703 D'autres 704 fonctions utilitaires relatives à la gestion des WAL sont disponibles dans 705 <xref linkend="functions-admin-backup-table"/>. 705 D'autres fonctions utilitaires relatives à la gestion des WAL sont 706 disponibles dans <xref linkend="functions-admin-backup-table"/>. 706 707 </para> 707 708 … … 713 714 l'exécution d'une de ces instructions, les journaux de transaction ne 714 715 contiennent pas d'informations suffisantes pour une récupération via les 715 archives mais la récupération après un arrêt brutal n'est pas affecté .716 Pour cette raison, <varname>archive_mode</varname> peut seulement être717 modifié au lancement du serveur. Néanmoins,716 archives mais la récupération après un arrêt brutal n'est pas affectée. 717 Pour cette raison, <varname>archive_mode</varname> ne peut être 718 modifié qu'au lancement du serveur. Néanmoins, 718 719 <varname>archive_command</varname> peut être modifié avec un 719 rechargement du fichier de configuration. Si vous souhaitezarrêter720 temporairement l'archivage, une façon de le faire est deplacer une720 rechargement du fichier de configuration. Pour arrêter 721 temporairement l'archivage, on peut placer une 721 722 chaîne vide (<literal>''</literal>) pour 722 <varname>archive_command</varname>. Les journaux de transaction s eront723 <varname>archive_command</varname>. Les journaux de transaction sont alors 723 724 accumulés dans <filename>pg_xlog/</filename> jusqu'au rétablissement 724 725 d'un paramètre <varname>archive_command</varname> fonctionnel. … … 768 769 <xref linkend="guc-checkpoint-completion-target"/>). Habituellement, 769 770 ce comportement est appréciable car il minimise l'impact du traitement 770 des requêtes. Si vous voulezcommencer la sauvegarde aussi rapidement771 que possible, exécutezla commande <command>CHECKPOINT</command> (qui772 fait un point de retournement aussi rapidementque possible), puis773 exécutezimmédiatement <function>pg_start_backup</function>. Le point774 de retournement de <function>pg_start_backup</function> n'auraplus775 grand chose à faire, et s'exécute radonc rapidement.771 des requêtes. Pour commencer la sauvegarde aussi rapidement 772 que possible, on exécute la commande <command>CHECKPOINT</command> (qui 773 déclenche un point de vérification dès que possible), puis 774 on exécute immédiatement <function>pg_start_backup</function>. Le point 775 de vérification de <function>pg_start_backup</function> n'a alors plus 776 grand chose à faire, et s'exécute donc rapidement. 776 777 </para> 777 778 </listitem> … … 841 842 alors que <varname>full_page_writes</varname> est désactivé, une perte de 842 843 performances entre <function>pg_start_backup</function> et 843 <function>pg_stop_backup</function> peut être constatée car 844 <varname>full_page_writes</varname> est réellement forcée lors du mode de844 <function>pg_stop_backup</function> peut être constatée car l'activation du 845 paramètre <varname>full_page_writes</varname> est forcée lors du mode de 845 846 sauvegarde.) Il convient toutefois de s'assurer que ces étapes sont 846 847 effectuées séquentiellement, sans chevauchement. Dans le cas contraire, la … … 884 885 système de fichiers et des segments WAL utilisés 885 886 pendant celle-ci (comme précisé dans le fichier d'historique des sauvegardes) 886 sont archivésde façon sûre,887 est archivée de façon sûre, 887 888 tous les segments WAL archivés de noms numériquement plus 888 889 petits ne sont plus nécessaires à la récupération de la sauvegarde du … … 1082 1083 Normalement, la récupération traite tous les segments WAL disponibles, 1083 1084 restaurant du coup la base de données à l'instant présent (ou aussi proche 1084 que possible, en fonction des segments WAL disponibles). Donc une1085 que possible, en fonction des segments WAL disponibles). Une 1085 1086 récupération normale se finit avec un message <quote>fichier non 1086 trouvé</quote>, le texte exact du message d'erreur dépendant d e votre1087 choix de <varname>restore_command</varname>. Vous pouvez aussi voir un1088 message d'erreur au début de la récupération d'un fichier nommé1089 comme<filename>00000001.history</filename>. Ceci est aussi normal et1090 n'indique par un problème dans les situations de récupération . Voir1087 trouvé</quote>, le texte exact du message d'erreur dépendant du 1088 choix de <varname>restore_command</varname>. Un message d'erreur au 1089 début de la récupération peut également apparaître concernant un fichier nommé 1090 dont le nom ressemble à <filename>00000001.history</filename>. Ceci est aussi normal et 1091 n'indique par un problème dans les situations de récupération habituelles. Voir 1091 1092 <xref linkend="backup-timelines"/> pour plus d'informations. 1092 1093 </para> 1093 1094 1094 1095 <para> 1095 Si vous voulez récupérer jusqu'à un moment précis (disons justeavant1096 que le DBA junior ait supprimé votre table principale), indiquezle1097 point d'arrêt requis dans <filename>recovery.conf</filename>. Vous pouvez1098 p réciser le point d'arrêt connu sous le nom de<quote>recovery1099 target</quote> (cible de récupération) soit par la date et l'heure1100 soitpar le dernier identifiant de transaction. Actuellement, seule1096 Pour récupérer à un moment précis (avant 1097 que le DBA junior n'ait supprimé la table principale), il suffit d'indiquer le 1098 point d'arrêt requis dans <filename>recovery.conf</filename>. Le 1099 point d'arrêt, aussi nommé <quote>recovery 1100 target</quote> (cible de récupération), peut être précisé par une 1101 combinaison date/heure ou par le dernier identifiant de transaction. Actuellement, seule 1101 1102 l'option date/heure est vraiment utilisable car il n'existe pas d'outils 1102 p our vous aider àidentifier avec précision l'identifiant de transaction1103 permettant d'identifier avec précision l'identifiant de transaction 1103 1104 à utiliser. 1104 1105 </para> … … 1115 1116 1116 1117 <para> 1117 Si la récupération découvreune corruption des données WAL,1118 Si la récupération fait face à une corruption des données WAL, 1118 1119 elle se termine à ce point et le serveur ne démarre pas. Dans un tel cas, 1119 1120 le processus de récupération peut alors être ré-exécuté à partir du début 1120 en précisant une <quote>cible de récupération</quote> a vant lepoint de1121 en précisant une <quote>cible de récupération</quote> antérieure au point de 1121 1122 récupération pour permettre à cette dernière de se terminer correctement. 1122 1123 Si la récupération échoue pour une raison externe (arrêt brutal du système 1123 1124 ou archive WAL devenue inaccessible), la récupération peut être 1124 simplement relancée. Elle redémarre alors pratiquement là où elle a échoué.1125 simplement relancée. Elle redémarre alors quasiment là où elle a échoué. 1125 1126 Le redémarrage de la restauration fonctionne comme les points de 1126 1127 contrôle du déroulement normal : le serveur force une écriture 1127 1128 régulière de son état sur les disques et actualise alors le fichier 1128 1129 <filename>pg_control</filename> pour indiquer que les données WAL déjà 1129 parcourues n'ont plus à être parcourus.1130 traitées n'ont plus à être parcourues. 1130 1131 </para> 1131 1132 … … 1137 1138 <filename>recovery.conf</filename> et s'appliquent uniquement pour la durée de la 1138 1139 récupération. Ils doivent être réinitialisés avant toute récupération 1139 ultérieure. Ils ne peuvent pas être modifiés une fois que la récupération a commencé.1140 ultérieure. Ils ne peuvent pas être modifiés après le démarrage de la récupération. 1140 1141 </para> 1141 1142 … … 1158 1159 cette information peut être utilisée pour tronquer l'archive au 1159 1160 minimum nécessaire pour supporter le redémarrage de la restauration 1160 en cours. <literal>%r</literal> sera seulement utilisédans le cas1161 d'une configuration avec un serveur en attente(voir <xref1161 en cours. <literal>%r</literal> n'est utilisé que dans le cas 1162 d'une configuration avec un serveur de secours (voir <xref 1162 1163 linkend="warm-standby"/>). 1163 1164 <literal>%%</literal> est utilisé pour écrire le … … 1167 1168 Il est impératif que la commande ne renvoie un code de sortie zéro 1168 1169 que si, et seulement si, elle a réussi. Des noms de fichiers absents 1169 de l'archive <emphasis>seront demandés</emphasis> ; elle1170 de l'archive <emphasis>seront demandés</emphasis> à la commande ; elle 1170 1171 doit renvoyer une valeur différente de zéro dans ce cas. 1171 1172 Exemples : … … 1220 1221 ou juste avant (<literal>false</literal>). Il s'applique à 1221 1222 <xref linkend="recovery-target-time"/> et 1222 <xref linkend="recovery-target-xid"/>, en fonction de celui qui est1223 <xref linkend="recovery-target-xid"/>, en fonction de celui qui est 1223 1224 indiqué pour cette récupération. Il indique si les transactions 1224 possédant l'instant cible exact de validation ou l'ID cible, respectivement,1225 d'instant ou ID cible de validation exact, respectivement, 1225 1226 sont incluses dans la récupération. La valeur par défaut est 1226 1227 <literal>true</literal>. … … 1239 1240 ligne temporelle en cours au moment de la sauvegarde. Ce paramètre 1240 1241 ne doit être configuré que 1241 danspour les situations de récupération complexes, dans lesquelles1242 pour les situations de récupération complexes, dans lesquelles 1242 1243 il est nécessaire de retourner à un état postérieur à une récupération 1243 1244 d'instantané. Voir la <xref linkend="backup-timelines"/> pour plus … … 1267 1268 </sect2> 1268 1269 1270 <!-- ICI --> 1269 1271 <sect2 id="backup-timelines"> 1270 1272 <title>Lignes temporelles (<foreignphrase>Timelines</foreignphrase>)</title> … … 1281 1283 La possibilité de restaurer la base de données à partir d'un instantané 1282 1284 crée une complexité digne des histoires de science-fiction traitant 1283 du voyage dans le temps et des univers parallèles. Dans l'historique 1285 du voyage dans le temps et des univers parallèles. 1286 </para> 1287 <para> 1288 Dans l'historique 1284 1289 original de la base de données, une table critique a peut-être été 1285 supprimée à 17h15 mardi soir, mais n'a pas réalisé son erreur jusqu'au1286 mercredi midi. Sans stress, la sauvegarde est récupérée1287 et restaurée jusqu'à 17h14 mardi soir. Tout est de nouveau1288 fonctionnel. Dans <emphasis>cette</emphasis> histoire de l'univers de la base de1290 supprimée à 17h15 mardi soir, mais personne n'a pas réalisé cette erreur 1291 avant mercredi midi. Sans stress, la sauvegarde est récupérée 1292 et restaurée dans l'état où elle se trouvait à 17h14 mardi soir. La base 1293 est fonctionnelle. Dans <emphasis>cette</emphasis> histoire de l'univers de la base de 1289 1294 données, la table n'a jamais été supprimée. Or, l'utilisateur 1290 1295 réalise peu après que ce n'était pas une si grande idée et veut 1291 revenir à quelque part lemercredi matin. Cela n'est pas possible,1296 revenir à un quelconque moment du mercredi matin. Cela n'est pas possible, 1292 1297 si, alors que la base de données est de nouveau fonctionnelle, elle 1293 1298 réutilise certaines séquences de fichiers WAL qui permettent de … … 1302 1307 <foreignphrase>timelines</foreignphrase>). Quand une récupération 1303 1308 d'archive est terminée, une nouvelle ligne temporelle est créée pour 1304 identifier la série d'enregistrements WAL généréeaprès cette1309 identifier la série d'enregistrements WAL produits après cette 1305 1310 restauration. Le numéro d'identifiant de la timeline est inclus dans le 1306 1311 nom des fichiers de segment WAL. De ce fait, une nouvelle timeline … … 1358 1363 Il est possible d'utiliser les capacités de sauvegarde de 1359 1364 <productname>PostgreSQL</productname> 1360 pour produire des sauvegardes autonome à chaud. Ce sont des1365 pour produire des sauvegardes autonomes à chaud. Ce sont des 1361 1366 sauvegardes qui ne peuvent pas être utilisées pour la récupération 1362 1367 à un instant donné, mais ce sont des sauvegardes qui sont typiquement 1363 plus rapide à faireet à restaurer que1364 <application>pg_dump</application>. (Elles sont aussi bien plus grosses1365 qu'une sauvegarde <application>pg_dump</application>, donc dans certains1366 cas l'avantage de la rapidité aura un coût important.)1368 plus rapide à obtenir et à restaurer que 1369 ceux issus de <application>pg_dump</application>. (Elles sont aussi bien 1370 plus volumineuses qu'un export <application>pg_dump</application>, il se 1371 peut donc que l'avantage de rapidité soit négatif.) 1367 1372 </para> 1368 1373 1369 1374 <para> 1370 Pour préparer des sauvegardes à chaud autonomes, configurez1371 <varname>archive_mode</varname> à <literal>on</literal>, et configurez1372 une <varname>archive_command</varname> qui réalise un archivage1373 seulement quandun <quote>fichier de bascule</quote> existe. Par1375 En vue d'effectuer des sauvegardes à chaud autonomes, on positionne 1376 <varname>archive_mode</varname> à <literal>on</literal>, et on configure 1377 <varname>archive_command</varname> de telle sorte que l'archivage ne soit 1378 réalisé que lorsqu'un <quote>fichier de bascule</quote> existe. Par 1374 1379 exemple : 1375 1380 <programlisting> 1376 1381 archive_command = 'test ! -f /var/lib/pgsql/backup_in_progress || cp -i %p /var/lib/pgsql/archive/%f < /dev/null' 1377 1382 </programlisting> 1378 Cette commande réalisera l'archivage quand 1379 <filename>/var/lib/pgsql/backup_in_progress</filename> existe, et sinon 1380 renverra silencieusement le code de statut zéro (permettant à 1383 Cette commande réalise l'archivage dès lors que 1384 <filename>/var/lib/pgsql/backup_in_progress</filename> existe. Dans le 1385 cas contraire, elle 1386 renvoie silencieusement le code de statut zéro (permettant à 1381 1387 <productname>PostgreSQL</productname> de recycler le journal de 1382 1388 transactions non désiré). … … 1397 1403 Le fichier de bascule, 1398 1404 <filename>/var/lib/pgsql/backup_in_progress</filename>, est créé en 1399 premier, activant l'archivage des journaux de transactions terminés.1405 premier, activant l'archivage des journaux de transactions pleins. 1400 1406 Après la sauvegarde, le fichier de bascule est supprimé. Les journaux 1401 1407 de transaction archivés sont ensuite ajoutés à la sauvegarde pour que … … 1409 1415 1410 1416 <para> 1411 Beaucoup d'administrateurs de bases de donnéeschoisissent d'utiliser1412 des scripts pour définir leur <varname>archive_command</varname>, d onc1413 leur <filename>postgresql.conf</filename> semble très simple :1417 Nombreux sont ceux qui choisissent d'utiliser 1418 des scripts pour définir leur <varname>archive_command</varname>, de 1419 sorte que leur <filename>postgresql.conf</filename> semble très simple : 1414 1420 <programlisting> 1415 1421 archive_command = 'local_backup_script.sh' 1416 1422 </programlisting> 1417 Utiliser un script séparé est conseillé à chaque fois qu e vous voulez1418 utiliser plus d'une commandepour le processus d'archivage.1423 Utiliser un script séparé est conseillé à chaque fois qu'il est envisagé 1424 d'utiliser plusieurs commandes pour le processus d'archivage. 1419 1425 Ainsi toute la complexité est gérée dans le script qui peut être 1420 1426 écrit dans un langage de scripts populaires comme 1421 1427 <application>bash</application> ou <application>perl</application>. 1422 Tout message écrit dans<literal>stderr</literal> à partir du script1428 Tout message écrit sur <literal>stderr</literal> à partir du script 1423 1429 apparaîtra dans les journaux applicatifs de la base de données, cela 1424 1430 permettant aux configurations complexes d'être diagnostiquées facilement … … 1426 1432 </para> 1427 1433 <para> 1428 Voici quelques exemples de besoins qui pourraient êtrerésolus dans1434 Quelques exemples de besoins résolus dans 1429 1435 un script : 1430 1436 <itemizedlist> 1431 1437 <listitem> 1432 1438 <para> 1433 Copier des données vers un stockage distant ;1439 copier des données vers un stockage distant ; 1434 1440 </para> 1435 1441 </listitem> 1436 1442 <listitem> 1437 1443 <para> 1438 Copier les journaux de transaction en groupe pour qu'ils soient1444 copier les journaux de transaction en groupe pour qu'ils soient 1439 1445 transférés toutes les trois heures plutôt qu'un à la fois ; 1440 1446 </para> … … 1442 1448 <listitem> 1443 1449 <para> 1444 S'interfacer avec d'autres outils de sauvegarde et de1450 s'interfacer avec d'autres outils de sauvegarde et de 1445 1451 récupération ; 1446 1452 </para> … … 1448 1454 <listitem> 1449 1455 <para> 1450 S'interfacer avec un outil de surveillance pour y renvoyer1456 s'interfacer avec un outil de surveillance pour y renvoyer 1451 1457 les erreurs. 1452 1458 </para> … … 1496 1502 sont tracées dans les WAL avec le chemin absolu et sont donc rejouées 1497 1503 en tant que créations de <foreignphrase>tablespace</foreignphrase> 1498 suivant le même chemin absolu. Ce ci1499 peut être indésirable si la traceest rejouée sur une autre machine.1500 Cela peut s'avérer dangereux même lorsque le journal est rejoué sur la1504 suivant le même chemin absolu. Cela n'est pas forcément souhaitable si 1505 le journal est rejouée sur une autre machine. 1506 De plus, cela peut s'avérer dangereux même lorsque le journal est rejoué sur la 1501 1507 même machine, mais dans un répertoire différent : la ré-exécution surcharge 1502 1508 toujours le contenu du <foreignphrase>tablespace</foreignphrase> original. … … 1511 1517 <para> 1512 1518 Il faut de plus garder à l'esprit que le format actuel des 1513 <acronym>WAL</acronym> est extrêmement difficile à gérercar il inclut1519 <acronym>WAL</acronym> est extrêmement volumineux car il inclut 1514 1520 de nombreuses images des pages disques. Ces images de page sont conçues 1515 pour supporter la récupération après un arrêt brutal . Il peut en effet1521 pour supporter la récupération après un arrêt brutal, puisqu'il peut 1516 1522 être nécessaire de corriger des pages disque partiellement écrites. 1517 1523 En fonction du matériel et des logiciels composant le système, … … 1522 1528 (lire les notes et avertissements dans <xref linkend="wal"/> avant 1523 1529 de le faire). Désactiver les images de page n'empêche pas l'utilisation des 1524 traces pour les opérations PITR. Un piste éventuelle de développement s1525 futur sconsiste à compresser les données des WAL archivés en supprimant les copies1530 traces pour les opérations PITR. Un piste éventuelle de développement 1531 futur consiste à compresser les données des WAL archivés en supprimant les copies 1526 1532 inutiles de pages même si <varname>full_page_writes</varname> est actif. Entre 1527 1533 temps, les administrateurs peuvent souhaiter réduire le nombre … … 1587 1593 <para> 1588 1594 L'archivage continu peut être utilisé pour créer une configuration de cluster 1589 de <firstterm>haute disponibilité</firstterm> (HA) avec un ou plusieurs1590 <firstterm>serveur sde secours</firstterm>, prêt(s) à prendre en main les1595 de <firstterm>haute disponibilité</firstterm> (HA) avec un (ou plusieurs) 1596 <firstterm>serveur(s) de secours</firstterm>, prêt(s) à prendre en main les 1591 1597 opérations en cas de défaillance du serveur principal. Cette fonctionnalité 1592 1598 est surtout connue sous le nom de … … 1602 1608 les fichiers WAL du serveur primaire. Aucune modification des tables 1603 1609 de la base n'est requise pour activer cette capacité. Elle a de ce fait 1604 un coût modique en terme d'administration supplémentaire en comparaison à1610 un coût modique en terme d'administration supplémentaire en comparaison avec 1605 1611 d'autres approches de réplication. Cette configuration a également un impact 1606 1612 relativement faible sur les performances du serveur principal. … … 1702 1708 écrit, le serveur de secours les lit. Il est impératif que des 1703 1709 archives WAL de serveurs primaires différents ne soient pas mélangées. 1704 L'archive n'est pas nécessairement large, si c'est seulement requis1705 parl'opération de standby.1710 L'archive n'est pas nécessairement large, si elle ne sert qu'à 1711 l'opération de standby. 1706 1712 </para> 1707 1713 … … 1744 1750 1745 1751 <para> 1746 Un exemple fonctionnel d 'un <varname>restore_command</varname> en1747 attente est fourni dans un module <filename>contrib</filename> appelé1752 Un exemple fonctionnel de <varname>restore_command</varname> 1753 d'attente est fourni dans un module <filename>contrib</filename> appelé 1748 1754 <application>pg_standby</application>. Cet exemple peut être étendu 1749 1755 si nécessaire pour supporter des configurations ou environnements … … 1753 1759 <para> 1754 1760 <productname>PostgreSQL</productname> ne fournit pas de logiciel 1755 qui permette d'identifier une panne du serveur principal et d'en 1756 notifier le serveur de secours. De nombreux outils de ce type existent 1757 et sont bien intégrés à d'autres aspects nécessaires à la réussite du 1761 système qui permette d'identifier une panne du serveur principal et d'en 1762 notifier le système et le serveur de bases de données de secours. 1763 De nombreux outils de ce type existent et sont bien intégrés incluant d'autres 1764 aspects nécessaires à la réussite du 1758 1765 <foreignphrase>failover</foreignphrase>, comme la migration d'adresse IP. 1759 1766 </para> … … 1766 1773 exécutant <varname>restore_command</varname> est du coup créé et meurt 1767 1774 pour chaque fichier. Il n'y a, de ce fait, pas de démon ou de processus 1768 serveur. Il n'est alorspas possible d'utiliser les signaux et un1775 serveur. Il n'est donc pas possible d'utiliser les signaux et un 1769 1776 gestionnaire de signal. Une notification plus permanente est requise pour 1770 1777 le déclenchement du <foreignphrase>failover</foreignphrase>. Il est … … 1776 1783 un <foreignphrase>failover</foreignphrase>. Un mécanisme de notification 1777 1784 tel que la création explicite d'un fichier déclencheur, quand cela est 1778 possible, est moins sourced'erreur.1785 possible, présente moins de risques d'erreur. 1779 1786 </para> 1780 1787 … … 1799 1806 <listitem> 1800 1807 <para> 1801 Configurer les serveurs principal et de secours de façon quasi identique, 1808 Préaparer des configurations des serveurs principal et de secours 1809 aussi proches que possible, 1802 1810 ce qui inclut deux copies identiques de <productname>PostgreSQL</productname>, 1803 1811 dans la même version. … … 1807 1815 <para> 1808 1816 Configurer l'archivage continu sur le serveur principal vers une archive locale 1809 située dans un répertoire du serveur de secours. S'assurer que les deux1810 paramètres <xref linkend="guc-archive-mode"/>, <xref 1811 linkend="guc-archive-command"/> et1817 située dans un répertoire du serveur de secours. S'assurer que les 1818 paramètres <xref linkend="guc-archive-mode"/>, 1819 <xref linkend="guc-archive-command"/> et 1812 1820 <xref linkend="guc-archive-timeout"/> sont correctement configurés 1813 1821 sur le serveur principal (voir <xref linkend="backup-archiving-wal"/>). … … 1837 1845 copié sur une cassette en même temps qu'il est lu pour la 1838 1846 récupération. De ce fait, un serveur de secours 1839 de haute disponibilité peut tourner simultanément1840 au stockage des fichiers à plus long terme en vue d'une récupération1841 après un désastre.1847 de haute disponibilité peut tourner en parallèle du 1848 stockage des fichiers en vue de besoins de reprise sur panne à plus long 1849 terme. 1842 1850 </para> 1843 1851 … … 1845 1853 Pour les tests, il est possible d'exécuter le serveur principal 1846 1854 et celui de secours sur le même système. Cela n'apporte aucune amélioration 1847 surla robustesse du système, et ne peut pas être présenté comme1855 à la robustesse du système, et ne peut pas être présenté comme 1848 1856 de la haute disponibilité. 1849 1857 </para> … … 1874 1882 (<foreignphrase>Shoot The Other Node In The Head</foreignphrase>), 1875 1883 permet d'éviter les situations où les deux systèmes pensent qu'ils sont 1876 le serveur principal, ce qui engendrera une certaine confusion et1877 conduir eà des pertes irrémédiables de données.1884 le serveur principal, ce qui engendrerait une certaine confusion et 1885 conduirait à des pertes irrémédiables de données. 1878 1886 </para> 1879 1887 … … 1894 1902 serveur de secours, un seul serveur est opérationnel. On parle alors 1895 1903 d'état dégénéré. L'ancien serveur de secours est 1896 devenu serveur principal, l'ancien serveur principal est arrêté 1897 et peut le rester. Il faut désormais recréer un serveur de secours, soit 1904 devenu serveur principal, mais l'ancien serveur principal est arrêté 1905 et peut le rester. Pour revenir au fonctionnement normal, il faut 1906 désormais recréer intégralement un serveur de secours, soit 1898 1907 sur l'ancien système principal, s'il peut redémarrer, soit sur un 1899 troisième , de préférence nouveau, système. Lorsque cela estréalisé, on1908 troisième système, de préférence nouveau. Cela réalisé, on 1900 1909 peut considérer que les deux serveurs ont échangé leurs rôles. 1901 1910 </para> … … 1904 1913 pour servir de sauvegarde au nouveau serveur principal le temps que le 1905 1914 serveur de secours devienne opérationnel. Toutefois, cela complique 1906 assurément la configuration du système et les processus opérationnels.1915 la configuration du système et des processus opérationnels. 1907 1916 </para> 1908 1917 1909 1918 <para> 1910 1919 La bascule entre le serveur principal et celui de secours peut être 1911 rapide, mais nécessite quelque temps pour repréparer le cluster de1920 rapide, mais nécessite quelques temps pour repréparer le cluster de 1912 1921 <foreignphrase>failover</foreignphrase>. Une bascule régulière 1913 est utile car elle permet l'arrêt régulier de chaque système ,1914 arrêt nécessaire pour maintenir la haute-disponiblité.1922 est utile car elle permet l'arrêt régulier de chaque système pour 1923 maintenance. 1915 1924 Cela permet également de tester les mécanismes de 1916 1925 <foreignphrase>failover</foreignphrase> pour s'assurer que cela … … 1936 1945 <function>pg_xlogfile_name_offset()</function> (voir à ce propos la 1937 1946 <xref linkend="functions-admin"/>) pour trouver le nom du fichier et 1938 l'exact décalage en octet dans celui-ci de la fin actuelle du WAL. Il 1947 l'exact décalage en octets de la fin courante du WAL à l'intérieur de 1948 celui-ci. Il 1939 1949 peut alors accéder directement au fichier WAL et copier les données 1940 1950 depuis la dernière fin connue des WAL jusqu'à l'actuelle vers le(s) … … 1947 1957 traiter avec l'ensemble des fichiers WAL. De ce fait, les serveurs de 1948 1958 secours ne peuvent pas, en fonctionnement normal, disposer des données 1949 copiées par incréments. Elles n e deviennent utilisablesque lorsque le1959 copiées par incréments. Elles n'ont d'intérêt que lorsque le 1950 1960 serveur principal subit une panne — le dernier fichier WAL partiel 1951 1961 est alors chargé dans le serveur de secours avant qu'il puisse démarrer. … … 1990 2000 restauration sur le serveur de secours à partir du dernier point de 1991 2001 redémarrage. Il n'est alors plus nécessaire de conserver les fichiers 1992 WAL précédant le point de redémarrage. En cas de restauration, elle sera 1993 plus rapide à partir d'une sauvegarde incrémentale qu'à partir de la 2002 WAL précédant le point de redémarrage. Si une restauration s'avère 2003 nécessaire, elle est plus rapide si elle est effectuée à partir d'une 2004 sauvegarde incrémentale qu'à partir de la 1994 2005 sauvegarde originale. 1995 2006 </para> … … 2045 2056 pour cela ; les méthodes de 2046 2057 sauvegarde au niveau système de fichiers ne fonctionnent évidemment pas. 2047 Un certain nombre de vérifications sont automatiquement effectuéespour2058 Un certain nombre de vérifications est automatiquement effectué pour 2048 2059 interdire l'utilisation d'un répertoire de données d'une version 2049 2060 incompatible. Il n'y a donc pas grand risque à lancer une mauvaise … … 2084 2095 se trouver sur le même ordinateur ou sur un autre. Une fois qu'il est 2085 2096 synchronisé avec le serveur maître (utilisant l'ancienne version de 2086 <productname>PostgreSQL</productname>), vous pouvez basculermaître et2087 esclave pour que l'esclave devienne le maître, puis arrêter l'ancien2088 serveur. Ce basculement se faire en quelques secondes pour une mise à2089 jour.2097 <productname>PostgreSQL</productname>), le maître et 2098 l'esclave peuvent être basculés pour que l'esclave devienne le maître. 2099 L'ancien serveur peut alors être arrêté. Ce basculement intervient en 2100 quelques secondes dans le cadre d'une mise à jour. 2090 2101 </para> 2091 2102 … … 2129 2140 répertoires d'installation différents au moment de la construction. (Ce 2130 2141 problème est rectifié pour <productname>PostgreSQL</productname> 8.0 et 2131 suivantes tant que vous déplacez ensembletous les sous-répertoires2132 contenant des fichiers installées ; par exemple si2142 suivantes tant que tous les sous-répertoires 2143 contenant des fichiers installées sont déplacés ensemble ; par exemple si 2133 2144 <filename>/usr/local/postgres/bin/</filename> va dans 2134 2145 <filename>/usr/local/postgres.old/bin/</filename>, alors

