]> git.sur5r.net Git - bacula/docs/blob - docs/manual-fr/postgresql.tex
'Spool Data = Yes' sets 'Spool Attributes = Yes'
[bacula/docs] / docs / manual-fr / postgresql.tex
1 %%
2 %%
3
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}
9
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
14 I}
15
16 Attention !!! Si vous envisagez d'utiliser PostgreSQL, vous devriez 
17 \^etre conscient de la philosophie des mises \`a jour de PostgreSQL qui 
18 peut \^etre d\'estabilisant dans un environnement de 
19 production. En gros, pour chaque mise \`a jour vers une version majeure, 
20 vous devez exporter vos bases de donn\'ees au format ASCII, faire la 
21 mise \`a jour, et recharger vos bases de donn\'ees. Ceci est d\^u au \`a des 
22 mises \`a jour fr\'equentes du "format de donn\'ees" d'une version \`a l'autre, 
23 et aucun outil n'est fourni pour effectuer la conversion automatiquement. 
24 Si vous omettez d'exporter vos bases au format ASCII, elles peuvent 
25 devenir compl\`etement inutiles si aucun des nouveaux outils ne peut y 
26 acc\'eder en raison d'un changement de format, auquel cas le serveur 
27 PostgreSQL sera dans l'incapacit\'e de d\'emarrer. 
28
29 Si vous avez utilis\'e l'option {\bf ./configure
30 \verb{--{with-postgresql=PostgreSQL-Directory} pour configurer {\bf Bacula}, vous
31 avez besoin d'installer la version 7.3 ou sup\'erieure de PostgreSQL.
32 ATTENTION! Les versions pr\'ealables \`a la 7.3 ne fonctionnent pas avec
33 Bacula. Si PostgreSQL est install\'e dans ses r\'epertoires sandards, seule
34 l'option {\bf \verb{--{with-postgresql} est n\'ecessaire, le programme de
35 configuration scrutant tous les r\'epertoires standards. Si PostgreSQL est
36 install\'e dans votre r\'epertoire de travail ou dans un r\'epertoire
37 atypique, il faut pr\'eciser l'option {\bf \verb{--{with-postgresql} suivie du
38 r\'epertoire {\it ad hoc}. 
39
40 Installer et configurer PostgreSQL n'est pas compliqu\'e mais peut \^etre
41 d\'eroutant la premi\`ere fois. Si vous pr\'ef\'erez, vous pouvez utiliser le
42 paquet de votre distribution. Les paquets binaires sont disponibles sur la
43 plupart des mirroirs de PostgreSQL. 
44
45 Si vous pr\'ef\'erez installer PostgreSQL \`a partir des sources, nous vous
46 recommandons de suivre les instructions de la 
47 \elink{documentation PostgreSQL}{http://www.postgresql.org/docs/}. 
48
49 Si vous utilisez PostgreSQL pour FreeBSD, 
50 \elink{cet article}{http://www.freebsddiary.org/postgresql.php} vous sera peut
51 \^etre utile. M\^eme si vous n'utilisez pas FreeBSD, l'article contient des
52 informations utiles \`a la configuration et au param\'etrage de PostgreSQL. 
53
54 Apr\`es l'installation de PostgreSQL, terminez l'installation de {\bf Bacula}.
55 Ensuite, quand Bacula sera install\'e, reprenez ce chapitre pour terminer
56 l'installation. Notez que les fichiers d'installation utilis\'es dans cette
57 seconde phase de l'installation de PostgreSQL sont cr\'e\'es durant
58 l'installation de Bacula. 
59 \label{PostgreSQL_phase2}
60
61 \subsection*{Installer et configurer PostgreSQL -- Phase II}
62 \index[general]{Phase II!Installer et configurer PostgreSQL -- }
63 \index[general]{Installer et configurer PostgreSQL -- Phase II }
64 \addcontentsline{toc}{subsection}{Installer et configurer PostgreSQL -- Phase
65 II}
66
67 Si vous en \^etes l\`a, vous avez construit et install\'e PostgreSQL, ou vous
68 aviez d\'ej\`a un serveur PostgreSQL existant et vous avez configur\'e et
69 install\'e {\bf Bacula}. Dans le cas contraire, nous vous invitons \`a le
70 faire avant de poursuivre. 
71
72 Notez bien que la commande {\bf ./configure} utilis\'ee pour
73 construire {\bf Bacula} n\'ecessite d'ajouter l'option {\bf
74 \verb{--{with-postgresql=repertoire\_de\_PostgreSQL}, o\`u {\bf
75 repertoire\_de\_PostgreSQL} sp\'ecifie le chemin de PostgreSQL indiqu\'e \`a
76 la commande ./configure. (si vous n'avez pas sp\'ecifi\'e de r\'epertoire ou
77 si PostgreSQL est install\'e dans son r\'epertoire par d\'efaut, cette option
78 n'est pas n\'ecessaire). Cette option est n\'ecessaire pour que Bacula puisse
79 trouver les fichiers d'en-t\^ete et les librairies d'interface \`a PostgreSQL.
80
81
82 {\bf Bacula} installe les scripts pour la gestion de la base de donn\'ees
83 (cr\'eer, d\'etruire, cr\'eer les tables, etc.) dans le r\'epertoire principal
84 de l'installation. Ces fichiers sont de la forme *\_bacula\_* (par exemple
85 create\_bacula\_database). Ces fichiers sont \'egalement disponibles dans le
86 r\'epertoire \lt{}bacula-src\gt{}/src/cats apr\`es que la commande ./configure
87 ait \'et\'e lanc\'ee. Si vous consultez le fichier create\_bacula\_database,
88 vous verrez qu'il fait appel \`a create\_postgresql\_database. Les fichiers
89 *\_bacula\_* sont fournis pour faciliter les choses. Peu importe la base de
90 donn\'ees choisie, create\_bacula\_database cr\'eera la base de donn\'ees. 
91
92 Maintenant vous allez cr\'eer la base de donn\'ees PostgreSQL et les tables
93 utilis\'ees par Bacula. On pr\'esume dans la suite que votre serveur
94 PostgreSQL fonctionne. Vous devez ex\'ecuter les diff\'erentes \'etapes
95 ci-dessous en tant qu'utilisateur autoris\'e \`a cr\'eer des bases. Ceci peut
96 \^etre fait avec l'utilisateur PostgreSQL (sur la plupart des syst\`emes il
97 s'agit de pgsql. NDT: sur debian il s'agit de postgres) 
98
99 \begin{enumerate}
100 \item cd \lt{}r\'epertoire\_d\_installation\gt{}
101
102    Ce r\'epertoire contient le catalogue des routines d'interfaces.  
103
104 \item ./create\_bacula\_database
105
106    Ce script cr\'e\'e le catalogue {\bf bacula} PostgreSQL. S'il \'echoue, 
107    c'est probablement que vous n'avez pas les droits requis sur la 
108    base de donn\'ees. Sur la plupart des syst\`emes, le propri\'etaire de 
109    la base de donn\'ees est {\bf pgsql}, et sur d'autres tels que RedHat ou 
110    Fedora, c'est {\bf postgres}. Vous pouvez d\'eterminer lequel en examinant 
111    le fichier /etc/passwd. Pour cr\'eer un nouvel utilisateur avec votre nom 
112    ou le nom {\bf bacula}, vous pouvez faire ce qui suit :
113       
114 \begin{verbatim}
115    su
116    (entrez le mot de passe root)
117    su pgsql (ou postgres)
118    createuser kern (ou peut-\^etre bacula)
119    Shall the new user be allowed to create databases? (y/n) y
120    Shall the new user be allowed to create more new users? (y/n) (choisissez ce que vous voulez)
121    exit
122 \end{verbatim}
123
124
125     A ce stade, vous devriez pouvoir ex\'ecuter la commande ./create\_bacula\_database
126
127 \item ./make\_bacula\_tables
128
129    Cr\'e\'ee les tables utilis\'ees par {\bf Bacula}.  
130 \item ./grant\_bacula\_privileges
131
132    Cr\'e\'ee l'utilisateur de la base de donn\'ees {\bf bacula} avec des droits
133 d'acc\`es restreints. Vous pouvez modifier ce script pour cadrer avec votre
134 propre configuration. Attention, cette base n'est pas prot\'eg\'ee par un mot
135 de passe.  
136
137 \end{enumerate}
138
139 Chacun de ces scripts (create\_bacula\_database, make\_bacula\_tables et
140 grant\_bacula\_privileges) permet l'ajout d'arguments en ligne de commande.
141 Ceci peut \^etre utile pour sp\'ecifier le nom de l'utilisateur. Par exemple,
142 vous pouvez avoir besoin d'ajouter {\bf -h nom\_d\_hote} \`a la ligne de
143 commande pour sp\'ecifier le serveur de base de donn\'ees distant. 
144
145 Pour avoir un bon aper{\c c}u des droits d'acc\`es que vous avez sp\'ecifi\'e
146 vous pouvez utiliser la commande 
147
148 \footnotesize
149 \begin{verbatim}
150
151 repertoire_de_PostgreSQL/bin/psql --command \\dp bacula
152 \end{verbatim}
153 \normalsize
154
155 J'ai rencontr\'e un probl\`eme de permissions avec le mot de passe. J'ai finalement 
156 du modifier mon fichier  {\bf pg\_hba.conf} (situ\'e dans /var/lib/pgsql/data sur ma 
157 machine) :
158
159 \footnotesize
160 \begin{verbatim}
161 de
162   local   all    all        ident  sameuser
163 vers
164   local   all    all        trust  sameuser
165 \end{verbatim}
166 \normalsize
167
168 Ceci a r\'esolu le probl\`eme pour moi, mais ce n'est pas pas forc\'ement une bonne 
169 chose du point de vue de la s\'ecurit\'e, mais j'ai ainsi pu ex\'ecuter mes scripts de 
170 r\'egression sans mot de passe.
171
172 Un moyen plus s\'ecuris\'e pour l'authentification aupr\`es de la base de donn\'ees 
173 consiste \`a utiliser le hachage MD5 des mots de passe. Pour cela, \'editez les 
174 fichier {\bf pg\_hba.conf}, et ajoutez ajoutez ce qui suit juste avant les lignes 
175 "local" et "host" existantes :
176
177 \footnotesize
178 \begin{verbatim}
179   local bacula bacula md5
180 \end{verbatim}
181 \normalsize
182
183 Puis red\'emarrez le {\it daemon} Postgres (la plupart du temps, avec 
184  "/etc/init.d/postgresql restart") pour activer cette nouvelle r\`egle 
185 d'authentification.
186
187 Ensuite, en tant qu'administrateur Postgres (connectez-vous en tant 
188 qu'utilisateur postgres ou en utilisant {\bf su} pour devenir root, puis 
189  {\bf su postgres}), ajoutez un mot de passe \`a la base de donn\'ees bacula 
190 pour l'utilisateur bacula avec les commandes suivantes :
191
192 \footnotesize
193 \begin{verbatim}
194   \$ psql bacula
195   bacula=# alter user bacula with password 'secret';
196   ALTER USER
197   bacula=# \\q
198 \end{verbatim}
199 \normalsize
200
201 Enfin, il vous faudra ajouter ce mot de passe en deux endroits du fichier 
202 bacula-dir.conf : au niveau de la ressource Catalog et au niveau de la 
203 directive RunBeforeJob de la ressource Job BackupCatalog. Avec les mots de 
204 passe en place, ces deux lignes devraient ressembler \`a ceci :
205
206 \footnotesize
207 \begin{verbatim}
208   dbname = bacula; user = bacula; password = "secret"
209     ... and ...
210   RunBeforeJob = "/etc/make_catalog_backup bacula bacula secret"
211 \end{verbatim}
212 \normalsize
213
214 Naturellement, vous devriez choisir un meilleur mot de passe, et vous assurer 
215 que le fichier bacula-dir.conf qui contient ce mot de passe n'est lisible 
216 que par root.
217
218 M\^eme avec ces restrictions, il reste un probl\`eme de s\'ecurit\'e avec cette approche : 
219 sur certaines plateformes, la variable d'environnement utilis\'ee pour soumettre le 
220 mot de passe \`a Postgres est disponible pour tout utilisateur 
221 local du syst\`eme. Pour supprimer ce probl\`eme, l'\'equipe Postgres a d\'ecr\'et\'e 
222 obsol\`ete ce m\'ecanisme de passage de mot de passe par variable d'environnement et 
223 recommande d'utiliser un fichier .pgpass. Pour utiliser ce m\'ecanisme, cr\'eez un fichier 
224 nomm\'e .pgpass vcontenant une simple ligne :
225
226 \footnotesize
227 \begin{verbatim}
228   localhost:5432:bacula:bacula:secret
229 \end{verbatim}
230 \normalsize
231
232 Ce fichier devrait \^etre copi\'e dans les r\'epertoires personnels (NDT : home directories) 
233 de tous les comptes susceptibles d'avoir besoin d'acc\'eder \`a la base de donn\'ees : 
234 typiquement, il s'agit de root, bacula et tout utilisateur de la console Bacula. Les fichiers 
235 doivent appartenir aux utilisateur et groupe correspondant : root:root pour la copie 
236 dans ~root, etc. Les permissions doivent \^etre positionn\'ees \`a 600 pour limiter 
237 l'acc\`es au propri\'etaire du fichier.
238
239 \subsection*{R\'einitialiser la base des catalogues (de sauvegardes)}
240 \index[general]{R\'einitialiser la base des catalogues (de sauvegardes) }
241 \index[general]{Sauvegardes!R\'einitialiser la base des catalogues de }
242 \addcontentsline{toc}{subsection}{R\'einitialiser la base des catalogues (de
243 sauvegardes)}
244
245 Apr\`es avoir fait un certain nombre de tests avec {\bf Bacula}, vous aurez
246 tr\`es certainement envie de nettoyer le catalogue des sauvegardes et faire
247 dispara{\^\i}tre tous les travaux de tests que vous avez lanc\'es. Pour ce
248 faire, vous pouvez ex\'ecuter les commandes suivantes: 
249
250 \footnotesize
251 \begin{verbatim}
252
253   cd <r\'epertoire_d_installation>
254   ./drop_bacula_tables
255   ./make_bacula_tables
256   ./grant_bacula_privileges
257 \end{verbatim}
258 \normalsize
259
260 Attention! Toutes les informations contenues dans cette base seront perdues et
261 vous repartirez de z\'ero. Si vous avez \'ecrit sur certains volumes (m\'edia
262 de sauvegarde), vous devrez \'ecrire une marque de fin de fichier (EOF) sur
263 chacun d'eux afin que {\bf Bacula} puisse les r\'eutiliser. Pour ce faire: 
264
265 \footnotesize
266 \begin{verbatim}
267
268    (arr\^eter Baula ou demonter les volumes)
269    mt -f /dev/nst0 rewind
270    mt -f /dev/nst0 weof
271 \end{verbatim}
272 \normalsize
273
274 o\`u vous devrez remplacer {\bf /dev/nst0} par le chemin appropri\'e de votre
275 lecteur de sauvegarde. 
276
277 \subsection*{Installer PostgreSQL avec les RPMs}
278 \index[general]{PostgreSQL!Installer avec les RPMs}
279 \index[general]{Installer PostgreSQL avec les RPMs}
280 \addcontentsline{toc}{subsection}{Installer PostgreSQL avec les RPMs}
281 Si vous installez PostgreSQL avec les RPMs, il vous faut installer les 
282 binaires PostgreSQL ainsi que les librairies clientes. Ces derni\`eres font 
283 g\'en\'eralement partie de paquetages de d\'eveloppement, aussi vous devez installer :
284
285 \footnotesize
286 \begin{verbatim}
287   postgresql
288   postgresql-devel
289 \end{verbatim}
290 \normalsize
291
292 Il en va de m\^eme avec la plupart des gestionnaires de paquetages.
293
294 \subsection*{Migrer de MySQL \`a PostgreSQL}
295 \index[general]{Migrer de MySQL \`a PostgreSQL }
296 \index[general]{PostgreSQL!Migrer de MySQL \`a }
297 \addcontentsline{toc}{subsection}{Migrer de MySQL \`a PostgreSQL}
298
299 La proc\'edure de migration pr\'esent\'ee ici \`a fonctionn\'e pour Norm
300 Dressler \lt{}ndressler at dinmar dot com\gt{} 
301
302 Ce process a \'et\'e test\'e en utilisant les versions suivantes des
303 diff\'erents logiciels: 
304
305 \begin{itemize}
306 \item Linux Mandrake 10/Kernel 2.4.22-10 SMP 
307 \item MySQL Ver 12.21 Distrib 4.0.15, pour mandrake-linux-gnu (i586) 
308 \item PostgreSQL 7.3.4 
309 \item Bacula 1.34.5 
310    \end{itemize}
311
312 ATTENTION! Par pr\'ecaution, r\'ealisez une sauvegarde compl\`ete de vos
313 syst\`emes avant de proc\'eder \`a cette migration. 
314
315 \begin{enumerate}
316 \item Arr\^etez bacula (cd /etc/bacula;./bacula stop)  
317 \item Lancez la commande pour extraire les donn\'ees de votre base MySQL:  
318
319    \footnotesize
320 \begin{verbatim}
321
322        mysqldump -f -t -n >bacula-backup.dmp
323     
324 \end{verbatim}
325 \normalsize
326
327 \item Faites une sauvegarde de votre r\'epertoire /etc/bacula (mais laisser
328    l'original en place  ).  
329 \item Allez dans le r\'epertoire source de {\bf Bacula} et reconstruisez le en
330    incluant le support  PostgreSQL au lieu de celui de MySQL . V\'erifiez que  le
331    fichier config.log de votre configuration originale et remplacez enable-mysql
332 par enable-postgresql.  
333 \item Recompilez Bacula avec la commande make et si tout se passe correctement
334  lancez un "make install".  
335 \item Arr\^etez MySQL. 
336 \item Lancez PostgreSQL sur votre syst\`eme.  
337 \item Cr\'eez un utilisateur {\bf Bacula} dans Postgres avec la commande
338    "createuser".  En fonction de votre installation, vous serez peut \^etre
339    amen\'e \`a faire un "su" vers l'utilisateur ad\'equat (NDT: su postgres).  
340 \item Verifiez que le fichier pg\_hba.conf (NdT sur Debian:
341    /etc/postgres/pg\_hba.conf) contient les permissions ad\'equates pour
342    permettre \`a {\bf Bacula} d'acc\'eder au serveur. Le mien contient les
343 informations suivantes, et il est situ\'e sur un r\'eseau s\'ecuris\'e,  
344
345 \footnotesize
346 \begin{verbatim}
347
348 local all all trust
349                 
350 host all all 127.0.0.1 255.255.255.255 trust
351                 
352 ATTENTION: vous devez red\'emmarer PostgreSQL si vous faites des changements dans ce fichier.
353       
354 \end{verbatim}
355 \normalsize
356
357 \item Allez dans le r\'epertoire /etc/bacula et pr\'eparez la base de
358    donn\'ees avec les commandes suivantes:  
359
360 \footnotesize
361 \begin{verbatim}
362
363 ./create_postgresql_database
364                                 
365 ./make_postgresql_tables
366                                 
367 ./grant_postgresql_privileges
368        
369 \end{verbatim}
370 \normalsize
371
372 \item Verifiez que vous avez acc\`es \`a la base de donn\'ees:  
373
374    \footnotesize
375 \begin{verbatim}
376   
377 psql -Ubacula bacula
378       
379 \end{verbatim}
380 \normalsize
381
382 Vous ne devriez avoir aucune erreur.  
383 \item Chargez la base PostgreSQL avec l'extraction MySQL gr\^ace \`a la
384    commande:  
385
386 \footnotesize
387 \begin{verbatim}
388
389 psql -Ubacula bacula <bacula-backup.dmp>
390       
391 \end{verbatim}
392 \normalsize
393
394 \item R\'eindexez vos tables avec les commandes suivantes:  
395
396    \footnotesize
397 \begin{verbatim}
398
399 psql -Ubacula bacula
400                 
401 SELECT SETVAL('basefiles_baseid_seq', (SELECT
402 MAX(baseid) FROM basefiles));
403
404 SELECT SETVAL('client_clientid_seq', (SELECT
405 MAX(clientid) FROM client));
406
407 SELECT SETVAL('file_fileid_seq', (SELECT MAX(fileid)
408 FROM file));
409
410 SELECT SETVAL('filename_filenameid_seq', (SELECT
411 MAX(filenameid) FROM filename));
412                 
413 SELECT SETVAL('fileset_filesetid_seq', (SELECT
414 MAX(filesetid) FROM fileset));
415                 
416 SELECT SETVAL('job_jobid_seq', (SELECT MAX(jobid) FROM job));
417
418 SELECT SETVAL('jobmedia_jobmediaid_seq', (SELECT
419 MAX(jobmediaid) FROM jobmedia));
420
421 SELECT SETVAL('media_mediaid_seq', (SELECT MAX(mediaid) FROM media));
422
423 SELECT SETVAL('path_pathid_seq', (SELECT MAX(pathid) FROM path));
424                 
425 SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool));
426        
427 \end{verbatim}
428 \normalsize
429
430 \item Parvenu ici, lancez {\bf Bacula}, v\'erifiez votre librairie et
431    faites un test pour valider que tout s'est bien d\'eroul\'e. 
432 \end{enumerate}
433
434 \subsection*{Mettre \`a jour PostgreSQL}
435 \index[general]{Mettre \`a jour PostgreSQL }
436 \index[general]{Mettre \`a jour!PostgreSQL }
437 \addcontentsline{toc}{subsection}{Mettre \`a jour PostgreSQL}
438 Si vous mettez PosgreSQL \`a jour, vous devez reconfigurer, recompiler et 
439 r\'einstaller Bacula, faute de quoi vous constaterez probalement des 
440 erreurs \'etranges. 
441 Pour cela, il vous faut installer le RPM source, modifier le fichier bacula.spec 
442 pour l'accorder \`a votre version de PostgreSQL, reconstruire le RPM et l'installer.
443
444 If you upgrade PostgreSQL, you must reconfigure, rebuild, and re-install
445 Bacula otherwise you are likely to get bizarre failures.  If you
446 to modify the bacula.spec file to account for the new PostgreSQL version.
447 You can do so by rebuilding from the source rpm. To do so, you may need
448 install from rpms and you upgrade PostgreSQL, you must also rebuild Bacula.
449
450
451 \subsection*{Credits}
452 \index[general]{Credits }
453 \addcontentsline{toc}{subsection}{Credits}
454
455 Tous mes remerciements \`a Dan Languille pour l'\'ecriture du driver
456 PostgreSQL qui deviendra tr\`es certainement la base de donn\'ees la plus
457 r\'eput\'ee utilisable avec {\bf Bacula}