| 466 | | Comme avec la technique de sauvegarde standard du système de fichiers, |
|---|
| 467 | | cette méthode supporte la restauration d'un groupe de bases de données |
|---|
| 468 | | complet, pas un sous-ensemble. De plus, il requiert beaucoup d'espace |
|---|
| 469 | | d'archivage : la sauvegarde de base peut être légère mais un système |
|---|
| 470 | | très utilisé générera beaucoup de mégaoctets de trafic WAL qui seront à |
|---|
| 471 | | archiver. Malgré tout, c'est la technique de sauvegarde préférée dans |
|---|
| 472 | | beaucoup de situations où la haute fiabilité est nécessaire. |
|---|
| 473 | | </para> |
|---|
| 474 | | |
|---|
| 475 | | <para> |
|---|
| 476 | | Pour récupérer avec succès suite à l'utilisation de l'archivage continu |
|---|
| 477 | | (aussi appelé sauvegarde à chaud par certains vendeurs de SGBD), |
|---|
| 478 | | vous avez besoin d'une séquence continue de fichiers WAL archivés qui |
|---|
| 479 | | s'étendent au moins jusqu'au point de départ de votre sauvegarde. Pour |
|---|
| 480 | | commencer, vous devriez configurer et tester votre procédure d'archivage |
|---|
| 481 | | des journaux WAL <emphasis>avant</emphasis> de faire votre première sauvegarde de |
|---|
| 482 | | base. Il nous faut donc commencer par vous présenter les mécanismes |
|---|
| | 465 | Tout comme la technique de sauvegarde standard du système de fichiers, |
|---|
| | 466 | cette méthode ne supporte que la restauration d'un cluster de bases de données |
|---|
| | 467 | complet, pas d'un sous-ensemble. De plus, un volumineux espace |
|---|
| | 468 | d'archivage est requis : la sauvegarde de la base peut être |
|---|
| | 469 | volumineuse et un système |
|---|
| | 470 | très utilisé engendre un trafic WAL à archiver de plusieurs Mo. Malgré tout, |
|---|
| | 471 | c'est la technique de sauvegarde préférée dans |
|---|
| | 472 | de nombreuses situations où une haute fiabilité est requise. |
|---|
| | 473 | </para> |
|---|
| | 474 | |
|---|
| | 475 | <para> |
|---|
| | 476 | Une récupération fructueuse à partir de l'archivage continu |
|---|
| | 477 | (aussi appelé sauvegarde à chaud par certains vendeurs de SGBD) nécessite |
|---|
| | 478 | une séquence ininterrompue de fichiers WAL archivés qui |
|---|
| | 479 | s'étend au moins jusqu'au point de départ de la sauvegarde. Pour |
|---|
| | 480 | commencer, il faut configurer et tester la procédure d'archivage |
|---|
| | 481 | des journaux WAL <emphasis>avant</emphasis> d'effectuer la première sauvegarde de |
|---|
| | 482 | base. C'est pourquoi la suite du document commence par présenter les mécanismes |
|---|
| 490 | | Dans un sens abstrait, un système <productname>PostgreSQL</productname> fonctionnel |
|---|
| 491 | | produit une séquence indéfiniment longue d'enregistrements WAL. Le système |
|---|
| 492 | | divise physiquement cette séquence en <firstterm>fichiers segment</firstterm> |
|---|
| 493 | | WAL, qui font normalement 16 Mo chaque (bien que la taille puisse |
|---|
| | 490 | Au sens abstrait, un système <productname>PostgreSQL</productname> fonctionnel |
|---|
| | 491 | produit une séquence infinie d'enregistrements WAL. Le système |
|---|
| | 492 | divise physiquement cette séquence en <firstterm>fichiers de segment</firstterm> |
|---|
| | 493 | WAL de 16 Mo chacun (en génral, mais cette taille peut |
|---|
| 495 | | fichiers segment se voient donnés des noms numériques pour refléter leur |
|---|
| 496 | | position dans la séquence abstraite des WAL. Lorsque le système n'utilise |
|---|
| 497 | | pas l'archivage des WAL, il crée seulement quelques fichiers segment, puis |
|---|
| 498 | | les <quote>recycle</quote> en renommant les fichiers segment devenus inutiles. |
|---|
| 499 | | Il est supposé qu'un fichier segment dont le contenu précède le |
|---|
| 500 | | dernier point de vérification n'a plus d'intérêt et peut être recyclé. |
|---|
| 501 | | </para> |
|---|
| 502 | | |
|---|
| 503 | | <para> |
|---|
| 504 | | Lors de l'archivage des données WAL, nous voulons capturer le contenu de |
|---|
| 505 | | chaque fichier segment une fois qu'il est rempli et sauvegarder les |
|---|
| 506 | | données quelque part avant que le fichier segment ne soit recyclé pour |
|---|
| 507 | | être réutilisé. Suivant l'application et le matériel disponible, |
|---|
| 508 | | <quote>sauvegarder les données quelque part</quote> peut se faire de plusieurs |
|---|
| 509 | | façons : nous pouvons copier les fichiers segment dans un répertoire |
|---|
| 510 | | NFS monté sur une autre machine, les écrire sur une cartouche (en vous |
|---|
| 511 | | assurant que vous avez un moyen de restaurer le fichier avec son nom |
|---|
| 512 | | d'origine) ou le grouper pour les graver sur un CD, ou encore autre chose. |
|---|
| | 495 | fichiers de segment reçoivent des noms numériques pour refléter leur |
|---|
| | 496 | position dans la séquence abstraite des WAL. |
|---|
| | 497 | </para> |
|---|
| | 498 | <para> |
|---|
| | 499 | Lorsque le système n'utilise |
|---|
| | 500 | pas l'archivage des WAL, il ne crée que quelques fichiers de segment, |
|---|
| | 501 | qu'il <quote>recycle</quote> en renommant les fichiers de segment devenus inutiles. |
|---|
| | 502 | Un fichier segment dont le contenu précède le |
|---|
| | 503 | dernier point de vérification est supposé inutile et peut être recyclé. |
|---|
| | 504 | </para> |
|---|
| | 505 | |
|---|
| | 506 | <para> |
|---|
| | 507 | Lors de l'archivage des données WAL, le contenu de |
|---|
| | 508 | chaque fichier de segment doit être capturé dès qu'il est rempli pour |
|---|
| | 509 | sauvegarder les données ailleurs avant son recyclage. |
|---|
| | 510 | En fonction de l'application et de matériel disponible, |
|---|
| | 511 | <quote>sauvegarder les données ailleurs</quote> peut se faire de plusieurs |
|---|
| | 512 | façons : les fichiers de segment peuvent être copiés dans un répertoire |
|---|
| | 513 | NFS monté sur une autre machine, être écrits sur une cartouche (après |
|---|
| | 514 | s'être assuré que le fichier peut être restauré avec son nom |
|---|
| | 515 | d'origine) ou être groupés pour gravage sur un CD, ou tout à fait autre chose. |
|---|
| 516 | | <productname>PostgreSQL</productname> vous laisse spécifier une commande |
|---|
| 517 | | shell à exécuter pour copier le fichier segment rempli là où vous le |
|---|
| 518 | | souhaitez. La commande pourrait être aussi simple qu'un |
|---|
| 519 | | <literal>cp</literal> ou il pourrait impliquer un shell complexe — |
|---|
| 520 | | à vous de voir. |
|---|
| 521 | | </para> |
|---|
| 522 | | |
|---|
| 523 | | <para> |
|---|
| 524 | | La commande shell à utiliser est spécifiée par le paramètre de |
|---|
| 525 | | configuration <xref linkend="guc-archive-command"/> qui, en pratique, sera |
|---|
| | 519 | <productname>PostgreSQL</productname> permet de préciser la commande |
|---|
| | 520 | shell à exécuter pour copier le fichier de segment rempli à l'endroit |
|---|
| | 521 | désiré. La commande peut être aussi simple qu'un |
|---|
| | 522 | <literal>cp</literal> ou impliquer un shell complexe — |
|---|
| | 523 | à l'utilisateur de voir. |
|---|
| | 524 | </para> |
|---|
| | 525 | |
|---|
| | 526 | <para> |
|---|
| | 527 | La commande shell à utiliser est indiquée à l'aide du paramètre de |
|---|
| | 528 | configuration <xref linkend="guc-archive-command"/> qui, en pratique, est |
|---|
| 542 | | La commande d'archivage sera exécutée en tant qu'utilisateur |
|---|
| 543 | | propriétaire du serveur <productname>PostgreSQL</productname>. Comme la série de |
|---|
| 544 | | fichiers WAL en cours d'archivage contient réellement tout ce qui se |
|---|
| 545 | | trouve dans votre base de données, vous vous assurerez que les |
|---|
| 546 | | données archivées sont protégées des autres utilisateurs ; par |
|---|
| 547 | | exemple, si les archives sont stockées dans un répertoire où se trouvent |
|---|
| 548 | | des droits de lecture pour le groupe ou pour les autres. |
|---|
| 549 | | </para> |
|---|
| 550 | | |
|---|
| 551 | | <para> |
|---|
| 552 | | Il est important que la commande d'archivage renvoie le code de sortie |
|---|
| 553 | | zéro si et seulement si l'exécution a réussi. En obtenant un résultat |
|---|
| 554 | | zéro, <productname>PostgreSQL</productname> supposera que le fichier segment WAL a |
|---|
| | 546 | La commande d'archivage est exécutée sous l'identité de l'utilisateur |
|---|
| | 547 | propriétaire du serveur <productname>PostgreSQL</productname>. La série de |
|---|
| | 548 | fichiers WAL en cours d'archivage contient absolument tout ce qui se |
|---|
| | 549 | trouve dans la base de données, il convient donc de s'assurerer que les |
|---|
| | 550 | données archivées sont protégées des autres utilisateurs ; on peut, |
|---|
| | 551 | par exemple, archiver dans un répertoire sur lequel les droits de lecture |
|---|
| | 552 | ne sont positionnés ni pour le groupe ni pour le reste du monde. |
|---|
| | 553 | </para> |
|---|
| | 554 | |
|---|
| | 555 | <para> |
|---|
| | 556 | Il est important que la commande d'archivage ne renvoie le code de sortie |
|---|
| | 557 | zéro que si, et seulement si, l'exécution a réussi. En obtenant un résultat |
|---|
| | 558 | zéro, <productname>PostgreSQL</productname> suppose que le fichier segment WAL a |
|---|
| 558 | | essaiera périodiquement jusqu'à ce qu'il y arrive. |
|---|
| 559 | | </para> |
|---|
| 560 | | |
|---|
| 561 | | <para> |
|---|
| 562 | | La commande d'archivage devrait être généralement conçue pour refuser |
|---|
| 563 | | d'écraser tout fichier archive déjà existant. Ceci est une fonctionnalité |
|---|
| 564 | | de sécurité importante pour préserver l'intégrité de votre archive dans le |
|---|
| | 562 | essaie alors périodiquement jusqu'à la réussite de l'archivage. |
|---|
| | 563 | </para> |
|---|
| | 564 | |
|---|
| | 565 | <para> |
|---|
| | 566 | La commande d'archivage doit en général être conçue pour refuser |
|---|
| | 567 | d'écraser tout fichier archive déjà existant. C'est une fonctionnalité |
|---|
| | 568 | de sécurité importante pour préserver l'intégrité de l'archive dans le |
|---|
| 575 | | fonctionne correctement sur la plupart des variantes Unix. |
|---|
| 576 | | </para> |
|---|
| 577 | | |
|---|
| 578 | | <para> |
|---|
| 579 | | Lors de la conception de votre configuration d'archivage, considérez ce |
|---|
| 580 | | qui se passerait si la commande d'archivage échouait de façon répétée parce |
|---|
| 581 | | que certains aspects demanderaient une intervention de l'opérateur ou |
|---|
| 582 | | à cause d'un manque d'espace dans le répertoire d'archivage. Par exemple, |
|---|
| 583 | | ceci pourrait arriver si vous écrivez sur une cartouche sans changeur |
|---|
| 584 | | automatique ; quand la cartouche est remplie, rien ne peut être |
|---|
| 585 | | archivé tant que la cassette n'est pas changée. Vous devez vous assurer |
|---|
| 586 | | que toute erreur ou requête à un opérateur humain est rapportée de façon |
|---|
| 587 | | approprié pour que la situation puisse être résolue relativement |
|---|
| 588 | | rapidement. Le répertoire <filename>pg_xlog/</filename> continuera à se remplir |
|---|
| 589 | | de fichiers segment WAL jusqu'à la résolution de la situation. |
|---|
| | 580 | fonctionne, par exemple, correctement sur la plupart des variantes Unix. |
|---|
| | 581 | </para> |
|---|
| | 582 | |
|---|
| | 583 | <para> |
|---|
| | 584 | Lors de la conception de la configuration d'archivage, il faut |
|---|
| | 585 | considérer ce qui arrive si la commande d'archivage échoue de façon répétée parce |
|---|
| | 586 | que certains aspects demandent une intervention de l'opérateur ou |
|---|
| | 587 | par manque d'espace dans le répertoire d'archivage. |
|---|
| | 588 | Ceci peut arriver, par exemple, lors de l'écriture sur une cartouche sans changeur |
|---|
| | 589 | automatique ; quand la cartouche est pleine, rien ne peut être |
|---|
| | 590 | archivé tant que la cassette n'est pas changée. |
|---|
| | 591 | Toute erreur ou requête à un opérateur humain doit être rapportée de façon |
|---|
| | 592 | approprié pour que la situation puisse être résolue |
|---|
| | 593 | rapidement. Le répertoire <filename>pg_xlog/</filename> continue à se remplir |
|---|
| | 594 | de fichiers de segment WAL jusqu'à la résolution de la situation. |
|---|
| 597 | | quantité de données qui pourrait être perdue va croître. Cela signifie |
|---|
| 598 | | aussi que le répertoire <filename>pg_xlog/</filename> contiendra un grand nombre |
|---|
| 599 | | de fichiers segment non archivés, qui finiront éventuellement par |
|---|
| 600 | | dépasser l'espace disque disponible. Il vous est conseillé de surveiller |
|---|
| 601 | | le processus d'archivage pour vous assurer que tout fonctionne |
|---|
| | 602 | quantité de données qui peut être perdue croît. Cela signifie |
|---|
| | 603 | aussi que le répertoire <filename>pg_xlog/</filename> contiend un grand nombre |
|---|
| | 604 | de fichiers segment non archivés, qui peuvent finir par |
|---|
| | 605 | dépasser l'espace disque disponible. Il est conseillé de surveiller |
|---|
| | 606 | le processus d'archivage pour s'assurer que tout fonctionne |
|---|
| 606 | | En écrivant votre commande d'archivage, vous devez vous assurer que les |
|---|
| 607 | | noms de fichier à archiver auront 64 caractères maximum et peuvent |
|---|
| 608 | | contenir toute combinaison de lettres ASCII, de chiffres et de points. |
|---|
| 609 | | Il n'est pas nécessaire de rappeler le chemin complet original |
|---|
| | 611 | Lors de l'écriture de la commande d'archivage, il faut garder à l'esprit que les |
|---|
| | 612 | noms de fichier à archiver peuvent contenir jusqu'à 64 caractères et |
|---|
| | 613 | être composés de toute combinaison de lettres ASCII, de chiffres et de points. |
|---|
| | 614 | Il n'est pas nécessaire de retenir le chemin complet original |
|---|
| 620 | | <filename>pg_ident.conf</filename>) car ceux-ci sont édités manuellement plutôt |
|---|
| 621 | | qu'au travers d'opérations SQL. Vous pourriez souhaiter conserver les |
|---|
| 622 | | fichiers de configuration à un endroit où ils seront sauvegardés avec vos |
|---|
| 623 | | procédures standards de sauvegarde du système de fichiers. Voir la |
|---|
| | 625 | <filename>pg_ident.conf</filename>) car ceux-ci sont édités manuellement |
|---|
| | 626 | et non au travers d'opérations SQL. Il est souhaitable de conserver les |
|---|
| | 627 | fichiers de configuration à un endroit où ils sont sauvegardés par les |
|---|
| | 628 | procédures standard de sauvegarde du système de fichiers. Voir la |
|---|
| 629 | | La commande d'archivage est seulement appelée sur les segments WAL complets. |
|---|
| 630 | | Du coup, si votre serveur génère peu de trafic WAL (ou qu'il y a des périodes |
|---|
| 631 | | de calme où le trafic WAL est léger), il pourrait y avoir une longue période |
|---|
| | 634 | La commande d'archivage n'est appelée que sur les segments WAL complets. |
|---|
| | 635 | Du coup, si le serveur engendre peu de trafic WAL (ou qu'il y a des périodes |
|---|
| | 636 | de calme où le trafic WAL est léger), il peut y avoir une longue période |
|---|
| 673 | | <firstterm>label de sauvegarde</firstterm> nommé <filename>backup_label</filename> dans |
|---|
| 674 | | le répertoire du groupe avec des informations sur votre sauvegarde. |
|---|
| 675 | | </para> |
|---|
| 676 | | |
|---|
| 677 | | <para> |
|---|
| 678 | | Peu importe la base de données à laquelle vous vous connectez pour lancer |
|---|
| 679 | | cette commande. Vous pouvez ignorer le résultat renvoyé par la |
|---|
| 680 | | fonction mais, si elle rapporte une erreur, gérez-la avant de |
|---|
| 681 | | continuer. |
|---|
| 682 | | </para> |
|---|
| 683 | | </listitem> |
|---|
| 684 | | <listitem> |
|---|
| 685 | | <para> |
|---|
| 686 | | Lancez la sauvegarde en utilisant n'importe quel outil de sauvegarde du |
|---|
| 687 | | système de fichiers comme <application>tar</application> ou <application>cpio</application>. Il |
|---|
| | 678 | <firstterm>de label de sauvegarde</firstterm> nommé |
|---|
| | 679 | <filename>backup_label</filename> dans |
|---|
| | 680 | le répertoire du cluster. Ce fichier contient les informations de la sauvegarde. |
|---|
| | 681 | </para> |
|---|
| | 682 | |
|---|
| | 683 | <para> |
|---|
| | 684 | La base de données de connexion utilisée pour lancer |
|---|
| | 685 | cette commande n'a aucune importance. Le résultat de la fonction peut |
|---|
| | 686 | être ignoré, mais il faut gérer l'erreur éventuelle avant |
|---|
| | 687 | de continuer. |
|---|
| | 688 | </para> |
|---|
| | 689 | </listitem> |
|---|
| | 690 | <listitem> |
|---|
| | 691 | <para> |
|---|
| | 692 | Lancer la sauvegarde à l'aide de n'importe quel outil de sauvegarde du |
|---|
| | 693 | système de fichiers, tel <application>tar</application> ou |
|---|
| | 694 | <application>cpio</application>. Il |
|---|
| 708 | | terminer la sauvegarde. L'archivage de ces fichiers survient automatiquement |
|---|
| 709 | | car vous avez déjà configuré <varname>archive_command</varname>. Dans de |
|---|
| 710 | | nombreux cas, ceci arrive assez rapidement mais il est conseillé de |
|---|
| 711 | | surveiller votre système d'archivage pour vous assurer qu'il s'effectue |
|---|
| 712 | | correctement et que vous avez une sauvegarde valide. |
|---|
| | 715 | terminer la sauvegarde. L'archivage de ces fichiers intervient automatiquement |
|---|
| | 716 | car <varname>archive_command</varname> est déjà configuré. Dans de |
|---|
| | 717 | nombreux cas, c'est assez rapide mais il est conseillé de |
|---|
| | 718 | surveiller le système d'archivage pour s'assurer que celui-ci s'effectue |
|---|
| | 719 | correctement et que la sauvegarde est valide. |
|---|