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