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 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.
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 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 :
103 (entrez le mot de passe root)
104 password pgsql (ou postgres)
105 (entrez un mot de passe pour cet utilisateur)
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)
115 A ce stade, vous devriez pouvoir ex\'ecuter la commande ./create\_bacula\_database
117 \item ./make\_bacula\_tables
119 Cr\'e\'ee les tables utilis\'ees par {\bf Bacula}.
120 \item ./grant\_bacula\_privileges
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
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.
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
141 repertoire_de_PostgreSQL/bin/psql --command \\dp bacula
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
152 local all all ident sameuser
154 local all all trust sameuser
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.
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 :
169 local bacula bacula md5
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
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 :
185 bacula=# alter user bacula with password 'secret';
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 :
198 dbname = bacula; user = bacula; password = "secret"
200 RunBeforeJob = "/etc/make_catalog_backup bacula bacula secret"
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
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 :
218 localhost:5432:bacula:bacula:secret
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.
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
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:
243 cd <r\'epertoire_d_installation>
246 ./grant_bacula_privileges
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:
258 (arr\^eter Baula ou demonter les volumes)
259 mt -f /dev/nst0 rewind
264 o\`u vous devrez remplacer {\bf /dev/nst0} par le chemin appropri\'e de votre
265 lecteur de sauvegarde.
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 :
282 Il en va de m\^eme avec la plupart des gestionnaires de paquetages.
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}
289 La proc\'edure de migration pr\'esent\'ee ici \`a fonctionn\'e pour Norm
290 Dressler \lt{}ndressler at dinmar dot com\gt{}
292 Ce process a \'et\'e test\'e en utilisant les versions suivantes des
293 diff\'erents logiciels:
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
302 ATTENTION! Par pr\'ecaution, r\'ealisez une sauvegarde compl\`ete de vos
303 syst\`emes avant de proc\'eder \`a cette migration.
306 \item Arr\^etez bacula (cd /etc/bacula;./bacula stop)
307 \item Lancez la commande pour extraire les donn\'ees de votre base MySQL:
312 mysqldump -f -t -n >bacula-backup.dmp
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,
340 host all all 127.0.0.1 255.255.255.255 trust
342 ATTENTION: vous devez red\'emmarer PostgreSQL si vous faites des changements dans ce fichier.
347 \item Allez dans le r\'epertoire /etc/bacula et pr\'eparez la base de
348 donn\'ees avec les commandes suivantes:
353 ./create_postgresql_database
355 ./make_postgresql_tables
357 ./grant_postgresql_privileges
362 \item Verifiez que vous avez acc\`es \`a la base de donn\'ees:
372 Vous ne devriez avoir aucune erreur.
373 \item Chargez la base PostgreSQL avec l'extraction MySQL gr\^ace \`a la
379 psql -Ubacula bacula <bacula-backup.dmp>
384 \item R\'eindexez vos tables avec les commandes suivantes:
391 SELECT SETVAL('basefiles_baseid_seq', (SELECT
392 MAX(baseid) FROM basefiles));
394 SELECT SETVAL('client_clientid_seq', (SELECT
395 MAX(clientid) FROM client));
397 SELECT SETVAL('file_fileid_seq', (SELECT MAX(fileid)
400 SELECT SETVAL('filename_filenameid_seq', (SELECT
401 MAX(filenameid) FROM filename));
403 SELECT SETVAL('fileset_filesetid_seq', (SELECT
404 MAX(filesetid) FROM fileset));
406 SELECT SETVAL('job_jobid_seq', (SELECT MAX(jobid) FROM job));
408 SELECT SETVAL('jobmedia_jobmediaid_seq', (SELECT
409 MAX(jobmediaid) FROM jobmedia));
411 SELECT SETVAL('media_mediaid_seq', (SELECT MAX(mediaid) FROM media));
413 SELECT SETVAL('path_pathid_seq', (SELECT MAX(pathid) FROM path));
415 SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool));
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.
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
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.
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.
441 \subsection*{Credits}
442 \index[general]{Credits }
443 \addcontentsline{toc}{subsection}{Credits}
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}