4 \section*{Installer et configurer PostgreSQL}
5 \label{_ChapterStart10}
6 \index[general]{PostgreSQL!Installer et configurer }
7 \index[general]{Installer et configurer PostgreSQL }
8 \addcontentsline{toc}{section}{Installer et configurer PostgreSQL}
10 \subsection*{Installer et configurer PostgreSQL -- Phase I}
11 \index[general]{Installer et configurer PostgreSQL -- Phase I }
12 \index[general]{Phase I!Installer et configurer PostgreSQL -- }
13 \addcontentsline{toc}{subsection}{Installer et configurer PostgreSQL -- Phase
16 Si vous avez utilis\'e l'option {\bf ./configure
17 \verb{--{with-postgresql=PostgreSQL-Directory} pour configurer {\bf Bacula}, vous
18 avez besoin d'installer la version 7.3 ou sup\'erieure de PostgreSQL.
19 ATTENTION! Les versions pr\'ealables \`a la 7.3 ne fonctionnent pas avec
20 Bacula. Si PostgreSQL est install\'e dans ses r\'epertoires sandards, seule
21 l'option {\bf \verb{--{with-postgresql} est n\'ecessaire, le programme de
22 configuration scrutant tous les r\'epertoires standards. Si PostgreSQL est
23 install\'e dans votre r\'epertoire de travail ou dans un r\'epertoire
24 atypique, il faut pr\'eciser l'option {\bf \verb{--{with-postgresql} suivie du
25 r\'epertoire {\it ad hoc}.
27 Installer et configurer PostgreSQL n'est pas compliqu\'e mais peut \^etre
28 d\'eroutant la premi\`ere fois. Si vous pr\'ef\'erez, vous pouvez utiliser le
29 paquet de votre distribution. Les paquets binaires sont disponibles sur la
30 plupart des mirroirs de PostgreSQL.
32 Si vous pr\'ef\'erez installer PostgreSQL \`a partir des sources, nous vous
33 recommandons de suivre les instructions de la
34 \elink{documentation PostgreSQL}{http://www.postgresql.org/docs/}.
36 Si vous utilisez PostgreSQL pour FreeBSD,
37 \elink{cet article}{http://www.freebsddiary.org/postgresql.php} vous sera peut
38 \^etre utile. M\^eme si vous n'utilisez pas FreeBSD, l'article contient des
39 informations utiles \`a la configuration et au param\'etrage de PostgreSQL.
41 Apr\`es l'installation de PostgreSQL, terminez l'installation de {\bf Bacula}.
42 Ensuite, quand Bacula sera install\'e, reprenez ce chapitre pour terminer
43 l'installation. Notez que les fichiers d'installation utilis\'es dans cette
44 seconde phase de l'installation de PostgreSQL sont cr\'e\'es durant
45 l'installation de Bacula.
46 \label{PostgreSQL_phase2}
48 \subsection*{Installer et configurer PostgreSQL -- Phase II}
49 \index[general]{Phase II!Installer et configurer PostgreSQL -- }
50 \index[general]{Installer et configurer PostgreSQL -- Phase II }
51 \addcontentsline{toc}{subsection}{Installer et configurer PostgreSQL -- Phase
54 Si vous en \^etes l\`a, vous avez construit et install\'e PostgreSQL, ou vous
55 aviez d\'ej\`a un serveur PostgreSQL existant et vous avez configur\'e et
56 install\'e {\bf Bacula}. Dans le cas contraire, nous vous invitons \`a le
57 faire avant de poursuivre.
59 Prennez bonne note que la commande {\bf ./configure} utilis\'ee pour
60 construire {\bf Bacula} n\'ecessite d'ajouter l'option {\bf
61 \verb{--{with-postgresql=repertoire\_de\_PostgreSQL}, o\`u {\bf
62 repertoire\_de\_PostgreSQL} sp\'ecifie le chemin de PostgreSQL indiqu\'e \`a
63 la commande ./configure. (si vous n'avez pas sp\'ecifi\'e de r\'epertoire ou
64 si PostgreSQL est install\'e dans son r\'epertoire par d\'efaut, cette option
65 n'est pas n\'ecessaire). Cette option est n\'ecessaire pour que Bacula puisse
66 trouver les fichiers d'en-t\^ete et les librairies d'interface \`a PostgreSQL.
69 {\bf Bacula} installe les scripts pour la gestion de la base de donn\'ees
70 (cr\'eer, d\'etruire, cr\'eer les tables, etc.) dans le r\'epertoire principal
71 de l'installation. Ces fichiers sont de la forme *\_bacula\_* (par exemple
72 create\_bacula\_database). Ces fichiers sont \'egalement disponibles dans le
73 r\'epertoire \lt{}bacula-src\gt{}/src/cats apr\`es que la commande ./configure
74 ait \'et\'e lanc\'ee. Si vous consultez le fichier create\_bacula\_database,
75 vous verrez qu'il fait appel \`a create\_postgresql\_database. Les fichiers
76 *\_bacula\_* sont fournis pour faciliter les choses. Peu importe la base de
77 donn\'ees choisie, create\_bacula\_database cr\'eera la base de donn\'ees.
79 Maintenant vous allez cr\'eer la base de donn\'ees PostgreSQL et les tables
80 utilis\'ees par Bacula. On pr\'esume dans la suite que votre serveur
81 PostgreSQL fonctionne. Vous devez ex\'ecuter les diff\'erentes \'etapes
82 ci-dessous en tant qu'utilisateur autoris\'e \`a cr\'eer des bases. Ceci peut
83 \^etre fait avec l'utilisateur PostgreSQL (sur la plupart des syst\`emes il
84 s'agit de pgsql. NDT: sur debian il s'agit de postgres)
87 \item cd \lt{}r\'epertoire\_d\_installation\gt{}
89 Ce r\'epertoire contient le catalogue des routines d'interfaces.
91 \item ./create\_bacula\_database
93 Cr\'eer la base de donn\'ees PostgreSQL de {\bf Bacula}.
95 \item ./make\_bacula\_tables
97 Cr\'e\'ee les tables utilis\'ees par {\bf Bacula}.
98 \item ./grant\_bacula\_privileges
100 Cr\'e\'ee l'utilisateur de la base de donn\'ees {\bf bacula} avec des droits
101 d'acc\`es restreints. Vous pouvez modifier ce script pour cadrer avec votre
102 propre configuration. Attention, cette base n'est pas prot\'eg\'ee par un mot
107 Chacun de ces scripts (create\_bacula\_database, make\_bacula\_tables et
108 grant\_bacula\_privileges) permet l'ajout d'arguments en ligne de commande.
109 Ceci peut \^etre utile pour sp\'ecifier le nom de l'utilisateur. Par exemple,
110 vous pouvez avoir besoin d'ajouter {\bf -h nom\_d\_hote} \`a la ligne de
111 commande pour sp\'ecifier le serveur de base de donn\'ees distant.
113 Pour avoir un bon aper{\c c}u des droits d'acc\`es que vous avez sp\'ecifi\'e
114 vous pouvez utiliser la commande
119 repertoire_de_PostgreSQL/bin/psql --command \\dp bacula
123 \subsection*{R\'einitialiser la base des catalogues (de sauvegardes)}
124 \index[general]{R\'einitialiser la base des catalogues (de sauvegardes) }
125 \index[general]{Sauvegardes!R\'einitialiser la base des catalogues de }
126 \addcontentsline{toc}{subsection}{R\'einitialiser la base des catalogues (de
129 Apr\`es avoir fait un certain nombre de tests avec {\bf Bacula}, vous aurez
130 tr\`es certainement envie de nettoyer le catalogue des sauvegardes et faire
131 dispara{\^\i}tre tous les travaux de tests que vous avez lanc\'es. Pour ce
132 faire, vous pouvez ex\'ecuter les commandes suivantes:
137 cd <r\'epertoire_d_installation>
140 ./grant_bacula_privileges
144 Attention! Toutes les informations contenues dans cette base seront perdues et
145 vous repartirez de z\'ero. Si vous avez \'ecrit sur certains volumes (m\'edia
146 de sauvegarde), vous devrez \'ecrire une marque de fin de fichier (EOF) sur
147 chacun d'eux afin que {\bf Bacula} puisse les r\'eutiliser. Pour ce faire:
152 (arr\^eter Baula ou demonter les volumes)
153 mt -f /dev/nst0 rewind
158 o\`u vous devrez remplacer {\bf /dev/nst0} par le chemin appropri\'e de votre
159 lecteur de sauvegarde.
161 \subsection*{Migrer de MySQL \`a PostgreSQL}
162 \index[general]{Migrer de MySQL \`a PostgreSQL }
163 \index[general]{PostgreSQL!Migrer de MySQL \`a }
164 \addcontentsline{toc}{subsection}{Migrer de MySQL \`a PostgreSQL}
166 La proc\'edure de migration pr\'esent\'ee ici \`a fonctionn\'e pour Norm
167 Dressler \lt{}ndressler at dinmar dot com\gt{}
169 Ce process a \'et\'e test\'e en utilisant les versions suivantes des
170 diff\'erents logiciels:
173 \item Linux Mandrake 10/Kernel 2.4.22-10 SMP
174 \item Mysql Ver 12.21 Distrib 4.0.15, pour mandrake-linux-gnu (i586)
175 \item PostgreSQL 7.3.4
179 ATTENTION! Par pr\'ecaution, r\'ealisez une sauvegarde compl\`ete de vos
180 syst\`emes avant de proc\'eder \`a cette migration.
183 \item Arr\^etez bacula (cd /etc/bacula;./bacula stop)
184 \item Lancez la commande pour extraire les donn\'ees de votre base Mysql:
189 mysqldump -f -t -n >bacula-backup.dmp
194 \item Faites une sauvegarde de votre r\'epertoire /etc/bacula (mais laisser
195 l'original en place ).
196 \item Allez dans le r\'epertoire source de {\bf Bacula} et reconstruisez le en
197 incluant le support PostgreSQL au lieu de celui de Mysql . V\'erifiez que le
198 fichier config.log de votre configuration originale et remplacez enable-mysql
199 par enable-postgresql.
200 \item Recompilez Bacula avec la commande make et si tout se passe correctement
201 lancez un ``make install''.
202 \item Arr\^etez Mysql.
203 \item Lancez PostgreSQL sur votre syst\`eme.
204 \item Cr\'eez un utilisateur {\bf Bacula} dans Postgres avec la commande
205 ``createuser''. En fonction de votre installation, vous serez peut \^etre
206 amen\'e \`a faire un ``su'' vers l'utilisateur ad\'equat (NDT: su postgres).
207 \item Verifiez que le fichier pg\_hba.conf (NdT sur Debian:
208 /etc/postgres/pg\_hba.conf) contient les permissions ad\'equates pour
209 permettre \`a {\bf Bacula} d'acc\'eder au serveur. Le mien contient les
210 informations suivantes, et il est situ\'e sur un r\'eseau s\'ecuris\'e,
217 host all all 127.0.0.1 255.255.255.255 trust
219 ATTENTION: vous devez red\'emmarer PostgreSQL si vous faites des changements dans ce fichier.
224 \item Allez dans le r\'epertoire /etc/bacula et pr\'eparez la base de
225 donn\'ees avec les commandes suivantes:
230 ./create_postgresql_database
232 ./make_postgresql_tables
234 ./grant_postgresql_privileges
239 \item Verifiez que vous avez acc\`es \`a la base de donn\'ees:
249 Vous ne devriez avoir aucune erreur.
250 \item Chargez la base PostgreSQL avec l'extraction MySQL gr\^ace \`a la
256 psql -Ubacula bacula <bacula-backup.dmp>
261 \item R\'eindexez vos tables avec les commandes suivantes:
268 SELECT SETVAL('basefiles_baseid_seq', (SELECT
269 MAX(baseid) FROM basefiles));
271 SELECT SETVAL('client_clientid_seq', (SELECT
272 MAX(clientid) FROM client));
274 SELECT SETVAL('file_fileid_seq', (SELECT MAX(fileid)
277 SELECT SETVAL('filename_filenameid_seq', (SELECT
278 MAX(filenameid) FROM filename));
280 SELECT SETVAL('fileset_filesetid_seq', (SELECT
281 MAX(filesetid) FROM fileset));
283 SELECT SETVAL('job_jobid_seq', (SELECT MAX(jobid) FROM job));
285 SELECT SETVAL('jobmedia_jobmediaid_seq', (SELECT
286 MAX(jobmediaid) FROM jobmedia));
288 SELECT SETVAL('media_mediaid_seq', (SELECT MAX(mediaid) FROM media));
290 SELECT SETVAL('path_pathid_seq', (SELECT MAX(pathid) FROM path));
292 SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool));
297 \item Parvenu ici, lancez {\bf Bacula}, v\'erifiez votre banque de bandes et
298 faites un test pour valider que tout s'est bien d\'eroul\'e.
301 \subsection*{Credits}
302 \index[general]{Credits }
303 \addcontentsline{toc}{subsection}{Credits}
305 Tous mes remerciements \`a Dan Languille pour l'\'ecriture du driver
306 PostgreSQL qui deviendra tr\`es certainement la base de donn\'ees la plus
307 r\'eput\'ee utilisable avec {\bf Bacula}