| 729 | | copier changent lors de la copie. Cette situation est normale, ce n'est pas |
|---|
| 730 | | une erreur, lors de la création de la sauvegarde de base d'une base de |
|---|
| 731 | | données active ; vous devez donc vous assurer que vous pouvez |
|---|
| 732 | | distinguer les messages de cette sorte des autres messages. Par exemple, |
|---|
| 733 | | certaines versions de <application>rsync</application> renvoient un code de sortie |
|---|
| 734 | | séparé pour des <quote>fichiers source disparus</quote>, et vous pouvez écrire |
|---|
| 735 | | un script qui accepte ce code de sortie comme un cas normal. De plus, |
|---|
| 736 | | certaines versions de GNU <application>tar</application> considèrent que la modification |
|---|
| | 728 | copier sont modifiés au cours de la copie. Cette situation, normale lors |
|---|
| | 729 | de la sauvegarde d'une base active, ne doit pas être considérée comme |
|---|
| | 730 | une erreur ; il suffit de s'assurer que ces messages peuvent être |
|---|
| | 731 | distingués des autres messages. |
|---|
| | 732 | Certaines versions de <application>rsync</application>, par exemple, |
|---|
| | 733 | renvoient un code de sortie |
|---|
| | 734 | distinct en cas de <quote>disparition de fichiers source</quote>. Il est |
|---|
| | 735 | possible d'écrire un script qui considère ce code de sortie comme normal. |
|---|
| | 736 | De plus, certaines versions de <application>GNU tar</application> |
|---|
| | 737 | considèrent que la modification |
|---|
| 748 | | délai de quelques minutes ne posera pas de problème. Néanmoins, si vous exécutez |
|---|
| 749 | | normalement le serveur en désactivant <varname>full_page_writes</varname>, vous |
|---|
| 750 | | pouvez noter une perte de performances entre <function>pg_start_backup</function> |
|---|
| 751 | | et <function>pg_stop_backup</function>. Vous devez vous assurer que ces |
|---|
| 752 | | opérations de sauvegarde sont effectuées en séquence sans croisement possible. |
|---|
| 753 | | Dans le ca contraire, vous invaliderez la sauvegarde. |
|---|
| 754 | | </para> |
|---|
| 755 | | |
|---|
| 756 | | <para> |
|---|
| 757 | | Assurez-vous que votre sauvegarde inclut tous les fichiers du répertoire |
|---|
| 758 | | du groupe de bases de données (c'est-à-dire |
|---|
| 759 | | <filename>/usr/local/pgsql/data</filename>). Si vous utilisez des espaces logiques |
|---|
| 760 | | qui ne se trouvent pas dans ce répertoire, faites attention à bien les |
|---|
| 761 | | inclure (et assurez-vous que votre sauvegarde archive les liens |
|---|
| 762 | | symboliques comme des liens, sinon la restauration posera problème pour |
|---|
| 763 | | les espaces logiques). |
|---|
| 764 | | </para> |
|---|
| 765 | | |
|---|
| 766 | | <para> |
|---|
| 767 | | Néanmoins, vous devriez omettre de sauvegarder les fichiers du |
|---|
| 768 | | sous-répertoire <filename>pg_xlog/</filename> contenu dans le répertoire du |
|---|
| 769 | | groupe. Cette petite complication est intéressante parce qu'elle réduit le |
|---|
| 770 | | risque d'erreurs lors de la restauration. Ceci est facile à arranger si |
|---|
| 771 | | <filename>pg_xlog/</filename> est un lien symbolique pointant quelque part à |
|---|
| 772 | | l'extérieur du répertoire du groupe, ce qui est une configuration commune |
|---|
| 773 | | pour des raisons de performance. |
|---|
| 774 | | </para> |
|---|
| 775 | | |
|---|
| 776 | | <para> |
|---|
| 777 | | Pour utiliser cette sauvegarde, vous aurez besoin de conserver les |
|---|
| 778 | | fichiers segments WAL générés pendant ou après le lancement de la |
|---|
| 779 | | sauvegarde. Pour vous aider dans ce travail, la fonction |
|---|
| 780 | | <function>pg_stop_backup</function> crée un <firstterm>fichier historique de la |
|---|
| 781 | | sauvegarde</firstterm> qui est immédiatement stocké dans l'aire des archives WAL. |
|---|
| | 750 | délai de quelques minutes ne pose pas de problème. Néanmoins, si le |
|---|
| | 751 | serveur est normalement utilisé alors que |
|---|
| | 752 | <varname>full_page_writes</varname> est désactivé, une perte de |
|---|
| | 753 | performances entre <function>pg_start_backup</function> |
|---|
| | 754 | et <function>pg_stop_backup</function> peut être constatée. Il convient |
|---|
| | 755 | toutefois de s'assurer que les opérations de sauvegarde sont effectuées |
|---|
| | 756 | séquentiellement, sans chevauchement. Dans le ca contraire, la |
|---|
| | 757 | sauvegarde est invalidée. |
|---|
| | 758 | </para> |
|---|
| | 759 | |
|---|
| | 760 | <para> |
|---|
| | 761 | La sauvegarde doit inclure tous les fichiers du répertoire |
|---|
| | 762 | du groupe de bases de données |
|---|
| | 763 | (<filename>/usr/local/pgsql/data</filename>, par exemple). Si des |
|---|
| | 764 | <foreignphrase>tablespace</foreignphrase> |
|---|
| | 765 | qui ne se trouvent pas dans ce répertoire sont utilisés, il ne faut pas |
|---|
| | 766 | oublier de les inclure (et s'assurer également que la sauvegarde archive les liens |
|---|
| | 767 | symboliques comme des liens, sans quoi la restauration des |
|---|
| | 768 | <foreignphrase>tablespace</foreignphrase> sera problématique). |
|---|
| | 769 | </para> |
|---|
| | 770 | |
|---|
| | 771 | <para> |
|---|
| | 772 | Néanmoins, les fichiers du sous-répertoire <filename>pg_xlog/</filename> |
|---|
| | 773 | contenu dans le répertoire du cluster peuvent être omis. Cette petite |
|---|
| | 774 | complication permet de réduire le risque d'erreurs lors de la restauration. |
|---|
| | 775 | C'est facile à réaliser si <filename>pg_xlog/</filename> est un lien |
|---|
| | 776 | symbolique vers quelque endroit extérieur au répertoire du cluster, |
|---|
| | 777 | ce qui est toutefois une configuration courante, pour des raisons de performance. |
|---|
| | 778 | </para> |
|---|
| | 779 | |
|---|
| | 780 | <para> |
|---|
| | 781 | La sauvegarde n'est utilisable que si les fichiers de segment WAL |
|---|
| | 782 | engendrés pendant ou après cette sauvegarde sont préservés. |
|---|
| | 783 | Pour faciliter cela, la fonction |
|---|
| | 784 | <function>pg_stop_backup</function> crée un <firstterm>fichier d'historique de la |
|---|
| | 785 | sauvegarde</firstterm> immédiatement stocké dans la zone d'archivage des WAL. |
|---|
| 788 | | WAL et peut être habituellement ignorée). Une fois que vous avez archivé de |
|---|
| 789 | | façon sûre la sauvegarde du système de fichiers et les segments WAL utilisés |
|---|
| 790 | | pendant la sauvegarde (comme spécifié dans le fichier d'historique des |
|---|
| 791 | | sauvegardes), tous les segments WAL archivés avec des noms numériquement plus |
|---|
| 792 | | petits ne sont plus nécessaires pour la récupération de la sauvegarde du |
|---|
| 793 | | système de fichiers et pourraient être supprimés. Néanmoins, vous devriez |
|---|
| 794 | | penser à conserver plusieurs ensembles de sauvegarde pour être absolument |
|---|
| 795 | | certain de pouvoir récupérer vos données. |
|---|
| | 792 | WAL et peut en général être ignoré). Une fois que la sauvegarde du |
|---|
| | 793 | système de fichiers et des segments WAL utilisés |
|---|
| | 794 | pendant celle-ci (comme précisé dans le fichier d'historique des sauvegardes) |
|---|
| | 795 | sont archivés de façon sûre, |
|---|
| | 796 | tous les segments WAL archivés de noms numériquement plus |
|---|
| | 797 | petits ne sont plus nécessaires à la récupération de la sauvegarde du |
|---|
| | 798 | système de fichiers et peuvent être supprimés. Toutefois, il est |
|---|
| | 799 | préférable de conserver plusieurs jeux de sauvegarde pour être absolument |
|---|
| | 800 | certain de pouvoir récupérer les données. |
|---|
| 800 | | contient le label que vous avez donné à <function>pg_start_backup</function>, |
|---|
| 801 | | ainsi que l'heure de début et de fin, et les segments WAL de la sauvegarde. |
|---|
| 802 | | Si vous utilisez le label pour identifier où le fichier de sauvegarde associé |
|---|
| 803 | | est conservé, alors le fichier historique archivé est suffisant pour vous |
|---|
| 804 | | dire quel fichier de sauvegarde restaurer, si vous en avez besoin. |
|---|
| 805 | | </para> |
|---|
| 806 | | |
|---|
| 807 | | <para> |
|---|
| 808 | | Comme vous devez conserver tous les fichiers WAL archivés depuis votre |
|---|
| | 805 | contient le label passé à <function>pg_start_backup</function>, |
|---|
| | 806 | l'heure et les segments WAL de début et de fin de la sauvegarde. |
|---|
| | 807 | Si le label est utilisé pour identifier l'endroit où le fichier de sauvegarde associé |
|---|
| | 808 | est conservé, alors le fichier d'historique archivé est suffisant pour |
|---|
| | 809 | savoir quel fichier de sauvegarde restaurer, en cas de besoin. |
|---|
| | 810 | </para> |
|---|
| | 811 | |
|---|
| | 812 | <para> |
|---|
| | 813 | Puisqu'il faut conserver tous les fichiers WAL archivés depuis la |
|---|
| 821 | | <filename>backup_label</filename> dans le répertoire du groupe de bases de données |
|---|
| 822 | | qui est ensuite supprimé de nouveau par <function>pg_stop_backup</function>. Ce |
|---|
| 823 | | fichier sera bien sûr archivé comme faisant parti du fichier de |
|---|
| 824 | | sauvegarde. Le fichier label de la sauvegarde inclut la chaîne label que |
|---|
| 825 | | vous avez donné à <function>pg_start_backup</function>, ainsi que l'heure à |
|---|
| | 826 | <filename>backup_label</filename> dans le répertoire du cluster de bases |
|---|
| | 827 | de données. Ce fichier est ensuite supprimé par |
|---|
| | 828 | <function>pg_stop_backup</function>. Ce fichier est bien sûr archivé |
|---|
| | 829 | comme faisant parti du fichier de |
|---|
| | 830 | sauvegarde. Le fichier de label de la sauvegarde inclut la chaîne de label |
|---|
| | 831 | passée à <function>pg_start_backup</function>, l'heure à |
|---|
| 834 | | arrêté. Dans ce cas, vous ne pouvez évidemment pas utiliser |
|---|
| 835 | | <function>pg_start_backup</function> ou <function>pg_stop_backup</function> et vous serez |
|---|
| 836 | | donc contraint à garder trace vous-même des fichiers de sauvegarde et de |
|---|
| 837 | | jusqu'où vont les fichiers WAL associés. Il est généralement mieux de |
|---|
| 838 | | suivre la procédure d'archivage continu ci-dessus. |
|---|
| | 840 | arrêté. Dans ce cas, <function>pg_start_backup</function> et |
|---|
| | 841 | <function>pg_stop_backup</function> ne peuvent évidemment pas être |
|---|
| | 842 | utilisés. L'utilisateur doit alors se débrouiller pour identifier les |
|---|
| | 843 | fichiers de sauvegarde et déterminer jusqu'où remonter avec les fichiers |
|---|
| | 844 | WAL associés. Il est généralement préférable de |
|---|
| | 845 | suivre la procédure d'archivage en ligne décrite ci-dessus. |
|---|
| 851 | | Arrêtez le serveur s'il est en cours d'exécution. |
|---|
| 852 | | </para> |
|---|
| 853 | | </listitem> |
|---|
| 854 | | <listitem> |
|---|
| 855 | | <para> |
|---|
| 856 | | Si vous avez de la place pour le faire, copiez le répertoire entier des |
|---|
| 857 | | données du groupe et tout espace logique dans un emplacement temporaire |
|---|
| 858 | | au cas où vous en auriez besoin plus tard. Notez que cette précaution |
|---|
| 859 | | demandera que vous ayez assez de place libre sur votre système pour |
|---|
| 860 | | contenir deux copies de votre base de données existante. Si vous n'avez |
|---|
| 861 | | pas assez de place, vous devez au moins copier le contenu du |
|---|
| 862 | | sous-répertoire <filename>pg_xlog</filename> du répertoire des données car il |
|---|
| 863 | | pourrait contenir des journaux qui n'ont pas été archivés avant l'arrêt |
|---|
| 864 | | du serveur. |
|---|
| 865 | | </para> |
|---|
| 866 | | </listitem> |
|---|
| 867 | | <listitem> |
|---|
| 868 | | <para> |
|---|
| 869 | | Effacez tous les fichier et sous-répertoires existants sous le |
|---|
| 870 | | répertoire des données du groupe et sous les répertoires racines des |
|---|
| 871 | | espaces logiques que vous utilisez. |
|---|
| 872 | | </para> |
|---|
| 873 | | </listitem> |
|---|
| 874 | | <listitem> |
|---|
| 875 | | <para> |
|---|
| 876 | | Restaurez les fichiers de la base de données à partir de votre |
|---|
| 877 | | sauvegarde. Faites attention à ce qu'ils soient restaurés avec le bon |
|---|
| | 858 | Arrêter le serveur s'il est en cours d'exécution. |
|---|
| | 859 | </para> |
|---|
| | 860 | </listitem> |
|---|
| | 861 | <listitem> |
|---|
| | 862 | <para> |
|---|
| | 863 | Si la place nécessaire est disponible, copier le répertoire complet de |
|---|
| | 864 | données du cluster et tous les <foreignphrase>tablespaces<foreignphrase> |
|---|
| | 865 | dans un emplacement temporaire en prévision d'un éventuel besoin |
|---|
| | 866 | ultérieur. Cette précaution nécessite qu'un espace suffisant sur le |
|---|
| | 867 | système soit disponible pour contenir deux copies de la base de données |
|---|
| | 868 | existante. S'il n'y a pas assez de place disponible, il faut au minimum |
|---|
| | 869 | copier le contenu du sous-répertoire <filename>pg_xlog</filename> du |
|---|
| | 870 | répertoire des données du cluster car il peut contenir des journaux |
|---|
| | 871 | qui n'ont pas été archivés avant l'arrêt du serveur. |
|---|
| | 872 | </para> |
|---|
| | 873 | </listitem> |
|---|
| | 874 | <listitem> |
|---|
| | 875 | <para> |
|---|
| | 876 | Effacer tous les fichiers et sous-répertoires existant sous le |
|---|
| | 877 | répertoire des données du cluster et sous les répertoires racines des |
|---|
| | 878 | <foreignphrase>tablespaces<foreignphrase>. |
|---|
| | 879 | </para> |
|---|
| | 880 | </listitem> |
|---|
| | 881 | <listitem> |
|---|
| | 882 | <para> |
|---|
| | 883 | Restaurer les fichiers de la base de données à partir de la |
|---|
| | 884 | sauvegarde. Il faut veiller à ce qu'ils soient restaurés avec le bon |
|---|
| 895 | | Si vous aviez des fichiers segments WAL non archivés que vous avez |
|---|
| 896 | | sauvegardé dans l'étape 2, copiez-les dans <filename>pg_xlog/</filename> (il |
|---|
| 897 | | est mieux de les copier, pas de les déplacer, car vous aurez toujours les |
|---|
| 898 | | fichiers non modifiés si un problème survient et que vous devez |
|---|
| 899 | | recommencer). |
|---|
| 900 | | </para> |
|---|
| 901 | | </listitem> |
|---|
| 902 | | <listitem> |
|---|
| 903 | | <para> |
|---|
| 904 | | Créez un fichier de commandes de récupération |
|---|
| 905 | | <filename>recovery.conf</filename> dans le répertoire des données du groupe |
|---|
| 906 | | (voir <xref linkend="recovery-config-settings"/>). De plus, vous pourriez |
|---|
| 907 | | vouloir modifier temporairement <filename>pg_hba.conf</filename> pour empêcher |
|---|
| 908 | | les utilisateurs ordinaires de se connecter tant que vous n'êtes pas |
|---|
| 909 | | certain que la récupération a réussi. |
|---|
| 910 | | </para> |
|---|
| 911 | | </listitem> |
|---|
| 912 | | <listitem> |
|---|
| 913 | | <para> |
|---|
| 914 | | Lancez le serveur. Le serveur se trouvera en mode récupération et |
|---|
| 915 | | commencera la lecture des fichiers WAL archivés dont il a besoin. Si la |
|---|
| 916 | | récupération se termine avec une erreur externe, le serveur peut être |
|---|
| 917 | | tout simplement relancé et il continuera la récupération. À la |
|---|
| 918 | | fin du processus de récupération, le serveur renommera |
|---|
| 919 | | <filename>recovery.conf</filename> en <filename>recovery.done</filename> (pour empêcher |
|---|
| 920 | | de retourner accidentellement en mode de récupération dans le cas d'un |
|---|
| 921 | | arrêt brutal un peu plus tard), puis commencera les opérations normales |
|---|
| 922 | | de la base de données. |
|---|
| 923 | | </para> |
|---|
| 924 | | </listitem> |
|---|
| 925 | | <listitem> |
|---|
| 926 | | <para> |
|---|
| 927 | | Inspectez le contenu de la base de données pour vous assurer que vous |
|---|
| 928 | | avez récupéré ce que vous vouliez. Sinon, retournez à l'étape 1. Si |
|---|
| 929 | | tout va bien, laissez vos utilisateurs venir en restaurant le fichier |
|---|
| 930 | | <filename>pg_hba.conf</filename> à son état normal. |
|---|
| | 903 | Si des fichiers de segment WAL non archivés ont été sauvegardés dans |
|---|
| | 904 | l'étape 2, les copier dans <filename>pg_xlog/</filename>. Il |
|---|
| | 905 | est préférable de les copier plutôt que de les déplacer afin qu'une |
|---|
| | 906 | version non modifiée de ces fichiers soit toujours disponible si un |
|---|
| | 907 | problème survient et qu'il faille recommencer. |
|---|
| | 908 | </para> |
|---|
| | 909 | </listitem> |
|---|
| | 910 | <listitem> |
|---|
| | 911 | <para> |
|---|
| | 912 | Créer un fichier de commandes de récupération |
|---|
| | 913 | <filename>recovery.conf</filename> dans le répertoire des données du |
|---|
| | 914 | cluster (voir <xref linkend="recovery-config-settings"/>). Il peut, de |
|---|
| | 915 | plus être judicieux de modifier temporairement le fichier |
|---|
| | 916 | <filename>pg_hba.conf</filename> pour empêcher les utilisateurs |
|---|
| | 917 | ordinaires de se connecter tant qu'il n'est pas certain que la |
|---|
| | 918 | récupération a réussi. |
|---|
| | 919 | </para> |
|---|
| | 920 | </listitem> |
|---|
| | 921 | <listitem> |
|---|
| | 922 | <para> |
|---|
| | 923 | Démarrer le serveur. Le serveur se trouve alors en mode récupération et |
|---|
| | 924 | commence la lecture des fichiers WAL archivés dont il a besoin. Si la |
|---|
| | 925 | récupération se termine sur une erreur externe, le serveur peut tout |
|---|
| | 926 | simplement être relancé. Il continue alors la récupération. À la |
|---|
| | 927 | fin du processus de récupération, le serveur renomme |
|---|
| | 928 | <filename>recovery.conf</filename> en <filename>recovery.done</filename> |
|---|
| | 929 | (pour empêcher de retourner accidentellement en mode de récupération en |
|---|
| | 930 | cas de nouvel arrêt brutal ultérieur), puis passe ne mode de |
|---|
| | 931 | fonctionnement normal. |
|---|
| | 932 | </para> |
|---|
| | 933 | </listitem> |
|---|
| | 934 | <listitem> |
|---|
| | 935 | <para> |
|---|
| | 936 | Inspecter le contenu de la base de données pour s'assurer que la |
|---|
| | 937 | récupération a bien fonctionné. Dans le cas contraire, retourner |
|---|
| | 938 | à l'étape 1. Si tout va bien, le fichier <filename>pg_hba.conf</filename> |
|---|
| | 939 | peut-être restauré pour autoriser les utilisateurs à se reconnecter. |
|---|
| 941 | | répertoire d'installation <filename>share/</filename>) comme prototype. La seule |
|---|
| 942 | | chose que vous devez absolument spécifier dans |
|---|
| 943 | | <filename>recovery.conf</filename> est <varname>restore_command</varname> indiquant à |
|---|
| 944 | | <productname>PostgreSQL</productname> comment récupérer les fichiers segments WAL |
|---|
| 945 | | archivés. Comme <varname>archive_command</varname>, ceci est une chaîne contenant |
|---|
| 946 | | le nom de la commande. Elle pourrait contenir <literal>%f</literal>, qui est |
|---|
| | 949 | répertoire d'installation <filename>share/</filename>) peut être utilisé |
|---|
| | 950 | comme prototype. La seule chose qu'il faut absolument préciser dans |
|---|
| | 951 | <filename>recovery.conf</filename>, c'est <varname>restore_command</varname> |
|---|
| | 952 | qui indique à <productname>PostgreSQL</productname> comment récupérer les |
|---|
| | 953 | fichiers de segment WAL archivés. À l'instar |
|---|
| | 954 | d'<varname>archive_command</varname>, c'est une chaîne de commande |
|---|
| | 955 | shell. Elle peut contenir <literal>%f</literal>, qui est |
|---|
| 954 | | qui copiera les segments WAL précédemment archivés à partir du répertoire |
|---|
| 955 | | <filename>/mnt/serveur/répertoire_archive</filename>. Vous pourriez bien sûr |
|---|
| 956 | | utiliser quelque chose de plus compliqué, peut-être même un script shell |
|---|
| 957 | | qui demandera à l'utilisateur de monter la cassette appropriée. |
|---|
| 958 | | </para> |
|---|
| 959 | | |
|---|
| 960 | | <para> |
|---|
| 961 | | Il est important que la commande renvoie un code de sortie différent de |
|---|
| 962 | | zéro en cas d'échec. La commande <emphasis>se verra demander</emphasis> les |
|---|
| 963 | | journaux absents de l'archive ; il doit renvoyer autre chose que |
|---|
| 964 | | zéro dans ce cas. Ceci n'est pas une condition d'erreur. Soyez conscient |
|---|
| | 963 | qui copie les segments WAL précédemment archivés à partir du répertoire |
|---|
| | 964 | <filename>/mnt/serveur/répertoire_archive</filename>. Il est toujours |
|---|
| | 965 | possible d'utiliser une commande plus compliquée, voire même un script shell |
|---|
| | 966 | qui demande à l'utilisateur de monter la cassette appropriée. |
|---|
| | 967 | </para> |
|---|
| | 968 | |
|---|
| | 969 | <!-- ICI /home/sas/documentations/pg82/continuous-archiving.html --> |
|---|
| | 970 | <para> |
|---|
| | 971 | Il est important que la commande retourne un code de sortie différent de |
|---|
| | 972 | zéro en cas d'échec. Des journaux absents de l'archive |
|---|
| | 973 | <emphasis>seront</emphasis> demandés à la commande ; elle doit |
|---|
| | 974 | renvoyer autre chose que |
|---|
| | 975 | zéro dans ce cas. Ce n'est pas une condition d'erreur. Soyez conscient |
|---|