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 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.
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}.
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.
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/}.
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.
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}
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
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.
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.
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.
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)
100 \item cd \lt{}r\'epertoire\_d\_installation\gt{}
102 Ce r\'epertoire contient le catalogue des routines d'interfaces.
104 \item ./create\_bacula\_database
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 :
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)
125 A ce stade, vous devriez pouvoir ex\'ecuter la commande ./create\_bacula\_database
127 \item ./make\_bacula\_tables
129 Cr\'e\'ee les tables utilis\'ees par {\bf Bacula}.
130 \item ./grant\_bacula\_privileges
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
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.
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
151 repertoire_de_PostgreSQL/bin/psql --command \\dp bacula
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
162 local all all ident sameuser
164 local all all trust sameuser
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.
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 :
179 local bacula bacula md5
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
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 :
195 bacula=# alter user bacula with password 'secret';
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 :
208 dbname = bacula; user = bacula; password = "secret"
210 RunBeforeJob = "/etc/make_catalog_backup bacula bacula secret"
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
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 :
228 localhost:5432:bacula:bacula:secret
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.
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
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:
253 cd <r\'epertoire_d_installation>
256 ./grant_bacula_privileges
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:
268 (arr\^eter Baula ou demonter les volumes)
269 mt -f /dev/nst0 rewind
274 o\`u vous devrez remplacer {\bf /dev/nst0} par le chemin appropri\'e de votre
275 lecteur de sauvegarde.
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 :
292 Il en va de m\^eme avec la plupart des gestionnaires de paquetages.
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}
299 La proc\'edure de migration pr\'esent\'ee ici \`a fonctionn\'e pour Norm
300 Dressler \lt{}ndressler at dinmar dot com\gt{}
302 Ce process a \'et\'e test\'e en utilisant les versions suivantes des
303 diff\'erents logiciels:
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
312 ATTENTION! Par pr\'ecaution, r\'ealisez une sauvegarde compl\`ete de vos
313 syst\`emes avant de proc\'eder \`a cette migration.
316 \item Arr\^etez bacula (cd /etc/bacula;./bacula stop)
317 \item Lancez la commande pour extraire les donn\'ees de votre base MySQL:
322 mysqldump -f -t -n >bacula-backup.dmp
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,
350 host all all 127.0.0.1 255.255.255.255 trust
352 ATTENTION: vous devez red\'emmarer PostgreSQL si vous faites des changements dans ce fichier.
357 \item Allez dans le r\'epertoire /etc/bacula et pr\'eparez la base de
358 donn\'ees avec les commandes suivantes:
363 ./create_postgresql_database
365 ./make_postgresql_tables
367 ./grant_postgresql_privileges
372 \item Verifiez que vous avez acc\`es \`a la base de donn\'ees:
382 Vous ne devriez avoir aucune erreur.
383 \item Chargez la base PostgreSQL avec l'extraction MySQL gr\^ace \`a la
389 psql -Ubacula bacula <bacula-backup.dmp>
394 \item R\'eindexez vos tables avec les commandes suivantes:
401 SELECT SETVAL('basefiles_baseid_seq', (SELECT
402 MAX(baseid) FROM basefiles));
404 SELECT SETVAL('client_clientid_seq', (SELECT
405 MAX(clientid) FROM client));
407 SELECT SETVAL('file_fileid_seq', (SELECT MAX(fileid)
410 SELECT SETVAL('filename_filenameid_seq', (SELECT
411 MAX(filenameid) FROM filename));
413 SELECT SETVAL('fileset_filesetid_seq', (SELECT
414 MAX(filesetid) FROM fileset));
416 SELECT SETVAL('job_jobid_seq', (SELECT MAX(jobid) FROM job));
418 SELECT SETVAL('jobmedia_jobmediaid_seq', (SELECT
419 MAX(jobmediaid) FROM jobmedia));
421 SELECT SETVAL('media_mediaid_seq', (SELECT MAX(mediaid) FROM media));
423 SELECT SETVAL('path_pathid_seq', (SELECT MAX(pathid) FROM path));
425 SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool));
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.
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
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.
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.
451 \subsection*{Credits}
452 \index[general]{Credits }
453 \addcontentsline{toc}{subsection}{Credits}
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}