You are on page 1of 275

Formation PostgreSQL

Administration PostgreSQL
Cette formation vous est propose par BULL Formation : http://www.bullformation.!om
"n partenariat ave! la so!it #$L%B& : http://www.'alibo.!om
Administration PostgreSQL
Table des matires
Administration PostgreSQL...............................................................................................................12
Dcouvrir PostgreSQL........................................................................................................................12
1 Prambule..................................................................................................................................13
1.1 Au menu.............................................................................................................................13
1.2 Objectifs.............................................................................................................................1
1.3 Licence !reative !ommons !!"#$"%!"SA.....................................................................1
2 &n 'eu d()istoire........................................................................................................................1*
2.1 PostgreSQL +,+,.................................................................................................................1*
2.2 Princi'es fondateurs...........................................................................................................1-
2.3 Origines..............................................................................................................................1-
2. Origines .annes 2///0.......................................................................................................11
2.2 Progression du 'rojet " c)anges de mail...........................................................................13
2.* Progression du code...........................................................................................................2/
3 Les versions...............................................................................................................................21
3.1 4istori5ue...........................................................................................................................21
3.2 %umrotation......................................................................................................................21
3.3 6ersions courantes..............................................................................................................22
3. 6ersion 1.2..........................................................................................................................23
3.2 6ersion 1.3..........................................................................................................................2
3.* 6ersion 1...........................................................................................................................22
3.- 6ersion 3./..........................................................................................................................2*
3.1 6ersion 3.1..........................................................................................................................2*
3.3 6ersion 3.2..........................................................................................................................2-
3.1/ Quelle version utiliser +...................................................................................................2-
3.11 6ersions drives..............................................................................................................21
!once'ts de base........................................................................................................................23
.1 A!7D..................................................................................................................................23
.2 8ulti6ersion !oncurrenc9 !ontrol .86!!0....................................................................3/
.3 86!! et les verrous..........................................................................................................3/
. :ransactions........................................................................................................................31
.2 ;rite A)ead Logs< a=a ;AL..............................................................................................32
.* Avantages des ;AL............................................................................................................33
2 >onctionnalits...........................................................................................................................3
2.1 >onctionnalits ? dvelo''ement........................................................................................3
2.2 >onctionnalits ? e@tensibilit............................................................................................32
2.3 Scurit...............................................................................................................................3*
2. Aes'ect du Standard SQL..................................................................................................3*
2.2 6ues....................................................................................................................................3-
2.* Sc)mas..............................................................................................................................31
2.- !ontraintes.........................................................................................................................31
2.1 Domaines............................................................................................................................33
2.3 Bnums................................................................................................................................./
2.1/ :riggers.............................................................................................................................1
2.11 7nde@.................................................................................................................................2
2 / 275 http://www.bull-formation.om

Administration PostgreSQL
* S'onsors C Afrences..............................................................................................................3
*.1 S'onsors.............................................................................................................................3
*.2 Afrences..........................................................................................................................
*.3 $a)oo..................................................................................................................................2
- !onclusion.................................................................................................................................*
-.1 #ibliogra')ie......................................................................................................................*
-.2 Questions............................................................................................................................-
7nstallation de PostgreSQL.................................................................................................................1
1 7ntroduction................................................................................................................................3
1.1 Licence !reative !ommons !!"#$"%!"SA.....................................................................3
2 7nstallation D 'artir des sources..................................................................................................21
2.1 :lc)argement..................................................................................................................21
2.2 !om'ilation........................................................................................................................21
2.3 !om'ilation ? o'tions.........................................................................................................23
2. !om'ilation ? o'tions.........................................................................................................23
2.2 :ests de rgression..............................................................................................................*/
2.* 7nstallation..........................................................................................................................*1
2.- Post"installation 1E2............................................................................................................*1
2.1 Post"installation 2E2............................................................................................................*2
2.3 Lancement..........................................................................................................................*
3 7nstallation D 'artir des binaires.................................................................................................*2
3.1 Pa5uets debian officiels......................................................................................................*2
3.2 #ac='orts Debian...............................................................................................................**
3.3 Aed4at E >edora E Suse.......................................................................................................**
7nstallation sous ;indoFs.........................................................................................................*1
.1 7nstalleur gra')i5ue " bienvenue........................................................................................*3
.2 7nstalleur gra')i5ue " r'ertoire d(installation....................................................................-/
.3 7nstalleur gra')i5ue " r'ertoire donnes...........................................................................-1
. 7nstalleur gra')i5ue " mot de 'asse....................................................................................-2
.2 7nstalleur gra')i5ue " 'ort..................................................................................................-3
.* 7nstalleur gra')i5ue " autres...............................................................................................-
.- 7nstalleur gra')i5ue " 'rGt..................................................................................................-2
.1 7nstalleur gra')i5ue " termin............................................................................................-*
2 Premiers rglages.......................................................................................................................--
2.1 Scurit...............................................................................................................................--
2.2 !onfiguration minimale.....................................................................................................-1
2.3 !onfiguration des conne@ions............................................................................................-1
2. !onfiguration des ressources mmoires.............................................................................-3
2.2 !onfiguration des journau@ de transactions.......................................................................-3
2.* !onfiguration des ressources mmoires.............................................................................1/
2.- !onfiguration des dmons..................................................................................................1/
2.1 Dmarrage..........................................................................................................................11
2.3 :ests....................................................................................................................................12
* 8ise D jour.................................................................................................................................13
*.1 Aecommandations..............................................................................................................13
*.2 Sauvegarde.........................................................................................................................1
*.3 8ise D jour majeure 1E2 ? Sauvegarde et 8ise D jour.........................................................12
*. 8ise D jour majeure 2E2 ? Aestauration..............................................................................1*
- !onclusion.................................................................................................................................1-
! / 275 http://www.bull-formation.om

Administration PostgreSQL
-.1 Pour aller 'lus loin.............................................................................................................1-
-.2 Questions............................................................................................................................1-
:ravau@ 'rati5ues...............................................................................................................................11
1 Hnoncs......................................................................................................................................13
1.1 7nstallation de 'a5uets binaires..........................................................................................13
1.1.1 Pr"installation............................................................................................................13
1.1.2 7nstallation..................................................................................................................13
1.1.3 Dmarrage..................................................................................................................13
1.1. Bm'lacement des fic)iers...........................................................................................13
1.1.2 !onfiguration..............................................................................................................13
1.1.* Ieu de donnes............................................................................................................13
1.2 7nstallation D 'artir des sources..........................................................................................13
1.2.1 Sauvegarde.................................................................................................................13
1.2.2 :lc)argement...........................................................................................................13
1.2.3 Bnvironnement de com'ilation..................................................................................3/
1.2. !om'ilation et installation.........................................................................................3/
1.2.2 Lancement..................................................................................................................3/
1.3 8igration des donnes.......................................................................................................3/
1.3.1 6rification.................................................................................................................3/
1.3.2 Aestauration................................................................................................................3/
1. Pour aller 'lus loin.............................................................................................................3/
2 Solutions....................................................................................................................................31
2.1 7nstallation de 'a5uets binaires..........................................................................................31
2.1.1 Pr"installation............................................................................................................31
2.1.2 7nstallation..................................................................................................................31
2.1.3 Dmarrage..................................................................................................................31
2.1. Bm'lacement des fic)iers...........................................................................................31
2.1.2 !onfiguration..............................................................................................................32
2.1.* Ieu de donnes............................................................................................................32
2.2 7nstallation D 'artir des sources..........................................................................................32
2.2.1 Sauvegarde.................................................................................................................32
2.2.2 :lc)argement...........................................................................................................32
2.2.3 Bnvironnement de com'ilation..................................................................................32
2.2. !om'ilation et installation.........................................................................................33
2.2.2 Lancement..................................................................................................................33
2.3 8igration des donnes.......................................................................................................33
2.3.1 6rification.................................................................................................................33
2.3.2 Aestauration................................................................................................................33
Outils gra')i5ues................................................................................................................................3
1 Prambule..................................................................................................................................32
1.1 Au menu.............................................................................................................................32
1.2 Objectifs.............................................................................................................................32
1.3 Licence !reative !ommons !!"#$"%!"SA.....................................................................32
2 Druid..........................................................................................................................................3-
2.1 >onctionnalits .1E20..........................................................................................................3-
2.2 >onctionnalits .2E20..........................................................................................................3-
2.3 Documentation de la base de donnes................................................................................31
2. !ration d(une base............................................................................................................31
2.2 !ration d(objets de base de donnes.................................................................................33
" / 275 http://www.bull-formation.om

Administration PostgreSQL
2.* 8odification d(objets de base de donnes..........................................................................33
2.- :9'es de donnes..............................................................................................................1//
2.1 Jestion des tables.............................................................................................................1//
2.3 8odification d(une table...................................................................................................1/1
2.1/ Jnration......................................................................................................................1/1
2.11 Production de code.........................................................................................................1/2
2.12 6ue entitsErelations.......................................................................................................1/2
2.13 6ue entitsErelations.......................................................................................................1/3
3 PgAdmin 777.............................................................................................................................1/
3.1 Prsentation gnrale........................................................................................................1/
3.2 7nstallation........................................................................................................................1/2
3.3 >onctionnalits .1E20........................................................................................................1/2
3. >onctionnalits .2E20........................................................................................................1/2
3.2 !onne@ion........................................................................................................................1/*
3.* Hdition des fic)iers de configuration...............................................................................1/*
3.- :Kc)es de maintenance.....................................................................................................1/-
3.1 8aintenance.....................................................................................................................1/-
3.3 6isualisation des verrous..................................................................................................1/1
3.1/ >enGtre des verrous.........................................................................................................1/1
3.11 Sauvegarde.....................................................................................................................1/3
3.12 Aestauration....................................................................................................................1/3
3.13 Jestion des rLles............................................................................................................11/
3.1 Jestion des tables...........................................................................................................111
3.12 Affic)age des donnes....................................................................................................111
3.1* Jestion des objets...........................................................................................................112
3.1- Hditeur de re5uGtes.........................................................................................................112
3.11 >enGtre de l(diteur de re5uGtes......................................................................................113
'gAgent....................................................................................................................................11
.1 7nstallation de 'gAgent.....................................................................................................11
.2 jobs...................................................................................................................................11
.3 Planifier une tac)e de maintenance..................................................................................112
. Hta'es...............................................................................................................................112
.2 Dfinir une ta'e..............................................................................................................11*
.* Planification.....................................................................................................................11*
.- Bcran de 'lanification.......................................................................................................11-
2 ')'PgAdmin............................................................................................................................111
2.1 ')'PgAdmin ? 'rsentation gnrale...............................................................................111
2.2 ')'PgAdmin ? >onctionnalits 1E2...................................................................................113
2.3 ')'PgAdmin ? >onctionnalits 2E2...................................................................................12/
2. Arborescence " A'erMus....................................................................................................121
2..1 Dtails.......................................................................................................................121
2..2 Jrou'es de serveurs.................................................................................................122
2.2 Arborescence " :ables< vues< s5uences et fonctions.......................................................123
2.* Arborescence " Dtails table.............................................................................................12
2.- Arborescence " Dtails vue...............................................................................................122
2.1 B@cuter des re5uGtes.......................................................................................................12*
2.3 4istori5ue des re5uGtes....................................................................................................12-
2.1/ Aec)erc)e.......................................................................................................................121
2.11 Processus en cours..........................................................................................................123
5 / 275 http://www.bull-formation.om

Administration PostgreSQL
2.12 6isualisation des verrous................................................................................................13/
2.13 :Kc)e de maintenance 1E3..............................................................................................131
2.1 :Kc)e de maintenance 2E3..............................................................................................132
2.12 :Kc)e de maintenance 3E3..............................................................................................133
2.1* Dfinition d(une table.....................................................................................................13
2.1- 7nformation sur les tables...............................................................................................132
* !onclusion...............................................................................................................................13*
*.1 #ibliogra')ie....................................................................................................................13*
*.2 Questions..........................................................................................................................13*
:ravau@ 'rati5ues.............................................................................................................................13-
1 Hnoncs....................................................................................................................................131
1.1 'gAdmin...........................................................................................................................131
1.2 Druid................................................................................................................................133
2 Solutions..................................................................................................................................12
2.1 'gAdmin...........................................................................................................................12
2.2 Druid................................................................................................................................12
:Kc)es courantes...............................................................................................................................13
1 7ntroduction..............................................................................................................................1
1.1 Licence !reative !ommons !!"#$"%!"SA...................................................................1
2 Jestion des bases.....................................................................................................................1*
2.1 !ration d(une base..........................................................................................................1*
2.2 Su''ression d(une base.....................................................................................................1*
2.3 !onfiguration...................................................................................................................1-
2. 8odNle de base .ie. :em'late0.........................................................................................1-
3 &tilisateurs C Jrou'es............................................................................................................13
3.1 6ersions............................................................................................................................13
3.2 &tilisateurs.......................................................................................................................12/
3.3 Jrou'es............................................................................................................................12/
3. ALles.................................................................................................................................121
3.2 O'tions de ((!ABA:B AOLB((..........................................................................................121
3.* SB: AOLB.......................................................................................................................122
3.- OABASS7J% O;%BDO et ODAOP O;%BDO.................................................................123
3.1 Attributs............................................................................................................................123
3.3 Droits................................................................................................................................12
Aut)entification du client.........................................................................................................122
.1 !onfiguration du fic)ier 'gP)ba.conf .1E0.....................................................................122
.2 !onfiguration du fic)ier 'gP)ba.conf .2E0.....................................................................12*
.3 !onfiguration du fic)ier 'gP)ba.conf .3E0.....................................................................12*
. !onfiguration du fic)ier 'gP)ba.conf .E0.....................................................................12-
.2 8t)odes d(aut)entification .1E30....................................................................................121
.* 8t)odes d(aut)entification .2E30....................................................................................121
.- 8t)odes d(aut)entification .3E30....................................................................................123
2 8aintenance.............................................................................................................................1*/
2.1 Princi'es...........................................................................................................................1*/
2.2 Sauvegarde.......................................................................................................................1*1
2.3 Bs'ace dis5ue " 6A!&&8...............................................................................................1*2
2. Bs'ace dis5ue " 6A!&&8 >&LL....................................................................................1*3
2.2 Bs'ace dis5ue " stratgie..................................................................................................1*3
2.* Statisti5ues .1E20..............................................................................................................1*
# / 275 http://www.bull-formation.om

Administration PostgreSQL
2.- Statisti5ues .2E20..............................................................................................................1*
2.1 Jel des Q7D......................................................................................................................1*2
2.3 Le dmon Autovacuum....................................................................................................1**
2.1/ Autovacuum ? 'aramNtres .1E20......................................................................................1**
2.11 Autovacuum ? 'aramNtres .2E20......................................................................................1*-
2.12 7nde@ation.......................................................................................................................1*1
2.13 !L&S:BA ou 6A!&&8 +............................................................................................1*3
2.1 Iournau@ a''licatifs.......................................................................................................1*3
* !onclusion...............................................................................................................................1-1
*.1 Pour aller 'lus loin...........................................................................................................1-1
*.2 Questions..........................................................................................................................1-1
:ravau@ Prati5ues.............................................................................................................................1-2
1 Hnoncs....................................................................................................................................1-3
1.1 Pr"re5uis.........................................................................................................................1-3
1.2 Jestion des rLles..............................................................................................................1-3
1.2.1 !ration d(un utilisateur et d(un grou'e....................................................................1-3
1.2.2 8odification des 'ermissions...................................................................................1-3
1.2.3 4ritage des droits au login......................................................................................1-
1.3 'gP)ba.conf......................................................................................................................1-
1. 6A!&&8.........................................................................................................................1-
1..1 %etto9age avec 6A!&&8.......................................................................................1-
1..2 %etto9age avec 6A!&&8 >&LL.............................................................................1-
1.2 :runcate ou Delete +.........................................................................................................1-
1.* Statisti5ues.......................................................................................................................1-2
1.- Jel des Q7D......................................................................................................................1-2
1.1 Dmon Autovacuum.........................................................................................................1-2
1.3 Ainde@ation....................................................................................................................1-2
1.1/ :races.............................................................................................................................1-2
2 Solutions..................................................................................................................................1--
2.1 Pr"re5uis.........................................................................................................................1--
2.2 Jestion des rLles..............................................................................................................1--
2.2.1 !ration d(un utilisateur et d(un grou'e....................................................................1--
2.2.2 8odification des 'ermissions...................................................................................1-1
2.2.3 4ritage des droits au login......................................................................................1-3
2.3 'gP)ba.conf......................................................................................................................1-3
2. 6A!&&8.........................................................................................................................1-3
2..1 %etto9age avec 6A!&&8.......................................................................................1-3
2..2 %etto9age avec 6A!&&8 >&LL.............................................................................111
2.2 :runcate ou Delete +.........................................................................................................111
2.* Statisti5ues.......................................................................................................................111
2.- Jel des Q7D......................................................................................................................112
2.1 Dmon Autovacuum.........................................................................................................112
2.3 Ainde@ation....................................................................................................................113
2.1/ :races.............................................................................................................................11
PostgreSQL ? Sauvegarde E Aestauration..........................................................................................112
1 7ntroduction..............................................................................................................................11*
1.1 8enu................................................................................................................................11*
1.2 Licence !reative !ommons !!"#$"%!"SA...................................................................11*
2 Dfinir une 'oliti5ue de sauvegarde........................................................................................111
7 / 275 http://www.bull-formation.om

Administration PostgreSQL
2.1 Objectifs...........................................................................................................................113
2.2 Diffrentes a''roc)es.......................................................................................................113
3 Sauvegardes SQL.....................................................................................................................13/
3.1 Sauvegarde avec 'gPdum' .1E20......................................................................................13/
3.2 Sauvegarde avec 'gPdum' .2E20......................................................................................131
3.3 Aestauration des arc)ives .1E0........................................................................................131
3. Aestauration des arc)ives .2E0........................................................................................132
3.2 Aestauration des arc)ives .3E0........................................................................................132
3.* Aestauration des arc)ives .E0........................................................................................132
3.- 8igration de donnes.......................................................................................................133
3.1 SauvegarderErestaurer un cluster......................................................................................133
Sauvegarde au niveau s9stNme de fic)iers...............................................................................13
.1 Limitations.......................................................................................................................13
.2 7mage du s9stNme de fic)iers .1E30...................................................................................13
.3 7mage du s9stNme de fic)iers .2E30...................................................................................132
. 7mage du s9stNme de fic)iers .3E30...................................................................................132
.2 Sauvegarde avec rs9nc.....................................................................................................132
2 Sauvegardes P7:A....................................................................................................................13*
2.1 Prsentation des QLOJ....................................................................................................13*
2.2 Avantages .1E20.................................................................................................................13-
2.3 Avantages .2E20.................................................................................................................13-
2. Limitations.......................................................................................................................13-
2.2 Aecommandations............................................................................................................131
2.* !onfigurer l(arc)ivage......................................................................................................131
2.- Sauvegarde P7:A .1E20.....................................................................................................133
2.1 Sauvegarde P7:A .2E20.....................................................................................................2//
2.3 Aestauration P7:A .1E30...................................................................................................2//
2.1/ Aestauration P7:A .2E30.................................................................................................2/1
2.11 Aestauration P7:A .3E30.................................................................................................2/2
2.12 Outil 'glesslog...............................................................................................................2/2
2.13 Avertissements................................................................................................................2/3
2.1 Log S)i''ing..................................................................................................................2/3
2.12 'gPstandb9.....................................................................................................................2/
2.1* Falmgr............................................................................................................................2/
2.1- Aecommandations gnrales..........................................................................................2/2
* Outils de sauvegarde e@ternes..................................................................................................2/*
- 8atrice.....................................................................................................................................2/-
1 !onclusion...............................................................................................................................2/1
1.1 Questions..........................................................................................................................2/1
:ravau@ Prati5ues.............................................................................................................................2/3
1 Hnoncs....................................................................................................................................21/
1.1 Sauvegardes SQL.............................................................................................................21/
1.1.1 Sauvegarde SQL d(une base......................................................................................21/
1.1.2 Sauvegarde SQL de toutes les bases.........................................................................21/
1.1.3 Sauvegarde SQL de tables........................................................................................21/
1.2 Aestaurations SQL...........................................................................................................21/
1.2.1 Aestauration d(une base de donnes.........................................................................21/
1.2.2 Aestauration d(une table............................................................................................21/
1.2.3 8igration de donnes...............................................................................................21/
$ / 275 http://www.bull-formation.om

Administration PostgreSQL
1.3 Sauvegardes P7:A............................................................................................................211
1.3.1 Sauvegarde................................................................................................................211
1.3.2 Aestauration..............................................................................................................211
1. 8ise en 'lace du ((Log S)i''ing((.....................................................................................211
2 Solutions..................................................................................................................................212
2.1 Sauvegardes SQL.............................................................................................................212
2.1.1 Sauvegarde SQL d(une base......................................................................................212
2.1.2 Sauvegarde SQL de toutes les bases.........................................................................212
2.1.3 Sauvegarde SQL de tables........................................................................................212
2.2 Aestaurations SQL...........................................................................................................213
2.2.1 Aestauration d(une base de donnes.........................................................................213
2.2.2 Aestauration d(une table............................................................................................213
2.2.3 8igration de donnes...............................................................................................213
2.3 Sauvegardes P7:A............................................................................................................213
2.3.1 Sauvegarde...............................................................................................................213
2.3.2 Aestauration..............................................................................................................212
2. 8ise en 'lace du ((Log S)i''ing((.....................................................................................21*
PostgreSQL ? 8onitoring..................................................................................................................213
1 7ntroduction..............................................................................................................................22/
1.1 Licence !reative !ommons !!"#$"%!"SA...................................................................22/
2 Plan..........................................................................................................................................222
3 Partie 1 ? Politi5ue de suivi......................................................................................................223
3.1 Objectifs du suivi.............................................................................................................223
3.2 &tilisateurs concerns......................................................................................................22
3.3 7ndicateurs D surveiller .1E0............................................................................................222
3. 7ndicateurs D surveiller .2E0............................................................................................222
3.2 7ndicateurs D surveiller .3E0............................................................................................222
3.* 7ndicateurs D surveiller .E0............................................................................................22*
3.- Outils internes..................................................................................................................22*
3.1 Outils e@ternes..................................................................................................................22-
3.3 Pr"re5uis.........................................................................................................................22-
Partie 2 ? Statisti5ues................................................................................................................221
.1 Statisti5ues ? configuration...............................................................................................221
.2 Statisti5ues ? visualisation .1E-0.......................................................................................223
.3 Statisti5ues ? visualisation .2E-0.......................................................................................23/
. Statisti5ues ? visualisation .3E-0.......................................................................................23/
.2 Statisti5ues ? visualisation .E-0.......................................................................................231
.* Statisti5ues ? visualisation .2E-0.......................................................................................232
.- Statisti5ues ? visualisation .*E-0.......................................................................................232
.1 Statisti5ues ? visualisation .-E-0.......................................................................................233
.3 Statisti5ues ? visualisation................................................................................................233
.1/ Stats ? commandes..........................................................................................................233
2 Partie 3 ? anal9se de logs..........................................................................................................232
2.1 !onfiguration ? oR tracer +...............................................................................................232
2.2 !onfiguration ? 5uand tracer +..........................................................................................23*
2.3 !onfiguration ? 5ue tracer +..............................................................................................23-
2. !onfiguration ? activer s9slog..........................................................................................23-
2.2 !onfiguration ? activer les traces......................................................................................231
2.* !onfiguration ? e@em'le...................................................................................................231
% / 275 http://www.bull-formation.om

Administration PostgreSQL
2.- 'g>ouine ? 'rsentation....................................................................................................233
2.1 'g>ouine ? utilisation........................................................................................................233
2.3 'g>ouine ? co'ie d(cran...................................................................................................2/
2.1/ 'g>ouine ? co'ie d(cran.................................................................................................21
2.11 Anal9se de re5uGtes ? PQA.............................................................................................21
2.12 Anal9se de re5uGtes ? BPQA..........................................................................................22
2.13 Anal9se de re5uGtes ? 'gsi..............................................................................................23
2.1 'gPstatPstatements.........................................................................................................23
2.12 Alertes D 'artir des journau@ a''licatifs.........................................................................2
* Partie ? visualisation..............................................................................................................2*
*.1 6isualisation avec 8unin.................................................................................................2*
*.2 Avantages de 8unin.........................................................................................................2*
*.3 8unin ? co'ie d(cran.......................................................................................................2-
*. 8unin ? co'ie d(cran.......................................................................................................21
*.2 6isualisation ? autres 'istes..............................................................................................21
*.* 6isualisation avec Sabbi@................................................................................................23
*.- Avantages et inconvnients de Sabbi@.............................................................................23
*.1 Sabbi@ ? co'ie d(cran......................................................................................................22/
*.3 Sabbi@ ? co'ie d(cran......................................................................................................221
- Partie 2 ? surveillance...............................................................................................................222
-.1 Surveillance ? commandes &ni@.......................................................................................222
-.2 Surveillance ? commandes &ni@.......................................................................................223
-.3 Surveillance ? commandes &ni@.......................................................................................22
-. Surveillance ? commandes &ni@.......................................................................................222
-.2 Surveillance ? commandes ;in32....................................................................................222
-.* Surveillance ? 'gPloc=s....................................................................................................22*
-.- Surveillance ? dis5ues.......................................................................................................22-
-.1 'gsna' ? 'rsentation........................................................................................................22-
-.3 'gsna' ? utilisation...........................................................................................................221
-.1/ 'gsna' ? co'ie d(cran....................................................................................................221
-.11 'gsna' ? co'ie d(cran.....................................................................................................223
-.12 %agios............................................................................................................................223
-.13 %agios ? avantages..........................................................................................................223
-.1 %agios ? co'ie d(cran....................................................................................................2*/
-.12 %agios ? co'ie d(cran....................................................................................................2*1
-.1* Pn'%agios....................................................................................................................2*1
-.1- Surveillance avec 8onit.................................................................................................2*2
-.11 Surveillance avec 8onit.................................................................................................2*3
-.13 Avantages et inconvnients de 8onit.............................................................................2*3
-.2/ 8onit ? co'ie d(cran......................................................................................................2*
-.21 8onit ? co'ie d(cran......................................................................................................2*2
-.22 Surveillance ? d(autres 'istes..........................................................................................2*2
1 !onclusion...............................................................................................................................2**
1.1 Questions..........................................................................................................................2**
:ravau@ Prati5ues.............................................................................................................................2*-
1 Hnoncs....................................................................................................................................2*1
1.1 8unin...............................................................................................................................2*1
1.2 'g>ouine...........................................................................................................................2*1
1.3 PJSna'.............................................................................................................................2*1
&' / 275 http://www.bull-formation.om

Administration PostgreSQL
2 !orrections...............................................................................................................................2*3
2.1 8unin...............................................................................................................................2*3
2.1.1 7nstaller le serveur munin sur votre 'oste.................................................................2*3
2.1.1.1 D'endances.....................................................................................................2*3
2.1.1.2 7nstallation........................................................................................................2*3
2.1.2 7nstaller le client munin sur votre 'oste...................................................................2*3
2.1.2.1 D'endances.....................................................................................................2*3
2.1.2.2 7nstallation........................................................................................................2-/
2.1.3 !onfigurer le serveur munin 'our 5ue seul l(accNs local soit autoris......................2-/
2.1. 7nstaller les 'lugins PostgreSQL..............................................................................2-/
2.1.2 !ration du 'lugin munin.........................................................................................2-1
2.1.* 7nstallation du 'lugin................................................................................................2-2
2.2 'g>ouine...........................................................................................................................2-3
2.2.1 7nstaller 'gfouine......................................................................................................2-3
2.2.2 !onfigurer les traces de PostgreSQL........................................................................2-3
2.2.3 !onfigurer s9slog.....................................................................................................2-3
2.2. &tiliser 'gfouine 'our gnrer des ra''orts.............................................................2-
2.3 PJSna'.............................................................................................................................2-
2.3.1 7nstaller 'gsna'.........................................................................................................2-
2.3.2 B@cuter 'gsna'........................................................................................................2-2
2.3.3 Divers.......................................................................................................................2-2
&& / 275 http://www.bull-formation.om

Administration PostgreSQL
Administration PostgreSQL
Dcouvrir PostgreSQL
&2 / 275 http://www.bull-formation.om

Administration PostgreSQL
( Prambule
Quelle histoire )
Un 'es plus gran's pro*ets libres a!tif
Souvent !it !omme e+emple
L,histoire 'e PostgreSQL est longue- ri!he et passionnante. $u !ot 'es pro*ets libres
$pa!he et Linu+- PostgreSQL est l,un 'es plus vieu+ logi!iels libres en a!tivit et fait
partie 'es S.B# les plus sophisti/us 0 l,heure a!tuelle.
$u sein 'es 'iffrentes !ommunauts libres- PostgreSQL est souvent utilis !omme
e+emple 0 'iffrents niveau+ :
Qualit 'u !o'e
%n'pen'an!e 'es 'veloppeurs et gouvernan!e 'u pro*et
1a!tivit 'e la !ommunaut
Stabilit et puissan!e 'u logi!iel
2ous !es atouts font /ue PostgreSQL est 'sormais re!onnu et a'opt par 'es milliers 'e
gran'es so!its 'e par le mon'e.
(.( $u menu
(. &rigines et histori/ue 'u pro*et
3. 4ersions et feuille 'e route
5. Con!epts 'e base
6. Fon!tionnalits
7. 1fren!es fran8aises et internationales

Cette premi9re partie est un tour ',hori:on pour '!ouvrir les multiples fa!ettes 'u
s;st9me 'e base 'e 'onnes libre PostgreSQL.
Les 'eu+ premi9res parties e+pli/uent la gen9se 'u pro*et et 'taille les 'iffren!es
entres les versions su!!essives 'u logi!iel. Puis nous ferons un rappel thori/ue sur les
prin!ipes fon'ateurs 'e PostgreSQL <$C%#- =4CC- 2ransa!tions- >ournau+ 'e
transa!tions? ainsi /ue sur les fon!tionnalits essentielles <s!hmas- in'e+- tablespa!es-
triggers?.
&! / 275 http://www.bull-formation.om

Administration PostgreSQL
@ous terminerons par un panorama ',utilisateurs renomms et 'e !as ',utilisations
remar/uables.
(.3 &b*e!tifs
Compren're les origines 'u pro*et
1evoir les prin!ipes fon'amentau+
#!ouvrir 'es e+emples !on!rets
PostgreSQL est un 'es plus vieu+ logi!iels &penSour!e ) Compren're son histoire permet
'e mieu+ raliser le !hemin par!ouru et les raisons 'e son su!!9s. Par ailleurs- un rappel
'es !on!epts 'e base permet ',avan!er plus fa!ilement lors 'es mo'ules suivants. "nfin-
une srie 'e !as ',utilisation et 'e rfren!es sont tou*ours utiles pour faire le !hoi+ 'e
PostgreSQL en a;ant 'es rep9res !on!rets.
(.5 Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
&" / 275 http://www.bull-formation.om

Administration PostgreSQL
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
&5 / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Un peu ',histoire...
L,origine 'u nom
Les origines 'u pro*et
La philosophie
3.( PostgreSQL G)G)
=i!hael StonebraHer re!o'e Ingres
post IingresJ K postingres K postgres
postgres K PostgreSQL
L,origine 'u nom PostgreSQL remonte 0 la base 'e 'onnes %ngres- 'veloppe 0
l,universit 'e BerHele; par =i!hael StonebraHer. "n (LM7- il pren' la '!ision 'e
repren're le 'veloppement 0 partir 'e :ro et nomme !e nouveau logi!iel Postgres-
!omme ra!!our!i 'e post%ngres.
"n (LL7- ave! l,a*out 'u support 'u langage SQL- postgres fut renomm PostgresL7 puis
PostgreSQL.
$u*our',hui- le nom offi!iel est IPostgreSQLJ <pronon!e: Ipost gresse Q LJ?.
Cepen'ant- le nom IPostgresJ est a!!ept !omme alias.
Pour aller plus loin :
N http://ar!hives.postgres/l.org/pgs/la'vo!a!;/3FFO((/msgFF(FL.php
N http://wiHi.postgres/l.org/wiHi/Postgres
&# / 275 http://www.bull-formation.om

Administration PostgreSQL
3.3 Prin!ipes fon'ateurs
S!urit 'es 'onnes <ACID?
1espe!t 'es normes <ANSI SQL?
Fon!tionnalits
Performan!es
Simpli!it 'u !o'e
#epuis son origine- PostgreSQL a tou*ours privilgi la stabilit et le respe!t 'es
stan'ar's plutPt /ue les performan!es.
Ce!i e+pli/ue en partie la rputation 'e relative lenteur et 'e !omple+it fa!e au+
autres S.B# 'u mar!h. Cette image est 'sormais totalement obsol9te- notamment
grQ!e au+ avan!es ralises 'epuis les versions M.+.
3.5 &rigines
$nnes (LOF : Ingres est 'velopp 0 BerHele;
(LM7 : Postgres su!!9'e 0 Ingres
(LL7 : $*out 'u langage SQL.
(LLR : Postgres 'evient PostgreSQL
(LLR : Cration 'u PostgreSQL Global Development Group
L,histoire 'e PostgreSQL remonte 0 la base 'e 'onnes Ingres- 'veloppe 0 BerHele;
par =i!hael StonebraHer. Lors/ue !e 'ernier '!i'a en (LM7 'e re!ommen!er le
'veloppement 'e :ro- il nomma le logi!iel Postgres- !omme ra!!our!i 'e post
%ngres. Lors 'e l,a*out 'es fon!tionnalits SQL en (LL7 par 'eu+ tu'iants !hinois 'e
BerHele;- Postgres fut renomm Postgres95. Ce nom fut !hang 0 la fin 'e (LLR en
PostgreSQL lors 'e la libration 'u !o'e sour!e 'e PostgreSQL.
#e longs 'bats enflamms animent tou*ours la !ommunaut pour savoir s,il faut revenir
au nom initial Postgres.
D l,heure a!tuelle- le nom Postgres est a!!ept !omme un alias 'u nom offi!iel
PostgreSQL.
&7 / 275 http://www.bull-formation.om

Administration PostgreSQL
Plus ',informations :
N http://www.postgres/l.org/about/histor;
3.6 &rigines <annes 3FFF?
$pparitions 'e la !ommunaut internationale
S 3FFF: Communaut *aponaise
3FF6 : Communaut fran!ophone
3FFR : SP%
3FFO : Communaut italienne
3FFM : PostgreSQL "urope et US
3FFL : Boom 'es P.#a;
Les annes 3FFF voient lTapparition 'e !ommunauts lo!ales organises autour
',asso!iation ou 'e mani9re informelle. Cha/ue !ommunaut organise la promotion- la
'iffusion ',information et l,entrai'e 0 son propre niveau.
"n 3FFF apparaEt la !ommunaut *aponaise. "lle 'ispose ',un gran' groupe- !apable 'e
raliser 'es !onfren!es !ha/ue anne. "lle !ompte au 'ernier re!ensement !onnu- plus
'e 5FFF membres.
"n 3FF6 nait l,asso!iation fran8aise <loi (LF(? appele PostgreSQLfr. Cette asso!iation a
pour but 'e fournir un !a're lgal pour pouvoir parti!iper 0 !ertains vnements !omme
Solutions Linu+- les 1=LL ou le pg#a; 3FFM 0 2oulouse. "lle permet aussi 'e r!olter 'es
fon's pour ai'er 0 la promotion 'e PostgreSQL.
"n 3FFR- le P.#. int9gre le U Software in the Publi! %nterest N- %n!. <SP%?- une
organisation 0 but non lu!ratif !harge 'e !olle!ter et re'istribuer 'es finan!ements.
Ce n,est pas une organisation sp!ifi/ue 0 PostgreSQL. "lle a t !re 0 l,initiative 'e
#ebian et 'ispose aussi 'e membres !omme &pen&ffi!e.org.
"n 3FFM- 'ou:e ans apr9s la !ration 'u pro*et- 'es asso!iations ',utilisateurs
apparaissent pour soutenir- promouvoir et 'velopper PostgreSQL 0 l,!helle
internationale. PostgreSQL UV organise une *ourne 'e !onfren!es 0 Lon'res-
PostgreSQL Fr en organise une 0 2oulouse. #es U surgroupes N apparaissent aussi pour
ai'er les groupes. P.US apparaEt pour !onsoli'er les 'iffrents groupes amri!ains
',utilisateurs PostgreSQL. Ces 'erniers taient plutPt !rs gographi/uement- par tat
ou grosse ville. %ls peuvent re*oin're et Btre ai's par !ette organisation. #e mBme en
"urope arrive PostgreSQL.eu une asso!iation !harge ',ai'er les utilisateurs 'e
PostgreSQL souhaitant mettre en pla!e 'es vnements. Son gros 'u travail est
l,organisation ',un vnement ma*eur en "urope tous les ans : le P.#a;.eu. %l a eu lieu
&$ / 275 http://www.bull-formation.om

Administration PostgreSQL
la premi9re fois en Fran!e- 0 Paris- en 3FFL- puis en $llemagne 0 Stuttgart- en 3F(F. La
'estination pour 3F(( n,est pas en!ore !onnue. #es rumeurs parlent 'e nouveau
',$mster'am.
"n 3F(F- on 'nombre plus ',une !onfren!e par mois !onsa!re uni/uement 0
PostgreSQL 'ans le mon'e.
Communaut *aponaise: http://www.postgres/l.*p
Communaut fran!ophone: http://www.postgres/l.fr
Communaut italienne: http://www.itpug.org
Communaut europenne : http://www.postgres/l.eu
Communaut US : http://www.postgres/l.us
3.7 Progression 'u pro*et !hanges 'e mail
trafic des listes de diffusion
Ce graphe reprsente l,volution 'u trafi! 'es listes 'e 'iffusion 'u pro*et /ui est
!orolaire 'u nombre ',utilisateurs 'u logi!iel.
&n remar/ue une augmentation tr9s importante *us/u,en 3FF7 puis une petite !hute en
3FFM- un peu r!upre en 3FFL.
La mo;enne a!tuelle est ',environ RFFF messages par mois. Ce /ui 'onne environ 3FF
messages par *our sur les 35 listes a!tives.
Sour!e 'u graphe :
N http://postgres/l.marHmail.org/
&n peut voir l,importan!e 'e !es !hiffres en !omparant le trafi! 'es listes PostgreSQL et
=;SQL <'atant 'e fvrier 3FFM?:
http://marHmail.blogspot.!om/3FFM/F3/postgres/lmoretraffi!thanm;s/lan'.html
&% / 275 http://www.bull-formation.om

Administration PostgreSQL
$!tuellement- il ; a environ 37 messages par *our sur les listes =;SQL et (F pour
Firebir'.
Pour aller plus loin : &n peut galement visualiser l,volution 'es
!ontributions 'e la !ommunaut PostgreSQL grQ!e au pro*et Code Swarm :
http://www.vimeo.!om/(FM(RMF
3.R Progression 'u !o'e
volution du nombre de lignes de code dans les sources de PostgreSQL

Ce graphe reprsente l,volution 'u nombre 'e lignes 'e !o'e 'ans les sour!es 'e
PostgreSQL. Cela permet 'e bien visualiser l,volution 'u pro*et en terme 'e
'veloppement.
L0 en!ore- on note une augmentation !onstante 'epuis 3FFF ave! une !roissan!e
rguli9re ',environ 37FFF lignes 'e !o'e C par an. Le plus intressant est !ertainement
'e noter /ue l,volution est !onstante.
$!tuellement- PostgreSQL est !ompos 'e MOF.FFF lignes 'e !o'e <'ont 35F.FFF lignes
'e !ommentaires?- pour environ 3FF 'veloppeurs a!tifs.
Sour!e: https://www.ohloh.net/p/postgres/anal;ses/latest
2' / 275 http://www.bull-formation.om

Administration PostgreSQL
5 Les versions
4ersions obsol9tes : O.6 0 M.(
#e M.3 0 L.(
L.3 G
4ersions 'rives
5.( Wistori/ue
(LLR : v(.F premi9re version publie
3FF5 : vO.6 premi9re version rellement stable
3FF7 : vM.F arrive sur Xin'ows
3FFM : vM.5 performan!e et fon!tionnalits
3F(F : vL.F rpli!ation intgre

La version 8 mar/ue l,entre tant atten'ue 'e PostgreSQL 'ans le mar!h 'es SGDB 'e
haut niveau- en apportant 'es fon!tionnalits telles /ue les tablespa!es- les pro!'ures
sto!Hes en ava- le Po!nt In "!me #e$over%- la rpli!ation as;n!hrone ainsi
/u,une version native pour &!ndows.
La version 9 semble pen!her vers la haute'isponibilit. La L.F int9gre un s;st9me 'e
rpli!ation as;n!hrone as;mtri/ue. La version L.( a*oute une rpli!ation s;n!hrone et
amliore 'e nombreu+ points sur la rpli!ation <notamment pour la partie
a'ministration et supervision?. La pro!haine version 'evrait supporter la rpli!ation en
!as!a'e.
5.3 @umrotation
Y.A : version ma*eure
Y.A.Z : version mineure
Une version ma*eure apporte 'e nouvelles fon!tionnalits- 'es !hangements 'e
2& / 275 http://www.bull-formation.om

Administration PostgreSQL
!omportement- et!. Une version ma*eure sort gnralement tous les (3/(7 mois.
Une version mineure ne !omporte /ue 'es !orre!tions 'e bugs ou 'e failles 'e s!urit.
"lles sont plus fr/uentes /ue les versions ma*eures- ave! un r;thme 'e sortie 'e l,or're
'es trois mois- sauf bugs ma*eurs ou failles 'e s!urit. Cha/ue bug est !orrig 'ans
toutes les versions stables a!tuellement maintenues par le pro*et.
5.5 4ersions !ourantes
#erni9res releases <3R septembre 3F((? :
version M.3.33
version M.5.(R
version M.6.L
version L.F.7
version L.(.(
La philosophie gnrale 'es 'veloppeurs 'e PostgreSQL peut se rsumer ainsi :
U @otre politi/ue se base sur la /ualit- pas sur les 'ates 'e sortie. N
2outefois- mBme si !ette philosophie reste tr9s prsente parmi les 'veloppeurs- 'epuis
/uel/ues annes- les !hoses voluent et la ten'an!e a!tuelle est 'e livrer une version
stable ma*eure tous les (3 0 (7 mois.
Le support 'e la version O.5 a t arrBt au 'but 'e l,anne 3FFM. La mBme !hose est
arrive au+ versions O.6 et M.F milieu 3F(F. "t enfin- la M.( a subi le mBme sort en
'!embre 3F(F. La pro!haine version /ui subira !e sort est la M.3- fin 3F(( ou 'but
3F(3.
La ten'an!e a!tuelle est 'e garantir un support pour !ha/ue version !ourante pen'ant
une 'ure minimale 'e 7 ans.
Pour plus de dtails :
http://wiHi.postgres/l.org/wiHi/PostgreSQL[1elease[Support[Poli!;

22 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.6 4ersion M.3
Fin 3FFR '!embre 3F(( <G?
Compatibilit SQL'(()
=eilleur support 'e &!ndows et 'es migrations 'epuis *ra$le
Support 'e LDAP pour l,authentifi!ation
LogS+!pp!ng
$mlioration 'es re/uBtes prpares
$mlioration 'es performan!es
Cette version 'ispose 'e peu 'e mo'ifi!ations ma*eures. "lle !orrespon' plutPt 0 une
stabilisation 'u pro*et. C,est ',ailleurs la premi9re version '!lare stable pour la
plateforme Xin'ows. "lle simplifie aussi les migrations 'es logi!iels !ompatibles ave!
&ra!le.
Un gros travail a t fourni pour fournir un meilleur respe!t 'e la norme SQL:3FF5. #es
informations sur !ette norme ont t a*outes 'ans le manuel 'e PostgreSQL.
La !onne+ion ',un utilisateur est su*et 0 une authentifi!ation pralable. Cette
authentifi!ation peut maintenant se faire via un serveur L#$P. La vrifi!ation 'u mot 'e
passe et 'e la vali'it 'u !ompte se font au niveau 'u serveur L#$P et non plus au
niveau 'u serveur PostgreSQL.
Le LogS+!pp!ng permet ',ar!hiver fa!ilement les *ournau+ 'e transa!tions grQ!e 0 'es
nouveau+ param9tres 'e !onfiguration.
Pour plus de dtails :
http://www.postgres/l.org/'o!s/!urrent/intera!tive/releaseM3.html
Cette version ne sera plus maintenue 0 partir 'e '!embre 3F((.
2! / 275 http://www.bull-formation.om

Administration PostgreSQL
5.7 4ersion M.5
#but 3FFM fvrier 3F(5 <G?
@ombreuses amliorations sur les performan!es: ,*"- !ommit
as;n!hrone- et!.
1e!her!he plein te+te
-.L
>ournalisation CS/
@ouveau+ t;pes : enum- 00ID
@ouvelle authentifi!ation GSSAPI/SSPI
Cette version est la premi9re 0 bnfi!ier 'e la nouvelle organisation 'u 'veloppement
ave! les !ommit fests. Ces prio'es sont utilises pour vrifier les pat!hs fournis par les
'veloppeurs avant leur intgration 'ans le !o'e sour!e 'e PostgreSQL <ou leur re*et le
!as !hant?. "lles permettent 'e flui'ifier les !hanges entre 'veloppeurs et
notamment entre 'veloppeurs et !ommiters <les personnes autorises 0 mo'ifier le
!o'e sour!e sur le 'pPt 'es sour!es?.
"lle !omporte 'e nombreuses nouvelles volutions- notamment 'es mo'ules !ontrib
tsear!h3- +ml3- uui'- /ui atteignent enfin le !Cur 'u pro*et.
Attention ! Cette version a la rputation ',Btre e+trBmement rigoureuse )
Lors ',une migration- vous pourre: ren!ontrer 'es probl9mes ave! :
(. l,en!o'age 'e votre base
3. les !onversions impli!ites
"n effet- la version M.5.+ ne !ontient plus une srie 'e !onversions 'e t;pes /ui taient
ralises impli!itement 'ans les versions pr!'entes. Ce!i 'oit vous amener 0 faire une
revue et une !orre!tion 'e votre !o'e avant la migration.
Pour plus de dtails :
http://www.postgres/l.org/'o!s/!urrent/intera!tive/releaseM5.html
http://www.'alibo.org/glmf(F5[postgres/l[M.5[/uoi['e[neuf

Cette version ne sera plus maintenue 0 partir 'e fvrier 3F(5.
2" / 275 http://www.bull-formation.om

Administration PostgreSQL
5.R 4ersion M.6
>uillet 3FFL *uillet 3F(6 <G?
Fon!tions Xin'ow <!lauses X%2W- &4"1? et SQL/="#\
C2" et re/uBtes r!ursives\
Param9tres par 'faut et param9tres varia'i! pour les fon!tions\
1estauration paralllise ',une sauvegar'e\
#roits sur les !olonnes\
#e plus- !ette version apporte 'es amliorations moins visibles telles /ue :
Lo!ale !onfigurable par base 'e 'onnes\
1efonte 'u FS=\
4$CUU= sle!tif grQ!e au U visibilit; map N\
Support 'es !ertifi!ats SSL\
Statisti/ues sur les fon!tions\
Fon!tion pg[terminate[ba!Hen'<?\
@ouveau+ mo'ules !ontrib : pg[stat[statements- auto[e+plain- ]
"+emple 'e la volont ',intgrer 'es fon!tionnalits totalement matures- le Wot
Stan'b;- fon!tionnalit tr9s atten'ue par les utilisateurs- a finalement t repouss
pour la version suivante !ar les 'veloppeurs estimaient /u,il n,tait pas asse: fiable.
Pour plus de dtails :
http://www.postgres/l.org/'o!s/!urrent/intera!tive/releaseM6.html
http://www.'alibo.org/hs66[postgres/l[M.6
Cette version ne sera plus maintenue 0 partir 'e *uillet 3F(6.
25 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.O 4ersion L.F
Septembre 3F(F septembre 3F(7 <G?
Wot Stan'b; ^ Streaming 1epli!ation
Contraintes ',e+!lusion
$mliorations pour l12-PLAIN
Contrainte U@%QU" 'ifferable\
#roits par 'faut- G#AN" ALL\
2riggers: sur !olonne- et !lause &,2N.
=ais aussi :
#roit ',a!!9s au+ U Large &b*e!ts N\
Configurations par utilisateurs- par bases 'e 'onnes mais aussi par !ouple
utilisateur/base\
Blo! 'e !o'e anon;me.
Pour plus 'e 'tails :
http://www.'alibo.org/annon!e[L.F
http://www.'alibo.org//uoi['e[neuf['ans[postgres/l[L

Logi/uement- on peut s,atten're 0 !e /ue l,arrBt 'u support 'e !ette version survienne
en septembre 3F(7- mBme si au!une '!ision offi!ielle n,a t prise pour l,instant.
5.M 4ersion L.(
Septembre 3F(( septembre 3F(R <G?
rpli!ation s;n!hrone
supervision et a'ministration plus aise 'e la rpli!ation
gestion 'es e+tensions
support 'es tables 'istantes via SQL/=e'
support 'es labels 'e s!urit
support 'es tables non tra!es
2# / 275 http://www.bull-formation.om

Administration PostgreSQL
"t beau!oup ',autres :
moins 'e verrous pour les DDL <$L2"1 2$BL"- 21%.."1?
r'u!tion 'e la taille 'es !hamps 'e t;pe @U="1%C sur 'is/ue
!ompteurs 'u nombre 'e 4$CUU= et $@$LAZ" pour les tables pg[stat[_[tables
le support 'es triggers sur les vues
Pour plus de dtails :
http://www.postgres/l.org/'o!s/L.(/stati!/releaseL(.html
http://wiHi.postgres/l.org/wiHi/Xhat`3Os[new[in[PostgreSQL[L.(/fr

5.L 4ersion L.3
"n !ours 'e 'veloppement- sortie prvue mi 3F(3
rpli!ation en !as!a'e
a+ performan!es
r'u!tion 'es verrous 'e table
par!ours ',in'e+ seuls
'iminution 'es a!!9s 'is/ue
Le 'veloppement a !ommen! en mai 3F((. Un !ommitfest a '*0 eu lieu et un
'eu+i9me !ommen!e mi septembre :
https://!ommitfest.postgres/l.org/a!tion/!ommitfest[viewGi'a(F
https://!ommitfest.postgres/l.org/a!tion/!ommitfest[viewGi'a((
5.(F Quelle version utiliser G
M.( et infrieures : Attention Danger !
M.3 : Planifier une migration tr9s rapi'ement
M.5- M.6 et L.F : =ise 0 *our uni/uement
L.( : @ouvelles installations et nouveau+ 'veloppements
Si vous ave: une version M.( ou infrieure- planifie: le plus rapi'ement possible une
migration vers la L.(.
27 / 275 http://www.bull-formation.om

Administration PostgreSQL
%l ne reste /ue /uel/ues mois 'e !orre!tifs pour la M.3. Si vous utilise: !ette version-
!ommen!e: 0 travailler sur une migration 'e version '9s /ue possible.
Pour les versions M.5- M.6 et L.F- le plus important est ',appli/uer les mises 0 *our
!orre!tives.
$!tuellement- la version L.( 'oit Btre utilise pour les nouvelles installations en
pro'u!tion et les nouveau+ 'veloppements.
a!leau comparati" des versions :
http://www.postgres/l.org/about/featurematri+
5.(( 4ersions 'rives
Postgres Plus <!ompatibilit &ra!le?
1e' Wat #atabase
greenplum / @ete::a <'ata warehouse?
%l e+iste 'e nombreuses versions 'rives 'e PostgreSQL. "lles sont en gnral 'estines
0 'es !as ',utilisation tr9s sp!ifi/ues. Leur !o'e est souvent ferm et n!essite
l,a!/uisition ',une li!en!e pa;ante.
Liste e#$austive des % "or&s ' :
http://wiHi.postgres/l.org/wiHi/PostgreSQL['erive'['atabases
Sauf !as tr9s pr!is- il est re!omman' ',utiliser la version offi!ielle- libre et gratuite.
2$ / 275 http://www.bull-formation.om

Administration PostgreSQL
6 Con!epts 'e base
$C%#
=4CC
2ransa!tions
>ournau+ 'e transa!tions
6.( $C%#
Atomicit <$tomi!?
Co$rence <Consistent?
(solation <%solate'?
Dura!ilit <#urable?
Les proprits $C%# sont le fon'ement mBme 'e toute base 'e 'onne. %l s,agit 'e
/uatre r9gles fon'amentales /ue toute transa!tion 'oit respe!ter :
$ : Une transa!tion est enti9re : U tout ou rien N.
C : Une transa!tion am9ne la base ',un tat stable 0 un autre.
% : Les transa!tions n,agissent pas les unes sur les autres.
# : Une transa!tion vali'e provo/ue 'es !hangements permanents.
Les proprits $C%# sont /uatre proprits essentielles ',un souss;st9me 'e traitement
'e transa!tions ',un s;st9me 'e gestion 'e base 'e 'onnes. &n !onsi'9re parfois /ue
seuls les S.B# /ui respe!tent !es proprits sont 'ignes ',Btre !onsi'res !omme 'es
bases 'e 'onnes.
2% / 275 http://www.bull-formation.om

Administration PostgreSQL
6.3 =ulti4ersion Con!urren!; Control <=4CC?
Le Ino;auJ 'e PostgreSQL
.arantit $C%#
Permet les !ritures !on!urrentes sur la mBme table
=4CC <=ulti 4ersion Con!urren!; Control? est le m!anisme interne 'e PostgreSQL
utilis pour garantir la !ohren!e 'es 'onnes lors/ue plusieurs pro!essus a!!9'ent
simultanment 0 la mBme table.
C,est notamment =4CC /ui permet 'e sauvegar'er fa!ilement une base chaud et
',obtenir une sauvegar'e !ohrente alors mBme /ue plusieurs utilisateurs sont
potentiellement en train 'e mo'ifier 'es 'onnes 'ans la base.
C,est la /ualit 'e l,implmentation 'e !e s;st9me /ui fait 'e PostgreSQL un 'es
meilleurs S.B# au mon'e : !ha/ue transa!tion travaille 'ans son image 'e la base-
!ohrent 'u 'but 0 la fin 'e ses oprations. Par ailleurs les !rivains ne blo/uent pas
les le!teurs et les le!teurs ne blo/uent pas les !rivains- !ontrairement au+ S.B#
s,appu;ant sur 'es verrous 'e lignes. Cela assure 'e meilleures performan!es- un
fon!tionnement plus flui'e 'es outils s,appu;ant sur PostgreSQL.
6.5 =4CC et les verrous
Une le!ture ne blo/ue pas une !riture
Une !riture ne blo/ue pas une le!ture
Une !riture ne blo/ue les autres !ritures]
] sauf pour la mise 0 *our 'e la m)me version d*une ligne.
./CC maintient toutes les versions n!essaires 'e !ha/ue tuple- ainsi c$a+ue
transaction voit une image "ige de la !ase <appele snapshot?. Cette image
!orrespon' 0 l,tat 'e la base lors 'u 'marrage 'e la transa!tion <B2GIN?.
./CC flui'ifie les mises 0 *our en vitant les blo!ages trop !ontraignants <verrous sur
UP#$2"? entre sessions et par !ons/uent 'e meilleures performan!es en !onte+te
transa!tionnel.
4oi!i un e+emple !on!ret :
$ SELECT now();
now
-------------------------------
2010-11-25 16:53:42.896983+01
!' / 275 http://www.bull-formation.om

Administration PostgreSQL
(1 ligne)

$ BEGIN;
BEGIN
$ SELECT now();
now
-------------------------------
2010-11-25 16:53:52.447003+01
(1 ligne)

$ SELECT now();
now
-------------------------------
2010-11-25 16:53:52.447003+01
(1 ligne)
6.6 2ransa!tions
%ntimement lies 0 ACID et ./CC :
Une transa!tion est un ensemble ',oprations atomi/ues
Le rsultat ',une transa!tion est U tout ou rien N
SA/2P*IN" 'isponible pour sauvegar'e 'es mo'ifi!ations ',une
transa!tion 0 un instant t
4oi!i un e+emple 'e transa!tion:
$ BEGIN;
BEGIN
$ CREATE TABLE capitaines (id serial,nom text, age integer);
NOTICE: CREATE TABLE crera des squences implicites capitaines_id_seq pour la colonne
serial capitaines.id
CREATE TABLE
$ INSERT INTO capitaines VALUES(1,'Haddock',35);
INSERT 0 1
$ SELECT age FROM capitaines;
age
-----
35
(1 ligne)

$ ROLLBACK;
ROLLBACK
$ SELECT age FROM capitaines;
ERREUR: la relation capitaines n'existe pas
LIGNE 1 : select age from capitaines;
&n voit /ue la table !apitaine a e+ist , l*intrieur 'e la transa!tion. =ais puis/ue !ette
transa!tion a t annule <#*LLBAC3?- la table n,a pas t !re au final. Cela montre
aussi le support 'u ##L transa!tionnel au sein 'e PostgreSQL.
Un point 'e sauvegar'e est une mar/ue sp!iale 0 l,intrieur ',une transa!tion /ui
autorise l,annulation 'e toutes les !omman'es e+!utes apr9s son tablissement-
restaurant la transa!tion 'ans l,tat ob elle tait au moment 'e l,tablissement 'u point
!& / 275 http://www.bull-formation.om

Administration PostgreSQL
'e sauvegar'e.
$ BEGIN;
BEGIN
$ CREATE TABLE capitaines (id serial,nom text, age integer);
NOTICE: CREATE TABLE crera des squences implicites capitaines_id_seq pour la colonne
serial capitaines.id
CREATE TABLE
$ INSERT INTO capitaines VALUES(1,'Haddock',35);
INSERT 0 1
$ SAVEPOINT insert_sp;
SAVEPOINT
$ UPDATE capitaines SET age=45 WHERE nom='Haddock';
UPDATE 1
$ ROLLBACK TO SAVEPOINT insert_sp;
ROLLBACK
$ COMMIT;
COMMIT
$ SELECT age FROM capitaines WHERE nom='Haddock';
age
-----
35
(1 ligne)
6.7 Xrite $hea' Logs- aHa X$L
Cha/ue 'onne est !rite - "ois sur le 'is/ue )
S!urit /uasiment infaillible
Comparable 0 la *ournalisation 'es s;st9mes 'e fi!hiers
Les *ournau+ 'e transa!tions <appels parfois X$L ou YL&.? sont une garantie !ontre les
pertes 'e 'onnes.
%l s,agit ',une te!hni/ue stan'ar' 'e *ournalisation appli/ue 0 toutes les transa!tions.
$insi lors ',une mo'ifi!ation 'e 'onne- l,!riture au niveau 'u 'is/ue se fait en 'eu+
temps :
(. c!riture imm'iate 'ans le *ournal 'e transa!tion
3. c!riture 0 l,empla!ement final lors 'u pro!hain C,2C3P*IN"
$insi en !as 'e !rash :
(. PostgreSQL re'marre
3. PostgreSQL vrifie s,il reste 'es 'onnes non intgres au+ fi!hiers 'e 'onnes 'ans
les *ournau+ <mo'e re!over;?
5. Si !,est le !as- !es 'onnes sont re!opies 'ans les fi!hiers 'e 'onnes afin 'e
retrouver un tat stable et !ohrent.
!2 / 275 http://www.bull-formation.om

Administration PostgreSQL
Plus d*in"ormation :
http://www.'alibo.org/glmf(FM[postgres/l[et[ses[*ournau+['e[transa!tio
ns
6.R $vantages 'es X$L
=oins ',!ritures sur 'is/ue
Un seul sync sur le fi!hier 'e transa!tions
Le fi!hier 'e transa!tions est !rit 'e mani9re s/uentielle
Point %n 2ime 1e!over;
1pli!ation <X$L Shipping?
!! / 275 http://www.bull-formation.om

Administration PostgreSQL
7 Fon!tionnalits
#veloppement
S!urit
Le I!atalogueJ ',ob*ets SQL
#epuis tou*ours- PostgreSQL se 'istingue par sa li!en!e libre <BSD? et sa robustesse
prouve sur 'e nombreuses annes. =ais sa gran'e for!e rsi'e galement 'ans le gran'
nombre 'e fon!tionnalits intgres 'ans le moteur 'u S.B# :
L,e+tensibilit- ave! 'es API tr9s bien 'o!umentes
Une !onfiguration fine et soli'e 'e la s!urit 'es a!!9s
Un support e+!ellent 'u stan'ar' SQL
7.( Fon!tionnalits : 'veloppement
PostgreSQL est une plateforme 'e 'veloppement )
(7 langages 'e pro!'ures sto!Hes
%nterfa!es natives pour *DBC- DBC- C- P,P- Perl- et!.
API ouverte et 'o!umente
4oi!i la liste !ompl9te 'es langages pro!'urau+ supports:
pl/pgs/l pl/s/l pl/p;thon pl/perl pl/t!l pl/sh pl/1 pl/*ava pl/*s pl/lol!o'e
pl/s!heme pl/php pl/rub; pl/* pl/lua pl/pgpsm
PostgreSQL peut 'on! Btre utilis !omme un serveur ',appli!ations ) 4ous pouve: ainsi
pla!er votre !o'e au plus prBt 'es 'onnes.
Cha/ue langage a ses avantages et in!onvnients. Par e+emple- PL/pgs/l est tr9s simple
0 appren're mais n,est pas performant /uan' il s,agit 'e traiter 'es !haEnes 'e
!ara!t9res. Pour !e traitement- il serait prfrable ',utiliser PL/perl- voire PL/p;thon.
cvi'emment- une pro!'ure en C aura les meilleures performan!es mais sera beau!oup
moins fa!ile 0 !o'er et 0 maintenir.
Les appli!ations e+ternes peuvent a!!'er au+ 'onnes 'u serveur PostgreSQL grQ!e 0
!" / 275 http://www.bull-formation.om

Administration PostgreSQL
'es !onne!teurs. %ls peuvent passer par l,interfa!e native- la l!bp4. C,est le !as 'u
!onne!teur PWP et 'u !onne!teur Perl par e+emple. %ls peuvent aussi r implmenter
!ette interfa!e- !e /ue fait le pilote &#BC ps/lo'b!.
a!leau# des langages supports :
http://wiHi.postgres/l.org/wiHi/PL[=atri+
7.3 Fon!tionnalits : e+tensibilit
Cration 'e t;pes 'e 'onnes et
'e leurs fon!tions
'e leurs oprateurs
'e leurs r9gles
'e leurs aggrgats
%l est possible 'e 'finir 'e nouveau+ t;pes 'e 'onnes- soit en SQL soit en C. Les
possibilits et les performan!es ne sont vi'emment pas les mBmes.
4oi!i !omment !rer un t;pe en SQL :
CREATE TYPE serveur AS (
nom text,
adresse_ip text,
administrateur text
);
Ce t;pe va pouvoir Btre utilis 'ans tous les ob*ets SQL habituels : table- pro!'ure
sto!He- oprateur <pour re'finir l,oprateur J^J par e+emple?- pro!'ure ',agrgat-
!ontrainte- et!.
4oi!i un e+emple 'e !ration ',un oprateur :
CREATE OPERATOR + ( leftarg = stock, rightarg = stock, procedure = stock_fusion, commutator = +
);
Con"rence de .ei&&i Lina&angas sur la cration d*un t/pe color :
http://wiHi.postgres/l.org/images/(/((/F&S#"=3F((
Xriting[a[User['efine'[t;pe.p'f
!5 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.5 S!urit
Fi!hier pg5+ba6$on7
Filtrage IP
$uthentifi!ation interne <.D5?
$uthentifi!ation e+terne <!dentd- LDAP- 3erberos- ]?
Support natif 'e SSL
Le !hiffrage $r%pt e+istait pour les versions antrieures 0 la M.6 mais- vu
sa faiblesse- a t supprim.
Le support 'es annuaires LDAP est 'isponible 0 partir 'e la version M.3.
Le support 'e GSSAPI/SSPI est 'isponible 0 partir 'e la version M.5. L,interfa!e 'e
programmation .SS $P% est un stan'ar' 'e l,%"2F /ui permet 'e s!uriser les servi!es
informati/ues. La prin!ipale implmentation 'e .SS$P% est 3erberos. SSP% permet le
Single Sign &n sous =S Xin'ows- 'e fa8on transparente- /u,on soit 'ans un 'omaine $#
ou @2L=.
La gestion 'es !ertifi!ats SSL est 'isponible 0 partir 'e la version M.6.
Le support 'e #ad!us est 'isponible 0 partir 'e la version L.F.
7.6 1espe!t 'u Stan'ar' SQL
"+!ellent support 'u SQL ANSI
&b*ets SQL: tables- vues- r9gles- s/uen!es- triggers
&prations: *ointures- sousre/uBtes- re/uBtes C2"- re/uBtes Xin'ow-
et!.
Uni!o'e et plus 'e 7F en!o'ages
La 'erni9re version 'u stan'ar' SQL est le SQL8'((8.
D !e *our- au!un S.B# ne supporte !ompl9tement SQL8'((8 mais :
PostgreSQL progresse et s,en appro!he au ma+imum- au fil 'es versions
La ma*orit 'e SQL8'((8 est supporte- parfois ave! 'es s;nta+es 'iffrentes
PostgreSQL est le S.#B le plus respe!tueu+ 'u stan'ar'
!# / 275 http://www.bull-formation.om

Administration PostgreSQL
7.7 4ues
=as/uer la !omple+it
%nterfa!e !ohrente vers les 'onnes- mBme si les tables voluent
S!urit : !ontrPler l,a!!9s au+ 'onnes 'e mani9re sle!tive
Pas 'e vues matrialises <pour l,instant )?
D savoir /ue les vues sont e+!utes en tant /ue l,utilisateur /ui les a !r.
"+emple:
$ CREATE TABLE personne (
$ nom TEXT, prenom TEXT, num_cartecredit TEXT);
$ INSERT INTO personne VALUES ('Duff','John','1234567890123456');

$ CREATE VIEW personne_anon AS
$ SELECT nom, prenom,
$ substring(num_cartecredit,0,10)||'******' AS num_cc_anon
$ FROM personne;

$ SELECT * FROM personne_anon;
nom | prenom | num_cc_anon
------+--------+-----------------
Duff | John | 1234567890******
D partir 'e la M.6- il est possible 'e mo'ifier une vue en lui a*outant 'es !olonnes 0 la
fin- au lieu 'e 'evoir les 'truire et re!rer <ainsi /ue toutes les vues /ui en 'pen'ent-
!e /ui pouvait Btre fasti'ieu+?.
"+emple:
$ CREATE OR REPLACE VIEW personne_anon AS
$ SELECT nom, prenom,
$ substring(num_cartecredit,0,10)||'******' AS num_cc_anon,
$ md5(substring(num_cartecredit,0,10)) AS num_md5_cc
$ FROM personne;
$ SELECT * FROM personne_anon;
nom | prenom | num_cc_anon | num_md5_cc
------+--------+-----------------+----------------------------------
Duff | John | 123456789****** | 25f9e794323b453885f5181f1b624d0b
#es travau+ sont en !ours pour intgrer les vues matrialises. Pour l,instant- !,est
possible en !rivant 'es fon!tions PL/pgs/l
Plus 'e 'tails :
http://*onathangar'ner.net/PostgreSQL/materiali:e'[views/matviews.ht
ml
!7 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.R S!hmas
S!hma a espa!e 'e noms
Con!ept 'iffrent 'es s!hmas ',&ra!le
Sousensemble 'e la base
Les s!hmas sont 'es espa!es 'e noms 'ans une base 'e 'onnes permettant :
'e grouper les ob*ets ',une base 'e 'onnes
'e sparer les utilisateurs entre eu+
'e !ontrPler plus effi!a!ement les a!!9s au+ 'onnes
',viter les !onflits 'e noms 'ans les grosses bases 'e 'onnes
Les s!hmas sont tr9s utiles pour les s;st9mes 'e rpli!ation <Slon;- bu!ar'o?.
"+emple 'e s!hma :
CREATE SCHEMA paris;
SET search_path TO paris;
CREATE TABLE monuments (...);

CREATE SCHEMA limoges;
SET search_path TO limoges;
CREATE TABLE monuments (...);

-- Quels monuments portant
-- un nom identique peut-on trouver
-- Paris et Limoges ?
SELECT paris.monuments.nom
FROM paris.monuments
WHERE paris.monuments.nom = limoges.monuments.nom
7.O Contraintes
C,2C3 : pr!9 : (
N*" N0LL : !d5$l!ent N*" N0LL
Uni!it : !d5$l!ent 0NIQ02
Cls primaires : 0NIQ02 N*" N0LL a P#I.A#; 32; <!d5$l!ent=
Cls trang9res : produ!t5!d #2>2#2NC2S produ!ts<!d5produ!t=
2-CL0D2 : 2-CL0D2 0SING g!st <room &I", ?@ dur!ng &I",
AA=
!$ / 275 http://www.bull-formation.om

Administration PostgreSQL
Les !ontraintes sont la garantie 'e !onserver 'es 'onnes 'e /ualit ) "lles permettent
une vrifi!ation /ualitative 'es 'onnes- au 'el0 'u t;pe 'e 'onnes.
"lles 'onnent 'es informations au planifi!ateur /ui lui permette ',optimiser les
re/uBtes. Par e+emple- le planifi!ateur 'e la version L.F sait ne pas pren're en !ompte
une *ointure 'ans !ertains !as- notamment grQ!e 0 l,e+isten!e ',une !ontrainte uni/ue.
Les !ontraintes ',e+!lusion ont t a*outes en L.F. "lles permettent un test sur
plusieurs !olonnes ave! 'iffrents oprateurs <et non pas /ue l,galit 'ans le !as ',une
!ontrainte uni/ue- /ui est apr9s tout une !ontrainte ',e+!lusion tr9s sp!ialise?. Si le
test se rv9le positif- la ligne est refuse.
7.M #omaines
2;pes !rs par les utilisateurs
Permettent 'e !rer un nouveau t;pe 0 partir ',un t;pe 'e base
%l pourra vrifier 'es !ontraintes supplmentaires.
"+emple:
$ CREATE DOMAIN code_postal_francais AS text CHECK (value ~ '^\d{5}$');
CREATE DOMAIN
$ CREATE TABLE adresse (numero int, rue text, cp code_postal_francais);
CREATE TABLE
$ INSERT INTO adresse VALUES (1, 'rue du bac', '75007');
INSERT 0 1
$ INSERT INTO adresse VALUES (1, 'rue du bec', '74x37');
ERROR: value FOR domain code_postal_francais violates
CHECK constraint "code_postal_francais_check"
Les 'omaines permettent ',intgrer la '!laration 'es !ontraintes 0 la '!laration ',un
t;pe- et 'on! 'e simplifier la maintenan!e 'e l,appli!ation si !e t;pe peut Btre utilis
'ans plusieurs tables : si la 'finition 'u !o'e postal est insuffisante pour une volution
'e l,appli!ation- on peut la mo'ifier par un $L2"1 #&=$%@- et 'finir 'e nouvelles
!ontraintes sur le 'omaine. Ces !ontraintes seront vrifies sur l,ensemble 'es !hamps
a;ant le 'omaine !omme t;pe avant /ue la nouvelle version 'u t;pe ne soit !onsi're
!omme vali'e.
Le 'faut par rapport 0 'es !ontraintes CW"CV !lassi/ues sur une table est /ue
l,information ne se trouvant pas 'ans la table- les !ontraintes sont plus 'iffi!iles 0 lister
sur une table.
!% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.L "nums
2;pes !rs par les utilisateurs
Permettent 'e 'finir une liste or'onne 'e valeurs 'e t;pe !haEne 'e
!ara!t9re pour !e t;pe.
"+emple:
$ CREATE TYPE jour_semaine
$ AS ENUM ('Lundi','Mardi','Mercredi','Jeudi','Vendredi',
$ 'Samedi','Dimanche');
CREATE TYPE
$ CREATE TABLE planning (id_user int, jour jour_semaine, activite varchar);
CREATE TABLE
$ INSERT INTO planning VALUES ('Lundi','Ravioli');
INSERT 0 1
$ INSERT INTO planning VALUES ('Mardi','Spaghetti');
INSERT 0 1
$ INSERT INTO planning VALUES ('Mercredi','Tortellini');
INSERT 0 1
$ INSERT INTO planning VALUES ('Jeudi','Penne');
INSERT 0 1
$ SELECT * FROM planning WHERE jour >= 'Mardi';
jour | activite
----------+------------
Mardi | Spaghetti
Mercredi | Tortellini
Jeudi | Penne
(3 rows)
Les enums permettent 'e '!larer une liste 'e valeurs stati/ues 'ans le 'i!tionnaire 'e
'onnes plutPt /ue 'ans une table e+terne sur la/uelle il fau'rait ra*outer 'es *ointures
: 'ans l,e+emple- on aurait pu !rer une table Bour5de5la5sema!ne- et sto!Her la !l
asso!ie 'ans plann!ng. &n aurait pu tout aussi bien positionner une !ontrainte
C,2C3- mais on n,aurait plus eu une liste or'onne.
Le probl9me 'es enum est /u,il s,agit ',une '!laration 'e t;pe : on ne peut plus le
mo'ifier une fois '!lar. %l faut le 'truire et le re!rer. =ais on ne peut le 'truire
/ue si plus au!une table ne l,utilise. %l est 'on! 0 rserver 0 'es t;pes totalement
stati/ues.
"' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(F 2riggers
&prations: INS2#"- C*P;- 0PDA"2- D2L2"2
2rigger 21U@C$2" <M.6 et ^?
2rigger pour une !olonne < L.F et ^?
2rigger ave! !on'ition <L.F et ^?
Soit pour l,ensemble 'e la re/uBte <>*# S"A"2.2N"?
Soit pour !ha/ue ligne impa!te <>*# 2AC, #*&?
Les triggers peuvent Btre e+!uts avant <B2>*#2? ou apr9s <A>"2#? une opration. %l
est possible 'e les '!len!her pour !ha/ue ligne impa!te <>*# 2AC, #*&? ou une
seule fois pour l,ensemble 'e la re/uBte <>*# S"A"2.2N"?
Par ailleurs- les triggers peuvent Btre !rits 'ans n,importe le/uel 'es langages 'e
pro!'ure supports par PostgreSQL <C- PLCPgSQL- PLCPerl- et!. ?
"+emple :
CREATE LANGUAGE plpgsql;
CREATE TABLE personne ( nom text, salaire integer);

CREATE FUNCTION verif_salaire()
RETURNS TRIGGER AS $verif_salaire$
BEGIN
-- On verifie que les variables ne sont pas vides
IF NEW.nom IS NULL THEN
RAISE EXCEPTION 'le nom ne doit pas tre null';
END IF;
IF NEW.salaire IS NULL THEN
RAISE EXCEPTION 'le salaire ne doit pas tre null';
END IF;

-- pas de baisse de salaires !
IF NEW.salaire < OLD.salaire THEN
RAISE EXCEPTION 'pas de baisse de salaire !';
END IF;

RETURN NEW;
END;
$verif_salaire$ LANGUAGE plpgsql;

CREATE TRIGGER verif_salaire BEFORE INSERT OR UPDATE ON personne
FOR EACH ROW EXECUTE PROCEDURE verif_salaire();
"& / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(( %n'e+
Les algorithmes suivants sont supports :
BDtree <par 'faut?
#Dtree / G!S"
,as+
GIN <version 86'?
1tree est 'sormais rempla! par .iS2. Le terme reste par !ompatibilit.
$ttention au+ in'e+ +as+ ) Leur mo'ifi!ation n,est pas enregistre 'ans les *ournau+ 'e
transa!tions- !e /ui am9ne 'eu+ probl9mes. "n !as 'e !rash 'u serveur- il est
fr/uemment n!essaire 'e les re!onstruire <#2IND2-?. #e plus- ils ne sont pas
restaurs ave! PI"# et 'on! ave! le Log S+!pp!ng. Par ailleurs- ils ne sont pour le
moment /ue rarement plus performants /ue les in'e+ B2ree.
Pour une in'e+ation stan'ar' - on utilise en gnral un in'e+ Btree.
Les in'e+ plus sp!ifi/ues <.%@- .%S2? sont sp!ialiss pour les gran's volumes 'e
'onnes !omple+es et multi'imensionnelles : in'e+ation te+tuelle- gomtri/ue-
gographi/ue- ou 'e tableau+ 'e 'onnes par e+emple.
Plus d*in"ormations :
N http://fr.wiHipe'ia.org/wiHi/$rbre[B
N http://en.wiHipe'ia.org/wiHi/1tree
N http://fr.wiHipe'ia.org/wiHi/2able['e[ha!hage
N http://'o!s.postgres/l.fr/!urrent/te+tsear!hin'e+es.html

"2 / 275 http://www.bull-formation.om

Administration PostgreSQL
R Sponsors d 1fren!es
Sponsors
1fren!es fran8aises
1fren!es internationales
$u 'el0 'e ses /ualits- PostgreSQL sus!ite tou*ours les mBmes /uestions r!urrentes :
IQui finan!e les 'veloppements G <et pour/uoi G?J
IQui utilise PostgreSQL G
R.( Sponsors
Sun .!$ros%stems
N"" <Streaming 1epli!ation?
>uB!tsu
#ed ,at <2om Lane?
SE%pe <pro*et sH;tools?
2nterpr!seDB <Bru!e =om*ian- #ave Page- WeiHHi LinnaHangas- ]?
Dal!bo <soutient la !ommunaut fran8aise?
#epuis *uin 3FFR- Sun Solar!s embar/ue PostgreSQL 'ans sa 'istribution 'e base-
!omme base 'e 'onnes 'e rfren!e pour !e s;st9me ',e+ploitation.
Le ra!hat 'e =;SQL par SU@ ne !onstitue pas un 'anger pour PostgreSQL. $u !ontraire-
SU@ a rappel son atta!hement et son impli!ation 'ans le pro*et.
http://www.news.!om/Sunba!Hsopensour!e'atabasePostgreSQL/3(FF(F(6[5
7L7MM7F.html
http://www.postgres/lfr.org/G/ano'e/(73L
http://www.lemon'einformati/ue.fr/a!tualites/liresunen!ourageaessa;erla
versionM5'epostgres/l37375.html
Le ra!hat 'e SU@ par &ra!le ne !onstitue pas non plus un 'anger bien /u,vi'emment-
les ressour!es !onsa!res 0 PostgreSQL- autant humaines /ue matrielles- ont toutes t
"! / 275 http://www.bull-formation.om

Administration PostgreSQL
annules.
N"" finan!e un groupe 'e 'veloppeurs sur PostgreSQL- !e /ui lui a permis 'e fournir 'e
nombreu+ pat!hs pour PostgreSQL- le 'ernier en 'ate !on!ernant un s;st9me 'e
rpli!ation interne au moteur. Ce s;st9me est en !ours ',in!lusion 'ans la version 'e la
!ommunaut. Plus ',informations sur:
http://wiHi.postgres/l.org/wiHi/Streaming[1epli!ation
%ls travaillent 0 un outil 'e surveillan!e 'e bases PostgreSQL asse: pouss /u,ils ont
prsent lors 'e P.Con 3F(F.
>uB!tsu a parti!ip 0 'e nombreu+ 'veloppements au+ 'buts 'e PostgreSQL.
#ed ,at emploie 2om Lane 0 plein temps pour travailler sur PostgreSQL. %l peut ''ier
une tr9s gran'e partie 'e son temps 'e travail 0 !e pro*et- bien /u,il ait ',autres
affe!tations au sein 'e 1e' Wat. %l maintient /uel/ues pa/uets #P.- 'ont !eu+ 'u S.B#
PostgreSQL. %l leur assure une maintenan!e sur leur an!iennes versions pour les
'istributions 1e' Wat 0 gran'e 'ure 'e vie.
SE%pe est apparu il ; a 'eu+/trois ans. %ls proposent un !ertain nombre ',outils tr9s
intressants: pgBoun!er <pooler 'e !onne+ion?- Lon'iste <rpli!ation par trigger?- et!.
Ce sont 'es outils /u,ils utilisent en interne et /u,ils publient sous li!en!e BS# !omme
retour 0 la !ommunaut.
2nterpr!seDB est une so!it anglaise /ui a '!i' 'e fournir une version 'e
PostgreSQL propritaire fournissant une !ou!he 'e !ompatibilit ave! &ra!le. %ls
emploient plusieurs !o'eurs importants 'u pro*et PostgreSQL <'ont 'eu+ font partie 'e
la U Core 2eam N?- et reversent un !ertain nombre 'e leurs travau+ au sein 'u moteur
!ommunautaire. %ls ont aussi un poi's finan!ier /ui leur permet 'e sponsoriser la
ma*orit 'es gran's vnements autour 'e PostgreSQL: P."ast et P.Xest au+ ctats
Unis- P.#a; en "urope.
Dal!bo parti!ipe aussi 0 sa mesure 0 la !ommunaut. "lle est membre .ol' 'e
PostgreSQL "urope. "lle sponsorise 'es vnements !omme le P.#a; italien- les P.#a;
fran8ais ainsi /ue la !ommunaut fran!ophone. "nfin- elle parti!ipe 0 'e nombreu+
'veloppements. Plus ',informations sur:
http://www.'alibo.org/!ontributions
R.3 1fren!es
Aahoo
=to Fran!e
1$2P
C@$F
"" / 275 http://www.bull-formation.om

Administration PostgreSQL
R.5 Aahoo
Aahoo )
3 Petao!tets )
La fle+ibilit 'e l,opensour!e
c!onomie 'e serveurs- !onomie ',nergies
Le 3( mai 3FFM- 0 l,o!!asion 'u ren'e:vous annuel 'e PostgreSQL au Cana'a <P.Con
3FFM?- Aahoo a annon! 'tenir !e /ui semble Btre la plus gran'e base 'e 'onnes en
pro'u!tion !onnue 0 !e *our.
Les informations sto!Hes sont 'es 'onnes stru!tures 0 propos 'es visiteurs 'e leur
site web. Ces 'onnes sont utilises pour amliorer la publi!it en !iblant plus
pr!isment les annon!es !ommer!iales. Pour !ela- Aahoo 'oit effe!tuer 'es anal;ses
tr9s profon'es 'es 'onnes r!oltes.
Aahoo utilise PostgreSQL au/uel est a*oute une sur!ou!he logi!ielle sp!ifi/ue- !on8ue
pour e+ploiter le !luster 'e ma!hines hbergeant les 'onnes. Ce !luster est !ompos
',environ ( FFF serveurs 'e t;pe PC rpartis 'ans 'iffrents 'ata!enters.
Selon Aahoo- le nombre 'e serveurs est (F 0 3F ` infrieur 0 !e /ui est n!essaire pour
',autres solutions !onventionnelles !omme &ra!le- %B=,s #B3 ou 2era'ata.
Sour!e :
http://blog.postgres/l.fr/in'e+.phpGpost/'rupal/3L5
"5 / 275 http://www.bull-formation.om

Administration PostgreSQL
O Con!lusion
Un pro*et 'e gran'e ampleur
Un S.B# !omplet
Souplesse- e+tensibilit
#e belles rfren!es
Une solution sta!le- ouverte- per"ormante et prouve
Certes- la li!en!e BS# impli/ue un !oet nul- un !o'e sour!e 'isponible et au!une
!ontrainte 'e re'istribution. 2outefois- il serait erron 'e r'uire le su!!9s 'e
PostgreSQL 0 sa gratuite.
Beau!oup ',a!teurs font le !hoi+ 'e leur S.B# sans se sou!ier 'e son pri+. "n
l,o!!urren!e- !e sont souvent les /ualits intrins9/ues 'e PostgreSQL /ui s'uisent :
S!urit 'es 'onnes <reprise en !as 'e !rash et rsistan!e au+ bogues appli!atifs?
Fa!ilit 'e !onfiguration
=onte en puissan!e et en !harge progressive
.estion 'es gros volumes 'e 'onnes
O.( Bibliographie
#o!umentation offi!ielle <prfa!e?
$rti!les fon'ateurs 'e =. Stoneba!Her
Prsentation 'u pro*et PostgreSQL
U Prfa!e : 3. Bref histori/ue 'e PostgreSQL N. P.#.- 3F(F
http://'o!s.postgres/lfr.org/L.F/histor;.html
U 2he P&S2.1"Sf 'ata mo'el N. 1owe an' StonebraHer- (LMO
http://'b.!s.berHele;.e'u/papers/"1L=M7L7.p'f
U Prsentation 'u pro*et PostgreSQL N. .uillaume Lelarge- 3FFM
http://www.'alibo.org/presentation['u[pro*et[postgres/l
(conograp$ie :
"# / 275 http://www.bull-formation.om

Administration PostgreSQL
La photo initiale est le logo offi!iel 'e PostgreSQL :
http://wiHi.postgres/l.org/wiHi/2ra'emarH[Poli!;
O.3 Questions
@,hsite: pas- !,est le moment )
"7 / 275 http://www.bull-formation.om

Administration PostgreSQL
(nstallation de PostgreSQL
"$ / 275 http://www.bull-formation.om

Administration PostgreSQL
( %ntro'u!tion
%nstallation 'epuis les sour!es
%nstallation 'epuis les binaires
%nstallation 0 partir 'e pa!Hages
%nstallation sous win'ows
Premiers rglages
=ises 0 *ours
(.( Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
"% / 275 http://www.bull-formation.om

Administration PostgreSQL
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
5' / 275 http://www.bull-formation.om

Administration PostgreSQL
3 %nstallation 0 partir 'es sour!es
ctapes :
2l!hargement
Prre/uis
Compilation
%nstallation
@ous allons abor'er i!i les 'iffrentes tapes 0 raliser pour installer PostgreSQL 0
partir 'es sour!es :
&b trouver les fi!hiers sour!es G
Quelle version !hoisir G
Comment prparer le serveur pour a!!ueillir PostgreSQL G
Quelle est la pro!'ure 'e !ompilation G
4rifi!ation et installation 'es fi!hiers !ompils.
3.( 2l!hargement
#isponible via :
W22P
F2P
2l!harger le fi!hier postgres/lY.A.Z.tar.g:
Les fi!hiers sour!es et les instru!tions 'e !ompilation sont 'isponibles sur le site offi!iel
'u pro*et : http://www.postgres/l.org/'ownloa'/
Un serveur F2P anon;me est galement mis 0 la 'isposition 'es internautes :
ftp://ftp.postgres/l.org
Le fi!hier 0 tl!harger se prsente tou*ours sous la forme U postgres/lYAZ.tar.g: N ob
Y reprsente la bran!he 'es sour!es- A leur version ma*eure et Z la mineure.
Lors/ue la future version 'u logi!iel est en phase 'e 'monstration <alpha? ou 'e test
<versions bBta?- les sour!es sont a!!essibles 0 !es a'resses :
5& / 275 http://www.bull-formation.om

Administration PostgreSQL
http://www.postgres/l.org/'eveloper/alpha
http://www.postgres/l.org/'eveloper/beta
4oi!i !omment r!uprer la 'erni9re version 'es sour!es 'e PostgreSQL :
$ller sur la page ',a!!ueil 'u pro*et PostgreSQL
Cli/uer sur le lien U #ownloa's N
52 / 275 http://www.bull-formation.om

Administration PostgreSQL
Cli/uer sur le lien U sour!e !o'e N
5! / 275 http://www.bull-formation.om

Administration PostgreSQL
Cli/uer sur le lien U vL.F.5 N <la L.F.5 tait la 'erni9re version 'isponible lors 'e la
mise 0 *our 'e !ette prsentation mais utilise: la version la plus r!ente possible?
5" / 275 http://www.bull-formation.om

Administration PostgreSQL
Cli/uer sur le lien U postgres/lL.F.5.tar.b:3 N
55 / 275 http://www.bull-formation.om

Administration PostgreSQL
Cli/uer sur le serveur le plus pro!he 'e vous <les serveurs fran8ais 0 priori?
5# / 275 http://www.bull-formation.om

Administration PostgreSQL
Sle!tionner le rpertoire ob vous voule: pla!er les sour!es et !li/uer sur U &V N
Les sour!es sont tl!hargs.
57 / 275 http://www.bull-formation.om

Administration PostgreSQL
3.3 Compilation
Pro!essus:
$ tar zxvf postgresql-X.Y.Z.tar.gz
$ cd postgresql-X.Y.Z
$ ./configure
$ gmak
La !ompilation 'e PostgreSQL suit un pro!essus !lassi/ue.
Comme pour tout programme fourni sous forme ',ar!hive tar- nous !ommen8ons par
'!ompa!ter l,ar!hive 'ans un rpertoire. Le rpertoire 'e 'estination pourra Btre !elui
'e l,utilisateur postgres <F? ou bien 'ans un rpertoire partag ''i au+ sour!es
<CusrCsr$Cpostgres par e+emple? afin 'e 'onner l,a!!9s au+ sour!es 'u programme
ainsi /u,0 la 'o!umentation 0 tous les utilisateurs 'u s;st9me.
$ cd ~
$ tar zxvf postgresql-X.Y.Z.tar.gz
Une fois l,ar!hive e+traite- il faut 'ans un premier temps lan!er le s!ript ',auto
!onfiguration 'es sour!es. Attention au# options de con"iguration !
$ cd postgresql-X.Y.Z
$ ./configure !OPTIONS"
%l reste alors 0 !ompiler les sour!es 'e PostgreSQL pour en !onstruire les 'iffrents
e+!utables:
$ gmak
Attention ! gmaHe est la !omman'e maHe 'es outils .@U. Sous Linu+- elle
est habituellement renomme en maHe )
5$ / 275 http://www.bull-formation.om

Administration PostgreSQL
3.5 Compilation : options
Quel/ues options 'e !onfiguration notables:
Gpre7!9?rpertoire
Gw!t+Dpgport
Gw!t+Dopenssl
GenableDnls
Gw!t+Dperl
Gw!t+Dt$l
Le s!ript ',auto!onfiguration poss9'e un !ertain nombre 'e param9tre optionnels.
Parmi toutes !es options- !itons les suivantes /ui sont probablement les plus
intressantes:
Gpre7!9?rpertoire: permet 'e 'finir un rpertoire ',installation personnalis
<par 'faut- il s,agit 'e CusrClo$alCpgs4l?
Gw!t+Dpgport: permet 'e 'finir un port par 'faut 'iffrent 'e 7653
Gw!t+Dopenssl: permet ',a!tiver le support ',&penSSL pour bnfi!ier 'e
!onne+ions !hiffres
GenableDnls: permet ',a!tiver le support 'e la langue utilisateur pour les messages
provenant 'u serveur et 'es appli!ations
Gw!t+Dperl: permet ',installer l,interfa!e Perl ainsi /ue les e+tensions Perl 'e
PostgreSQL
Gw!t+Dt$l: permet ',installer l,interfa!e 2!l ainsi /ue les e+tensions 2!l 'e
PostgreSQL.
3.6 Compilation : options
Pour retrouver les options 'e !ompilation a postriori
pg_config --configure
%l est possible 'e retrouver les options 'e !ompilation utilises pour une installation
'onne 'e PostgreSQL a posteriori grQ!e 0 la !omman'e pg5$on7!g.
"n voi!i un e+emple ',e+!ution:
5% / 275 http://www.bull-formation.om

Administration PostgreSQL
$ pg_config --configure
'--prefix=/usr'
'--mandir=/usr/share/postgresql/8.4/man'
'--with-docdir=/usr/share/doc/postgresql-doc-8.4'
'--datadir=/usr/share/postgresql/8.4'
'--bindir=/usr/lib/postgresql/8.4/bin'
'--libdir=/usr/lib/postgresql/8.4/lib'
'--includedir=/usr/include/postgresql/8.4'
'--enable-nls'
'--enable-integer-datetimes'
'--enable-thread-safety'
'--enable-debug' '--disable-rpath' '--with-tcl'
'--with-perl' '--with-python' '--with-pam'
'--with-krb5' '--with-openssl' '--with-gnu-ld'
'--with-tclconfig=/usr/lib/tcl8.5'
'--with-tkconfig=/usr/lib/tk8.5'
'--with-includes=/usr/include/tcl8.5'
'--with-system-tzdata=/usr/share/zoneinfo'
'--sysconfdir=/etc/postgresql-common'
'--with-gssapi' '--with-libxml'
'--with-libxslt' '--with-ldap' '--with-ossp-uuid'
'CFLAGS= -fPIC' 'LDFLAGS= -Wl,--as-needed'
3.7 2ests 'e rgression
4rifi!ation 'es e+!utables !onstruits
$ gmak check
%l est possible ',effe!tuer 'es tests ave! les e+!utables fraE!hement !onstruits grQ!e 0
la !omman'e suivante:
$ gmak check
!..."
rm -rf ./testtablespace
mkd#r ./testtablespace
./pg_regress --inputdir=. --dlpath=. --multibyte=SQL_ASCII --temp-install=./tmp_check --top-
builddir=../../.. --schedule=./parallel_schedule
============== creating temporary installation ==============
============== initializing database system ==============
============== starting postmaster ==============
running on port 57332 with pid 9843
============== creating database "regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression t$t queries ==============
t$t tablespace ... ok
parallel group %17 tests&: char name text boolean varchar txid int2 int4 oid float4 money
float8 uuid int8 enum bit numeric
boolean ... ok
char ... ok
name ... ok
varchar ... ok
text ... ok
...
Les tests 'e rgression sont une suite 'e tests /ui vrifient /ue PostgreSQL fon!tionne
#' / 275 http://www.bull-formation.om

Administration PostgreSQL
!orre!tement sur la ma!hine !ible. Ces tests ne 'oivent pas Btre e+!uts en tant
/u,utilisateur root. Le fi!hier sr$CtestCregressC#2AD.2 et la 'o!umentation
!ontiennent 'es 'tails sur l,interprtation 'es rsultats 'e !es tests.
3.R %nstallation
%nstallation
$ gmak #'$ta((
Pour installer les fi!hiers !ompils- e+!uter la !omman'e suivante en tant /ue super
utilisateur <root? :
$ gmak #'$ta((
Cette !omman'e installe les fi!hiers 'ans les rpertoires sp!ifis 0 l,tape 'e
!onfiguration- notamment via l,option Gpre7!9. Sans pr!ision 'ans l,tape 'e
!onfiguration- les fi!hiers sont installs 'ans le rpertoire CusrClo$alCpgs4l.
L,installation stan'ar' fournit seulement les fi!hiers entBtes n!essaires pour le
'veloppement ',appli!ations !lientes ainsi /ue pour le 'veloppement 'e programmes
!Pt serveur !omme 'es fon!tions personnelles ou 'es t;pes 'e 'onnes !rits en C.
$vant PostgreSQL M.F- une !omman'e gmaEe !nstallDallD+eaders spare tait
n!essaire pour !e 'ernier point mais !ette tape a t intgre 0 l,installation
stan'ar'.
3.O Postinstallation (/3
4ariables ',environnement
%mportante:
)*+rt PATH=$PATH:/usr/local/pgsql/bin
&ptionnelles:
)*+rt MANPATH=$MANPATH:/usr/local/pgsql/share/ma'
)*+rt PGLIB=/usr/local/pgsql/lib
)*+rt PGDATA=/usr/local/pgsql/data
#& / 275 http://www.bull-formation.om

Administration PostgreSQL
Pour utiliser PostgreSQL !orre!tement- il est n!essaire 'e positionner un !ertain
nombre 'e variables ',environnement.
$fin 'e ren're l,e+!ution 'e PostgreSQL possible 0 partir 'e n,importe /uel rpertoire-
il est essentiel ',a*outer le rpertoire ',installation 'es e+!utables
<CusrClo$alCpgs4lCb!n par 'faut ou le !hemin in'i/u 0 l,option Gpre7!9 lors 'e
l,tape $on7!gure? au+ !hemins 'e re!her!he. Pour !ela- nous mo'ifions la variable
',environnement PA", :
)*+rt PATH=$PATH:/usr/local/pgsql/bin
#,autres variables ',environnement peuvent ventuellement Btre utiles:
.ANPA", pour a*outer au+ !hemins 'e re!her!he 'es pages 'e manuel !elui 'e votre
installation 'e PostgreSQL
PGLIB pour in'i/uer 0 PostgreSQL ob se trouvent les 'iffrentes biblioth9/ues 'e
fon!tions 'ont il aura besoin
PGDA"A /ui sera !onsult par 'iffrents e+!utables 'e PostgreSQL pour 'terminer
ob se trouve le rpertoire 'e travail 'e l,instan!e
4oi!i un e+emple ave! !es trois variables:
)*+rt MANPATH=$MANPATH:/usr/local/pgsql/share/ma'
)*+rt PGLIB=/usr/local/pgsql/lib
)*+rt PGDATA=/usr/local/pgsql/data
$fin 'e vous viter ',avoir 0 re'finir !es variables ',environnement apr9s !ha/ue
re'marrage 'u s;st9me- il est !onseill ',in!lure !es lignes 'ans votre fi!hier H
I,*.2JC6pro7!le ou 'ans Cet$Cpro7!le.
3.M Postinstallation 3/3
Cration 'e l,instan!e 'e base 'e 'onnes
$ initdb -D /usr/local/pgsql/data
@ote: /ue vous 'eve: e+!uter !ette !omman'e en tant !onne!t sous le !ompte 'e
l,utilisateur PostgreSQL '!rit 'ans la se!tion pr!'ente <utilisateur postgres?.
Si le rpertoire n,e+iste pas- !n!tdb tentera 'e le !rer. 2outefois- vous 'eve: veiller 0
!e /u,il ait les 'roits pour le faire.
4oi!i !e /u,affi!he !ette !omman'e :
#2 / 275 http://www.bull-formation.om

Administration PostgreSQL
$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale fr_FR.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to "french".
creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 24MB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.
Success. You can now start the database server using:
postgres -D /usr/local/pgsql/data
or
pg_ctl -D /usr/local/pgsql/data -l logfile start
$ve! !es informations- nous pouvons !on!lure /ue !n!tdb fait les a!tions suivantes :
'te!tion 'e l,utilisateur- 'e l,en!o'age et 'e la lo!ale
!ration 'u rpertoire gP.#$2$ <CusrClo$alCpgs4lCdata 'ans !e !as?
!ration 'es sousrpertoires
!ration et mo'ifi!ation 'es fi!hiers 'e !onfiguration
!ration 'e la base templateK
a*out 'es ob*ets s;st9me
e+!ution ',un 4$CUU= sur !ette base
!ration 'e la base template( 0 partir 'e la base templateK
!ration 'e la base postgres 0 partir 'e la base templateK
affi!hage 'e /uel/ues informations supplmentaires
#! / 275 http://www.bull-formation.om

Administration PostgreSQL
3.L Lan!ement
Premier 'marrage
$ postmaster -D /usr/local/pgsql/data ,logfile 2,-1 -
La !omman'e pg5$tl permet 'e faire la mBme !hose plus simplement. "lle !ompren'
'iffrentes a!tions permettant 'e 'marrer PostgreSQL- 'e l,arrBter- 'e lui faire relire
sa !onfiguration- et!.
Ces 'eu+ !omman'es peuvent avantageusement Btre rempla!es par un s!ript
postgres4l pla! 'ans le rpertoire !n!t6d ou par la !omman'e pg5$tl. Un s!ript
',e+emple est 'isponible 'ans le sousrpertoire $ontr!bCstartDs$r!pts 'u
rpertoire 'es sour!es.
#" / 275 http://www.bull-formation.om

Administration PostgreSQL
5 %nstallation 0 partir 'es binaires
Pa!Hages #ebian : #ebian- Ubuntu
Pa!Hages 1P= : 1e'hat / Fe'ora / Suse
Pour une utilisation en environnement 'e pro'u!tion- il est gnralement prfrable
',installer les pa/uets binaires prpars sp!ialement pour la 'istribution utilise.
5.( Pa/uets 'ebian offi!iels
#iffrents pa/uets 'isponibles
apt!tude !nstall postgres4lD969
installe les binaires
!re l,utilisateur U postgres N
e+!ute init'b
'marre le serveur
Sous #ebian/Ubuntu- l,installation 'e PostgreSQL a t '!oupe en plusieurs pa/uets:
partie serveur: postgres/l+.+
partie !lients: postgres/l!lient+.+
autres pa/uets utiles: postgres/l!ontrib+.+- postgres/l'o!+.+
Pour utiliser 'es pro!'ures sto!Hes- il est n!essaire ',installer le pa/uet
!orrespon'ant au langage pro!'ural retenu :
$ a*t#t.d #'$ta(( postgresql-plpython-x.x
$ a*t#t.d #'$ta(( postgresql-plperl-x.x
$ a*t#t.d #'$ta(( postgresql-pltcl-x.x
Si le serveur PostgreSQL est un serveur 'e 'veloppement- il est re!omman' ',installer
galement les biblioth9/ues 'e 'veloppement :
$ a*t#t.d #'$ta(( postgresql-server-dev-x.x
#5 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.3 Ba!Hports #ebian
$*outer le 'pPt U ba!Hports.org N
=ettre 0 *our la base 'es pa/uets 'isponibles
%nstaller les pa/uets n!essaires
La version stable 'e #ebian n,int9gre pas les versions les plus r!entes 'e PostgreSQL.
Pour utiliser une version !ourante sur un serveur stable- il est souvent n!essaire 'e
raliser un U ba!Hport N 'epuis un pa/uet 'e la 'istribution test!ng ou unstable 'e
#ebian.
Cepen'ant- un 'pPt regroupant bon nombre 'e !es ba$Eports e+iste '*0. Par
e+emple- pour installer la version L.F sur une #ebian S/uee:e <R.F- la 'erni9re version
stable?- il faut a*outer le 'pPt 'e U ba!Hports.org N 'ans le fi!hier
Cet$CaptCsour$es6l!st :
deb http://backports.debian.org/debian-backports squeeze-backports main
Puis mettre 0 *our la base 'e pa/uets 'isponible :
a*t#t.d update
"t enfin installer PostgreSQL M.6 en sle!tionnant la sour!e ba$Eport :
a*t#t.d -t lenny-backports #'$ta(( postgresql-9.0
5.5 1e'Wat / Fe'ora / Suse
%um !nstall postgres4l postgres4lDserver
Cet$C!n!t6dCpostgres4l !n!tdb
Cet$C!n!t6dCpostgres4l start
Le pa/uet 1P= !re l,utilisateur postgres. Contrairement au pa/uet #ebian- il faut
lan!er manuellement l,opration '1!n!tdb.
$vant la version L.F- il n,tait possible ',installer /u,une seule version 'e PostgreSQL sur
un serveur. Cela a !hang ave! la version L.F.
## / 275 http://www.bull-formation.om

Administration PostgreSQL
Conflit S"Linu+
#es !onflits fr/uents ont t i'entifis entre S"Linu+ et PostgreSQL sur les
'istributions Fe'ora et 1e'Wat.
Plus ',informations :
http://wiHi.postgres/l.org/wiHi/PostgreSQL[an'[S"Linu+
#7 / 275 http://www.bull-formation.om

Administration PostgreSQL
6 %nstallation sous Xin'ows
PostgreSQL M.3 et suprieur uni/uement
#isponible pour Xin'ows 3FFF- YP- 3FF5- 3FFM- O
#isponible en R6 bits 0 partir 'e la version L.F
%nstalleur graphi/ue ou ar!hive 'es binaires
Le portage 'e PostgreSQL sous Xin'ows 'ate 'e sa version M.F. D !e moment l0- le
travail /u,il a n!essit fet suffisamment important pour *ustifier 0 lui seul le passage 'e
la bran!he O 0 la bran!he M 'u pro*et.
Comme tou*ours- la politi/ue 'u pro*et a impos 'e mar/uer !e portage !omme tant
au niveau 'e la 'monstration <bta? et le restera pen'ant 3 ans. La version M.3 a 'on!
t la premi9re version '!lare stable sous Xin'ows et offi!iellement supporte par le
pro*et.
#$ / 275 http://www.bull-formation.om

Administration PostgreSQL
6.( %nstalleur graphi/ue bienvenue
Installeur graphique - bienvenue
#% / 275 http://www.bull-formation.om

Administration PostgreSQL
6.3 %nstalleur graphi/ue rpertoire ',installation
Installeur graphique - rpertoire d'installation
7' / 275 http://www.bull-formation.om

Administration PostgreSQL
6.5 %nstalleur graphi/ue rpertoire 'onnes
Installeur graphique - rpertoire donnes

7& / 275 http://www.bull-formation.om

Administration PostgreSQL
6.6 %nstalleur graphi/ue mot 'e passe
Installeur graphique - mot de passe

72 / 275 http://www.bull-formation.om

Administration PostgreSQL
6.7 %nstalleur graphi/ue port
Installeur graphique - port

7! / 275 http://www.bull-formation.om

Administration PostgreSQL
6.R %nstalleur graphi/ue autres
Installeur graphique - autres

7" / 275 http://www.bull-formation.om

Administration PostgreSQL
6.O %nstalleur graphi/ue prBt
Installeur graphique - prt

75 / 275 http://www.bull-formation.om

Administration PostgreSQL
6.M %nstalleur graphi/ue termin
Installeur graphique - termin

D !e momentl0- un nouvel utilisateur a t !r ave! le nom postgres. La !omman'e
init'b a t e+!ut pour !rer le rpertoire 'es 'onnes. Un servi!e a t a*out pour
lan!er automati/uement le serveur au 'marrage 'e Xin'ows. Un sousmenu 'u menu
#marrage !ontient le n!essaire pour interagir ave! le serveur PostgreSQL. %l est 0
noter /ue !et installeur a aussi install pg$'min- 'ans une version !ompatible ave! la
version 'u serveur PostgreSQL.
Cet installeur e+iste aussi sous =a! &S Y et sous Linu+. $utant il est prfrable 'e passer
par les pa/uets 'e sa 'istribution Linu+- autant il est re!omman' ',utiliser !et
installeur =a! &S Y.
7# / 275 http://www.bull-formation.om

Administration PostgreSQL
7 Premiers rglages
S!urit
Configuration minimale
#marrage
2ests
7.( S!urit
Politi/ue 'e mot 'e passe 'e l,utilisateur postgres s;st9me
Politi/ue 'e mot 'e passe pour le rPle postgres
19gles ',a!!9s 0 l,instan!e 'ans pg5+ba6$on7
Selon l,environnement et la politi/ue 'e s!urit interne 0 l,entreprise- nous aurons
potentiellement 0 pla!er un mot 'e passe 0 l,utilisateur s;st9me postgres:
$ *a$$/d postgres
@e pas !onfon're !et utilisateur s;st9me ave! le rPle postgres- interne au !luster
PostgreSQL- peut n!essiter lui aussi un mot 'e passe en fon!tion 'u !onte+te:
ALTER ROLE postgres ENCRYPTED PASSWORD 'mot de passe';
Si vous ave: utilis l,installeur propos par "nterprise#B- l,utilisateur
postgres <Uni+ et PostgreSQL? a '*0 un mot 'e passe- !elui 'eman' par
l,installeur. #on! il n,est pas n!essaire 'e lui en !onfigurer un autre.
"nfin- vrifier les r9gles ',a!!9s au serveur !ontenues 'ans le fi!hier pg5+ba6$on7. Ces
r9gles 'finissent les a!!9s 0 l,instan!e en se basant sur plusieurs param9tres: utilisation
'u rseau ou 'u so!Het fi!hier- en SSL ou non- 'epuis /uel rseau si appli!able- en
utilisant /uel rPle- pour /uelle base 'e 'onnes et ave! t;pe ',authentifi!ation.
77 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.3 Configuration minimale
Fi!hier postgres4l6$on7
Configuration 'u moteur
Plus 'e 3FF param9tres
Quel/ues param9tres essentiels
La !onfiguration 'u moteur se fait via un seul fi!hier- le fi!hier postgres4l6$on7. %l
se trouve gnralement 'ans le rpertoire 'es 'onnes 'u serveur PostgreSQL. Sous
!ertaines 'istributions <#ebian et affilis prin!ipalement?- il est 'pla! 'ans un sous
rpertoire 'u rpertoire Cet$.
Ce fi!hier !ontient beau!oup 'e param9tres- plus 'e 3FF- mais seuls /uel/uesuns sont
essentiels 0 !onnaEtre pour avoir 'e bonnes performan!es.
7.5 Configuration 'es !onne+ions
listen[a''resses a ,_,
port a 7653
ma+[!onne!tions a (FF
Par 'faut- le serveur install n,!oute pas sur les interfa!es rseau+ e+ternes. Pour
autoriser les !lients e+ternes 0 se !onne!ter 0 PostgreSQL- il faut mo'ifier le param9tre
l!sten5addresses. La valeur L est un *oHer in'i/uant /ue PostgreSQL 'oit !outer
sur toutes les interfa!es rseau+ 'isponibles au moment ob il est lan!. %l est aussi
possible ',in'i/uer les interfa!es- une 0 une- en les sparant ave! 'es virgules.
Le port par 'faut 'es !onne+ions 2CP/%P est le 7653. %l est possible 'e le mo'ifier. Cela
n,a rellement un intrBt /ue si vous voule: e+!uter plusieurs serveurs PostgreSQL sur
le mBme serveur <ph;si/ue ou virtuel?. "n effet- plusieurs serveurs sur une mBme
ma!hine ne peuvent pas !outer sur le mBme port.
Le nombre 'e !onne+ions simultanes est limit par le param9tre ma+[!onne!tions. #9s
/ue !e nombre est atteint- les !onne+ions suivantes sont refuses *us/u,0 !e /u,un
utilisateur !onne!t se '!onne!te. La valeur par 'faut 'e (FF est gnralement
suffisante. %l peut Btre intressant 'e la 'iminuer <pour /ue !ha/ue pro!essus ait a!!9s
0 plus 'e mmoire? ou 'e l,augmenter <pour /u,un plus gran' nombre ',utilisateurs
puisse se !onne!ter en mBme temps?. $ttention toutefois 0 ne pas 'passer (FFF !ar
!ela serait sour!e 'e !ontreperforman!e.
7$ / 275 http://www.bull-formation.om

Administration PostgreSQL
7.6 Configuration 'es ressour!es mmoires
share'[buffers
worH[mem
maintenan!e[worH[mem
Cha/ue fois /ue PostgreSQL a besoin 'e lire ou !rire 'es 'onnes- il les pla!e ',abor'
'ans son !a!he interne. Ce !a!he ne sert /u,0 8a : sto!Her 'es blo!s 'is/ues /ui sont
a!!essibles 0 tous les pro!essus PostgreSQL- !e /ui permet ',viter 'e trop fr/uents
a!!9s 'is/ues !ar !es a!!9s sont lents. La taille 'e !e !a!he 'pen' ',un param9tre
appel s+ared5bu77ers. Sur un serveur ''i 0 PostgreSQL- une valeur ',un /uart 'e
la mmoire vive totale est gnralement suffisante. Suivant les !as- une valeur
infrieure ou suprieure sera en!ore meilleure pour les performan!es. D vous 'e tester
!e /ui vous !onvient le mieu+. $ttention /ue l,augmentation 'e !ette valeur peut
n!essiter la mo'ifi!ation 'u param9tre s;st9me SW==$Y pour /ue PostgreSQL ait le
'roit 'e r!lamer autant 'e mmoire au 'marrage.
worE5mem et ma!ntenan$e5worE5mem sont 'es param9tres mmoires utiliss par
!ha/ue pro!essus. worE5mem est la taille 'e la mmoire alloue au+ oprations 'e tri
et ha!hage- alors /ue ma!ntenan$e5worE5mem est la taille 'e la mmoire pour les
/AC00.- C#2A"2 IND2- et a*out 'e !l trang9re. Cette mmoire peut Btre alloue
plusieurs fois par !onne+ions PostgreSQL. #on!- si votre ma95$onne9!ons est
important- !es valeurs <en fait- surtout worE5mem? 'evront Btre faible. $lors /ue si
votre ma95$onne$t!ons est faible- !es valeurs pourront Btre augmentes.
7.7 Configuration 'es *ournau+ 'e transa!tions
fs;n!
D !ha/ue /u,une transa!tion est vali'e <C&==%2e?- PostgreSQL !rit les mo'ifi!ations
/u,elle a gnr 'ans les *ournau+ 'e transa!tions. Puis il 'onne l,or're au s;st9me
',e+ploitation ',!rire les 'onnes sur le 'is/ue. Cela va for!ment !auser 'es
ralentissements mais !ette opration est essentielle. "n effet- si PostgreSQL ne le fait
pas- les 'onnes pourraient rester 'ans le !a!he 'u s;st9me ',e+ploitation. "n !as 'e
!rash- les 'onnes seraient per'ues. Le param9tre 7s%n$ permet 'e 'sa!tiver l,envoi
'e l,or're 'e s;n!hronisation au s;st9me ',e+ploitation. Ce param9tre ne 'oit *amais
Btre 'sa!tiv en pro'u!tion.
7% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.R Configuration 'es ressour!es mmoires
log['estination
logging[!olle!tor
log[line[prefi+
l![messages
PostgreSQL 'ispose 'e plusieurs mo;ens pour enregistrer les tra!es : soit il les envoie sur
la sortie 'es erreurs <stderr et $svlog?- soit il les envoie 0 s;slog <s%slog-
seulement sous Uni+?- soit il les envoie au *ournal 'es vnements <eventlog- sous
Xin'ows uni/uement?. #ans le !as ob les tra!es sont envo;es sur la sortie 'es erreurs-
il peut r!uprer les messages via un 'mon appel U log !olle!tor N /ui va enregistrer
les messages 'ans 'es fi!hiers. Ce 'mon s,a!tive en !onfigurant le param9tre
logg!ng5$olle$tor 0 on. Si vous faites !ela- n,oublie: pas 'e !hanger le prfi+e 'es
messages pour a*outer au moins l,horo'atage <log5l!ne5pre7!9 ? 1Mt1 ?. #es
tra!es sans 'ate et heure ne servent 0 rien.
Beau!oup ',utilisateurs fran8ais r!up9rent les tra!es 'e PostgreSQL en fran8ais. Bien
/ue !ela semble une bonne i'e au 'part- !ela se rv9le Btre souvent un probl9me.
@on pas 0 !ause 'e la /ualit 'e la tra'u!tion- mais plutPt par!e /ue les outils 'e
traitement 'es tra!es fon!tionnent uni/uement ave! 'es tra!es en anglais. =Bme l,outil
pgFouine- pourtant !rit par un Fran8ais- ne sait pas interprter 'es tra!es en fran8ais.
#e plus- la moin're re!her!he sur %nternet ram9nera plus 'e liens ave! 'es tra!es en
anglais.
7.O Configuration 'es 'mons
autova!uum
stats !olle!tor
"n 'ehors 'u U log !olle!tor N- PostgreSQL 'ispose ',autres 'mons. L,autova!uum *oue
un rPle important pour 'e bonnes performan!es : il empB!he une fragmentation
e+!essive 'es tables et in'e+- et met 0 *our les statisti/ues sur les 'onnes </ui servent
0 l,optimiseur 'e re/uBtes?. Le !olle!teur 'e statisti/ues sur l,a!tivit permet le bon
fon!tionnement 'e l,autova!uum et 'onne 'e nombreuses informations importantes 0
l,a'ministrateur 'e bases 'e 'onnes.
Ces 'eu+ 'mons 'evraient tou*ours Btre a!tivs.
$' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.M #marrage
=tho'es 'e 'marrage :
H Cet$C!n!t6dCpostgres4l start
H pg5$tl DD HPGDA"A start
H postmaster DD HPGDA"A
Suivant le t;pe ',installation effe!tue et la 'istribution 'u serveur- un s!ript 'e
!ontrPle est pla! 'ans le rpertoire !n!t6d :
$ /etc/init.d/postgresql start
Les pa/uets #ebian installent un s!ript 'e 'marrage 'ont le nom 'pen'
'e la version ma*eure 'e PostgreSQL <par e+emple
Cet$C!n!t6dCpostgres4lD96(. Les pa/uets 1P= utilisent !e nommage
0 partir 'e la version L.F.
Cette premi9re mtho'e est utile pour grer le 'marrage 'e PostgreSQL au 'marrage
'u serveur. $ttention toutefois- sous les 'istributions base sur les pa/uets 6deb- !es
s!ripts ',initialisation peuvent !ontrPler plusieurs instan!es 0 la fois )
%l est galement possible 'e lan!er le serveur en utilisant la !omman'e pg5$tl fournie
ave! les binaires 'e PostgreSQL :
$ pg_ctl -D /chemin/vers/PGDATA start

$ # avec la variable d'environnement P!"#$#
$ pg_ctl start
Cette mtho'e permet un !ontrPle plus fin sur le pro!essus !on!ern.
"nfin- il est possible 'e 'marrer le servi!e en appelant 'ire!tement l,e+!utable
postgres :
$ postgres -D $PGDATA
Cette 'erni9re mtho'e est surtout utile 0 'es fin 'e tests- !elle!i pouvant pren're 'es
param9tres 'e !onfiguration 'ire!tement sur la ligne 'e !omman'e.
$& / 275 http://www.bull-formation.om

Administration PostgreSQL
7.L 2ests
Premiers tests
Cration ',une premi9re base 'e 'onne
Premi9res !onne+ions 0 la base
La pro!'ure 'e test suivante tente 'e !rer une base 'e 'onne- puis 'e s,; !onne!ter
par 'eu+ mtho'es 'iffrentes <so$Eet et "CPCIP? :
$. - postgres
createdb mabase
psql mabase
psql -h localhost mabase
Ces premiers tests impli/uent /ue l,instan!e soit !onfigur ave! une authentifi!ation
i'ent ou trust.
$2 / 275 http://www.bull-formation.om

Administration PostgreSQL
R =ise 0 *our
1e!omman'ations
Sauvegar'e 'es 'onnes
=ise 0 *our
1estauration
R.( 1e!omman'ations
Les U 1elease @otes N
%ntgrit 'es 'onnes
=igration 'es 'onnes
=tho'e 'ump/restore
=tho'e Slon;
=tho'e pg[upgra'e
Cha/ue nouvelle version 'e PostgreSQL est a!!ompagne ',une note e+pli/uant les
amliorations- les !orre!tions et les innovations apportes par !ette version- /u,elle soit
ma*eure ou mineure. Ces notes !ontiennent tou*ours une se!tion ''ie au+ mises 0
*our 'ans la/uelle on trouve 'es !onseils essentiels.
Les U 1eleases @otes N sont prsentes 'ans l,anne+e " 'e la 'o!umentation offi!ielle
<http://'o!s.postgres/l.fr/!urrent/release.html?.
Les 'onnes 'e votre instan!e PostgreSQL sont tou*ours !ompatibles ',une version
mineure 0 l,autre. $insi- les mises 0 *our vers une version mineure suprieure peuvent se
faire sans migration 'e 'onne- sauf !as e+!eptionnel /ui serait alors pr!is 'ans les
notes 'e version <e+emple: 'e la M.(.(6 0 la M.(.(7- il est n!essaire 'e re!onstruire les
in'e+ 'e t;pe .iS2 : U $lso- if ;ou were running a previous M.(.Y release- it is
re!ommen'e' to 1"%@#"Y all .iS2 in'e+es after the upgra'e. N- ??. Pense:
ventuellement 0 faire une sauvegar'e pralable par s!urit.
D !ontrario- si la mise 0 *our !onsiste en un !hangement 'e version ma*eure <e+emple :
'e M.6.7 0 L.F.(?- alors il est n!essaire 'e s,assurer /ue les 'onnes seront transfres
!orre!tement sans in!ompatibilit. L0 en!ore il est important 'e lire les U 1eleases
@otes N avant la mise 0 *our. %l e+iste 5 mtho'es pour migrer les 'onnes:
$! / 275 http://www.bull-formation.om

Administration PostgreSQL
"ic$ier intermdiaire : sauvegar'er les bases ave! la !omman'e pg5dump- installer la
nouvelle version- !rer un nouveau rpertoire 'es 'onnes et restaurer les bases ave!
la !omman'e pg5restore.
- versions en parall0le : installer la nouvelle version 'e PostgreSQL sans 'sinstaller
l,an!ienne- faire fon!tionner les 'eu+ versions en mBme temps- puis effe!tuer le
transfert 'es 'onnes entre les 'eu+ instan!es. Cette mtho'e est plus !omple+e mais
elle permet ',viter ',interrompre le servi!e.
pg_upgrade
(
: 0 partir 'e la M.6- l,utilisation 'u mo'ule !ontrib pg5upgrade permet
'e mettre 0 *our un !luster M.5 en M.6 ou M.6 en L.F U sur pla!e N. Cette te!hni/ue
peutBtre 5 0 (F fois plus rapi'e /u,une sauvegar'e/restauration
3
. $ttention toutefois
0 l,utilisation 'e mo'ules 'e !ontrib 'ans vos bases /ui pourraient empB!her !e t;pe
'e mise 0 *our.
"nfin- il est galement possible ',utiliser un m!anisme 'e rpli!ation 'e t;pe Slon;%
pour effe!tuer la migration 'es 'onnes.
R.3 Sauvegar'e
Utilitaires 'e sauvegar'e
pg5dump
pg5dumpall
$vant toute opration 'e mise 0 *our 'u serveur- une sauvegar'e intgrale 'es 'onnes
'u s;st9me est o!ligatoire.
Pour sauvegar'er une base 'e 'onnes- utilise: l,outil pg5dump :
$ pg_dump 0ma_base, , sauvegarde.sql
Cette outil ne sauvegar'era /u,une seule et uni/ue base. Cepen'ant- il ne sauvegar'era
pas la 'finition 'es ob*ets globau+ 'e l,instan!e <autrement 'it les rPles et les
tablespa!es?.
Pour sauvegar'er toutes les bases 'e 'onnes ',une instan!e PostgreSQL- utilise: l,outil
pg5dumpall :
$ pg_dumpall , sauvegarde.out
Ce 'ernier sauvegar'era toute l,instan!e ob*ets globau+ in!lus- 'ans un fi!hier SQL
uni/ue.
1 nomm pg5m!grator sous 1.
2 cf.
$" / 275 http://www.bull-formation.om

Administration PostgreSQL
R.5 =ise 0 *our ma*eure (/3 : Sauvegar'e et =ise 0
*our
Sauvegar'e et mise 0 *our
H pg5dumpall : sauvegarde6out
H pg5$tl stop
H mv CusrClo$alCpgs4l CusrClo$alCpgs4l6old
H $d FCpostgres4lD96969
H maEe !nstall
H !n!tdb DD CusrClo$alCpgs4lCdata
H postmaster DD CusrClo$alCpgs4lCdata
4oi!i un e+emple 'e pro!'ure 'e mise 0 *our:
Sauvegar'e 'u !luster :
$ pg_dumpall , sauvegarde.out
$rrBt 'e l,an!ienne instan!e PostgreSQL :
$ pg_ctl stop
$r!hivage 'es binaires et 'e l,an!ien HPGDA"A. %l pourra Btre 'truit une fois la
migration vali'e:
$ m1 /usr/local/pgsql /usr/local/pgsql.old
%nstallation 'e la nouvelle version 'e PostgreSQL :
$ cd ~/postgresql-x.x.x
$ mak #'$ta((
Cration et 'marrage ',un nouveau !luster :
$ initdb -D /usr/local/pgsql/data
$ postmaster -D /usr/local/pgsql/data
$5 / 275 http://www.bull-formation.om

Administration PostgreSQL
R.6 =ise 0 *our ma*eure 3/3 : 1estauration
1estauration 'es 'onnes
psql -f sauvegarde.out template1
Une fois la nouvelle version installe- il ne reste plus /u,0 in*e!ter les 'onnes
sauvegar'es 0 l,tape pr!'ente :
psql -f sauvegarde.out template1
Compatibilit 'es 'onns
Lors/ue l,on effe!tue une mise 0 *our entre 'eu+ versions ma*eures- il faut
s,assurer 'e la !ompatibilit 'es 'onnes avant toute opration 'e
migration.
$# / 275 http://www.bull-formation.om

Administration PostgreSQL
O Con!lusion
L,installation est simple].
] mais elle 'oit Btre soigneusement prpare
Prfrer les pa/uets offi!iels.
$ttention au+ 'onnes lors ',une mise 0 *our )
O.( Pour aller plus loin
#o!umentation offi!ielle- !hapitre Installat!on
#o!umentation #alibo- pour l,installation sur Xin'ows
4ous pouve: retrouver la 'o!umentation en ligne sur :
http://'o!s.postgres/l.fr/!urrent/installation.html
ainsi /ue la partie sp!ifi/ue 0 l,installation sur :
http://'o!s.postgres/l.fr/!urrent/%@S2$LL.html
Les 'o!umentations 'e #alibo pour l,installation 'e PostgreSQL sur Xin'ows sont
'isponibles sur :
http://www.'alibo.org/installation['e[postgres/l[M.5[sous[win'ows
http://www.'alibo.org/installation['e[postgres/l[M.6[sous[win'ows
http://www.'alibo.org/installation['e[postgres/l[L.F[sous[win'ows
O.3 Questions
@,hsite: pas- !,est le moment )
$7 / 275 http://www.bull-formation.om

Administration PostgreSQL
ravau# prati+ues
$$ / 275 http://www.bull-formation.om

Administration PostgreSQL
( cnon!s
(.( %nstallation 'e pa/uets binaires
(.(.( Prinstallation
Quelle !omman'e permet ',installer les pa/uets binaires 'e PostgreSQL G Quelle version
est pa!Hage G Quels pa/uets 'evront galement Btre installs G
(.(.3 %nstallation
"+!uter la !omman'e ',installation
(.(.5 #marrage
Comment 'marrer le serveur G
(.(.6 "mpla!ement 'es fi!hiers
&b ont t pla!s les fi!hiers installsG &b se trouvent les fi!hiers 'e !onfigurationG &b
est le rpertoire HPGDA"A G
(.(.7 Configuration
4rifier la !onfiguration par 'faut 'e PostgreSQL. "st!e /ue le serveur !oute sur le
rseau G
(.(.R >eu 'e 'onnes
%nsrer le *eu 'e 'onnes fourni
(.3 %nstallation 0 partir 'es sour!es
(.3.( Sauvegar'e
La priorit est ',assurer la s!urit 'es 'onnes. Faire un !opie 'e sauvegar'e 'es
'onnes lors 'e l,installation pr!'ente- puis arrBter le serveur install pr!'emment
(.3.3 2l!hargement
Sur le site offi!iel 'u pro*et- tl!harger les fi!hiers sour!es 'e la 'erni9re version
$% / 275 http://www.bull-formation.om

Administration PostgreSQL
<PostgreSQL L.F?
(.3.5 "nvironnement 'e !ompilation
4rifier /ue les logi!iels 'e !ompilation sont installs
(.3.6 Compilation et installation
Configurer puis !ompiler les sour!es. "nsuite installer les fi!hiers obtenus
(.3.7 Lan!ement
%nitialiser et 'marrer le serveur
(.5 =igration 'es 'onnes
(.5.( 4rifi!ation
4rifier /ue les 'onnes 'e la version pa!Hage peuvent Btre in*e!tes sans ris/ue 'ans
la version !ompile
(.5.3 1estauration
1estaurer les 'onnes
(.6 Pour aller plus loin
(. Faire fon!tionner simultanment les 'eu+ versions 'e PostgreSQL sur 'eu+ ma!hines
'iffrentes
3. 2ransfrer les 'onnes prsentes sur la version U pa!Hage N vers la version !ompile
%' / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Solutions
3.( %nstallation 'e pa/uets binaires
3.(.( Prinstallation
2out 'pen' 'e votre 'istribution. Le gestionnaire 'e pa!Hage 'e =an'riva est urpm!
alors /ue !elui 'e #ebian est apt!tude. Celui 'e la Fe'ora et autres !ompatibles
1e'Wat est %um.
La 'erni9re version stable 'isponible 'e PostgreSQL est la L.F.5. La 'erni9re version
binaire 'pen' l0aussi 'e votre 'istribution.
Le pa/uet l!bp4 'evra galement Btre install.
3.(.3 %nstallation
Sous #ebian:
a*t#t.d #'$ta(( postgresql-9.0
Sous Fe'ora:
yum #'$ta(( postgresql postgresql-server
3.(.5 #marrage
Le serveur est initialis grQ!e 0 la !omman'e :
/etc/init.d/postgresql start
$ttention- sous #ebian- le s!ript !ontient aussi le numro 'e version :
/etc/init.d/postgresql-9.0 start
3.(.6 "mpla!ement 'es fi!hiers
Les fi!hiers 'e !onfiguration 'e PostgreSQL se trouvent 'ans le rpertoire
J/var/lib/pgs/l/'ata/J- sauf sous #ebian ob ils se trouvent 'ans le rpertoire
J/et!/postgres/l/L.F/mainJ pour une version L.F.
%& / 275 http://www.bull-formation.om

Administration PostgreSQL
3.(.7 Configuration
Par 'faut- le serveur !oute uni/uement l,interfa!e rseau ,lo!alhost,.
3.(.R >eu 'e 'onnes
cd /formation/
cd tp
2a$3 create_db.sh
<!ette opration peut pren're un peu 'e temps?
3.3 %nstallation 0 partir 'es sour!es
3.3.( Sauvegar'e
Sauvegar'e 'e toutes les bases 'e 'onnes 'ans le fi!hier
Isauvegar'e.tp.partie(.'umpJ :
$. - postgres
cd
pg_dumpall , sauvegarde.tp.partie.dump
$rrBt 'u serveur :
)#t
/etc/init.d/postgresql stop
3.3.3 2l!hargement
Sur le site offi!iel 'u pro*et- tl!harger les fi!hiers sour!es 'e la 'erni9re version
<PostgreSQL L.F?
cd /tmp
/gt 4t*://ftp3.fr.postgresql.org/../postgresql-9.0.3.tar.gz
tar zxf postgresql-9.0.3.tar.gz
cd postgresql-9.0.3
3.3.5 "nvironnement 'e !ompilation
4rifier /ue les logi!iels 'e !ompilation sont installs :
d*kg -l 5 gr* -E 'gcc|make'
<sous Fe'ora- 1e'Wat ou Cent&S- il fau'ra utiliser %um?
%2 / 275 http://www.bull-formation.om

Administration PostgreSQL
3.3.6 Compilation et installation
Configurer puis !ompiler les sour!es 'e PostgreSQL :
./configure
mak
<!ette opration peut pren're 'u temps?
"nsuite installer les fi!hiers obtenus- en tant /u,utilisateur IrootJ:
mak #'$ta((
3.3.7 Lan!ement
%nitialiser et 'marrer le serveur:
mkd#r /usr/local/pgsql/data
c3+/' postgres /usr/local/pgsql/data
$. - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data ,logf 2,-1
/usr/local/pgsql/bin/createdb t$t
/usr/local/pgsql/bin/psql t$t
3.5 =igration 'es 'onnes
3.5.( 4rifi!ation
Lire la page 'e U 1elease @otes N:
http://www.postgres/l.org/'o!s/!urrent/intera!tive/releaseLF.html
3.5.3 1estauration
1estaurer les 'onnes:
$. - postgres
cd
/usr/local/pgsql/bin/psql 0 sauvegarde.tp.partie1.dump
%! / 275 http://www.bull-formation.om

Administration PostgreSQL
1utils grap$i+ues
%" / 275 http://www.bull-formation.om

Administration PostgreSQL
( Prambule
(. Con!evoir
3. $'ministrer
5. =aintenir
6. Sauvegar'er
(.( $u menu
#rui'
pg$'min
phpPg$'min
(.3 &b*e!tifs
Se familiariser ave! les outils graphi/ues
=anipuler la base
(.5 Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
%5 / 275 http://www.bull-formation.om

Administration PostgreSQL
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
%# / 275 http://www.bull-formation.om

Administration PostgreSQL
3 #rui'
$'resse: http://'rui'.sour!eforge.net/
4ersion: 5.(3
Li!en!e: .PL
@otes : >ava n!essaire
3.( Fon!tionnalits <(/3?
.estion 'e la 'o!umentation
%mport Y=L s!hema
%mport ',une base 'e 'onnes e+istante
$ssistant 'e !ration 'e base 'e 'onnes ave! 'es mo'9les
La gestion 'e la 'o!umentation !ompren' la gestion 'es versions- 'es notes et 'e la
'o!umentation sur !ha!un 'es ob*ets.
L,assistant permet ',utiliser 'es mo'9les pour %nterBase- =;SQL- PostgreSQL et &ra!le.
3.3 Fon!tionnalits <3/3?
Cration 'e tables- vues- fon!tions- pro!'ures- s/uen!es
.estion 'es t;pes 'e 'onnes
$*out 'e !hamps 'ans les tables
.estion 'es triggers sur les tables
.nration 'e s!ripts SQL- 'e !lasses >ava- C^^- PWP
Conne+ion *'b!
4ue 'u s!hma sous forme graphi/ue <"/1 views?
Cet outil permet aussi 'e grer les !l primaires et trang9res- les t;pes et les
%7 / 275 http://www.bull-formation.om

Administration PostgreSQL
!ontraintes ',intgrit.
%l peut en plus manipuler le s!hma au sein mBme 'e la base 'e 'onnes.
3.5 #o!umentation 'e la base 'e 'onnes
#es!ription 'es rvisions
@otes
#o!umentation 'e !ha/ue ob*et
Dru!d permet :
',a*outer une 'es!ription 'es rvisions 'ans l,onglet rvision 'e la 'es!ription 'e la
base 'e 'onnes
',a*outer 'es notes 'e t;pe danger- alert et info
'e 'o!umenter !ha!un 'es ob*ets 'ans l,onglet Docs 'es proprits 'e !ha!un 'es
ob*ets
3.6 Cration ',une base
$ssistant 'e !ration 'e la base
$*out ',ob*ets : simple et intuitif
Dru!d propose un assistant pour !rer 'es bases 'e 'onnes. Cet assistant permet 'e
!rer les t;pes 'e 'onnes par 'faut selon le t;pe 'e base 'e 'onnes !hoisi
<%nterbase- =;SQL- PostgreSQL- &ra!le?.
Une fois l,ob*et base de donnes !r- il est possible ',a*outer 0 !ette base 'e 'onnes
'es tables- 'es vues- 'es pro!'ures- 'es fon!tions et 'es s/uen!es.
Pour a*outer une base 'e 'onnes- faire un !li! 'roit 'ans la partie gau!he 'e la fenBtre
et !hoisir Add Database.
%$ / 275 http://www.bull-formation.om

Administration PostgreSQL
3.7 Cration ',ob*ets 'e base 'e 'onnes
$*out ',ob*ets :
'es tables
'es vues
'es fon!tions
'es pro!'ures
'es s/uen!es
Pour a*outer un 'es ob*ets !i'essus- !li/uer ave! le bouton 'roit sur l,ti/uette 'e la
base 'e 'onnes et !hoisir l,ob*et 0 a*outer.
%l est possible ',or'onner les ob*ets 'ans 'es !onteneurs virtuels appels "olders. &n
peut imaginer une organisation en mo'ules fon!tionnels. &n peut 'pla!er les ob*ets
'ans les !onteneurs par simple glisser/'poser.
Ces "olders sont aussi utiliss pour !rer 'es se!tions 'iffrentes lors 'e la gnration
'e la 'o!umentation.
3.R =o'ifi!ation ',ob*ets 'e base 'e 'onnes
=o'ifi!ation / 1enommage / suppression
Panneau 'e proprits
Possibilit 'e 'upli/uer un ob*et
Pour mo'ifier un ob*et- il suffit 'e le sle!tionner et ses proprits s,affi!hent 'ans la
partie 'e 'roite.
Pour renommer un ob*et- il faut 'ouble!li/uer sur l,ti/uette 'e l,ob*et 'ans l,arbre 'e
la base 'e 'onnes.
Pour supprimer un ob*et- il faut effe!tuer un !li! 'roit sur l,ti/uette 'e l,ob*et 'ans
l,arbre 'e la base 'e 'onnes puis sle!tionner Remove.
%l est possible 'e 'upli/uer un ob*et grQ!e au+ fon!tions cop/ et paste 'isponibles pour
!ha!un 'es ob*ets.
%% / 275 http://www.bull-formation.om

Administration PostgreSQL
3.O 2;pes 'e 'onnes
Crer 'e nouveau+ Data "%pes
#finir 'es alias
L,assistant 'e !ration 'e base 'e 'onnes utilise 'es templates 'e !ration pour
engen'rer les t;pes 'e 'onnes 'e base pour le moteur 'e base 'e 'onnes utilis.
%l est possible ',en a*outer ou ',en supprimer en utilisant l,onglet Data "%pes 'ans les
proprits 'e la base 'e 'onnes.
%l est galement possible ',a*outer 'es alias sur !ha!un 'es t;pes 'e 'onnes 'e
rfren!e afin ',; a*outer 'es r9gles 'e vrifi!ation <_lower !ase_- _upper !ase_- _range
of values_- _set of values_?. Ces alias seront tra'uits en r9gles C,2C3 lors 'e la
gnration 'u !o'e SQL.
3.M .estion 'es tables
Pour !ha/ue table- on peut grer :
les !olonnes
les triggers
les !ontraintes
Utiliser l,onglet >!elds 'ans la fenBtre 'e proprits pour grer les !olonnes.
Pour !hoisir le t;pe ',une !olonne- !li/uer sur la !ase !orrespon'ant au t;pe 'e la
!olonne 0 mo'ifier- puis sle!tionner le t;pe 0 utiliser 'ans la liste 'es t;pes 'isponibles
ave! un !li! 'roit et enfin sle!tionner C+oose t+!s datat%pe.
%l est possible ',utiliser un !hamp ',une autre table en tant /ue t;pe. Ce!i aura pour
effet 'e !rer une !ontrainte 'e !l trang9re. Dru!d propose alors 'es options
',a!tion sur update et delete ainsi /ue 'es options 'e .at$+ <>ull- part!al ou
s!mple?.
Utiliser l,onglet "r!ggers 'ans la fenBtre 'e proprits pour grer les '!len!heurs.
Utiliser l,onglet #ules 'ans la fenBtre 'e proprits pour grer les !ontraintes.
&'' / 275 http://www.bull-formation.om

Administration PostgreSQL
3.L =o'ifi!ation ',une table
3.(F .nration
Dru!d permet ',engen'rer :
un 'i!tionnaire 'es tables et 'es !hamps au format $SC%%
'e la 'o!umentation au format P#F- YW2=L et Y=L 'o!booH
un rsum 'e l,ensemble 'es tables au format $SC%%- W2=L- Y=L- CS4
'es !lasses >ava- PWP- C- C^^
'u !o'e SQL /ui permet 'e !rer les ob*ets 'ans la base 'e 'onne
La pro'u!tion 'e 'o!umentation- 'e s!ripts ou 'e !o'e sour!e est obtenue 'ans l,onglet
gnration 'es proprits 'e la base 'e 'onnes.
Pour a!tiver la pro'u!tion ',items- il faut !harger pour !ha!un 'es mo'ules prin!ipau+-
les sousmo'ules 0 utiliser en faisant un !li! 'roit sur le mo'ule- puis en sle!tionnant
Add odule.
&'& / 275 http://www.bull-formation.om

Administration PostgreSQL
La gnration s,obtient en utilisant le !li! 'roit sur l,ob*et 0 engen'rer- puis en
sle!tionnant !enerate.
La gnration 'es items 'e tous les mo'ules !onfigurs peut Btre a!tive en utilisant la
fon!tion !enerate sur le noeu' prin!ipal DA"A !#$#RA"%&$.
3.(( Pro'u!tion 'e !o'e
3.(3 4ue entits/relations
4ue "/1
Solution simple pour rtro!on!eption
Dru!d offre la possibilit 'e !rer 'es vues entits/relations 0 partir 'es tables 'finies
pour la base 'e 'onnes.
Pour a*outer une vue "/1- utiliser l,onglet _"/1 4iews_ 'ans les proprits 'e la base 'e
'onnes- puis faire un !li! 'roit 'ans la partie 'e gau!he- et enfin sle!tionner Add
2C# v!ew.
&'2 / 275 http://www.bull-formation.om

Administration PostgreSQL
"nsuite a*outer les entits et les relations une 0 une par !li! 'roit 'ans la partie 'e
'roite et sle!tionner Add 2nt!t%. %l est possible ',a*outer les tables une 0 une pour
avoir une vue 'taille ou 'e les grouper si l,on veut reprsenter les intera!tions par
mo'ules.
3.(5 4ue entits/relations
&'! / 275 http://www.bull-formation.om

Administration PostgreSQL
5 Pg$'min %%%
$'resse: http://www.pga'min.org
4ersion: (.(6.F
Li!en!e: PostgreSQL
@otes: =ultiplateforme- multilangue
5.( Prsentation gnrale
&'" / 275 http://www.bull-formation.om

Administration PostgreSQL
5.3 %nstallation
%nstalleur Xin'ows et =a!
Pa/uets 1P= et #ebian/Ubuntu
%nstaller le pa/uet 'ebian est asse: simple :
$ a*t#t.d #'$ta(( pgadmin3
%l e+iste un Adm!n Pa$E au sein 'e PostgreSQL pour fa!iliter l,utilisation 'e
PostgreSQL :
$ psql -f /usr/share/postgresql/8.x/contrib/admin8x.sql postgres
%l est 'isponible 'ans les mo'ules !ontrib 'e PostgreSQL.
5.5 Fon!tionnalits <(/3?
Conne+ion possible sur plusieurs serveurs
c'ition 'es fi!hiers 'e !onfiguration lo!au+
Permet 'e grer toutes les bases ',un mBme serveur
=aintenan!e 'es bases 'e 'onnes <va$uum- anal%Ne- re!nde9?
4isualisation 'es verrous
4isualisation 'es *ournau+ appli!atifs
#bogueur PL/pgs/l
5.6 Fon!tionnalits <3/3?
Sauvegar'e et restauration ',une base
.estion 'es rPles
Cration/mo'ifi!ation/suppression 'e tous les ob*ets PostgreSQL
Possibilit 'e voir/!a!her les ob*ets s;st9mes
c'iteur 'e re/uBte
&'5 / 275 http://www.bull-formation.om

Administration PostgreSQL
Les ob*ets grables par pgAdm!n sont :
la base
les tables- les vues et les s/uen!es
les rPles- les t;pes et les fon!tions
les tablespa!es
les agrgats
les !onversions
les 'omaines
les triggers et les pro!'ures sto!Hes
les oprateurs- les !lasses et les familles ',oprateur
les s!hmas
5.7 Conne+ion
Plusieurs !onne+ions vers plusieurs serveurs
$ttention 0 !ouper pg$'min- /uan' vous relan!e: le serveur )
%l est possible ',tablir plusieurs !onne+ions 'iffrentes en sp!ifiant pour !ha!une
',elles :
l,a'resse 'u serveur \
une 'es!ription pour la !onne+ion \
le port 'u serveur PostgreSQL \
le nom 'e la base 'e maintenan!e \
le nom et le mot 'e passe 'u superutilisateur.
Pour a*outer une nouvelle !onne+ion- utiliser le menu >!$+!erCABouter un
serveur.
5.R c'ition 'es fi!hiers 'e !onfiguration
'iter les fi!hiers lo!au+
'iter les fi!hiers 'istants < Adm!n Pa$E ?
pgAdm!n permet ','iter les fi!hiers 'e !onfiguration postgres4l6$on7-
&'# / 275 http://www.bull-formation.om

Administration PostgreSQL
pg5+ba6$on7 et pgpass . pgAdm!n !harge les fi!hiers 'e !onfiguration et offre une
fenBtre 'e mo'ifi!ation !onviviale.
Cette fon!tionnalit est a!!essible via le menu >!$+!ersC*uvr!r postgres4l6$on7
et >!$+!ersC*uvr!r pg5+ba6$on7 pour un fi!hier lo!al.
Pour les fi!hiers 'istants- vous pouve: les ouvrir 0 partir 'u menu
*ut!lsCCon7!gurat!on du serveur <si vous ave: install le mo'ule !ontrib
Adm!npa$E?.
5.O 2Q!hes 'e maintenan!e
.estion 'es /AC00.s
FenBtre 'e maintenan!e < #2IND2-- CL0S"2# ?
%l est possible ',effe!tuer les tQ!hes 'e maintenan!e suivantes sur !ha!une 'es tables ou
'es bases 'e 'onnes :
/AC00. <ave! les options full- free:e et/ou anal;:e? \
ANAL;O2 \
#2IND2- <ave! les options for!e et/ou re!reate?.
Pour utiliser !ette fon!tionnalit- utiliser un !li! 'roit sur l,ob*et 0 manipuler puis
!hoisir ma!ntenan$e.
5.M =aintenan!e
&'7 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.L 4isualisation 'es verrous
$ffi!her la liste 'e verrous <lo!Hs?
4isualiser les re/uBtes en attente
pgAdm!n permet 'e visualiser les verrous a!tifs sur les bases 'e 'onnes. Cette
fon!tionnalit est a!!essible 'epuis le menu _&utils / ctat 'u serveur_ 'ans l,onglet
/errous.
Pour pouvoir visualiser le te+te 'es re/uBtes- la 'ire!tive stats5$ommand5str!ng
'oit Btre positionne 0 on 'ans le fi!hier postgres4l6$on7.
5.(F FenBtre 'es verrous
&'$ / 275 http://www.bull-formation.om

Administration PostgreSQL
5.(( Sauvegar'e
Sauvegar'er une base- un s!hma- une table
5 formats 'iffrents
=ultiples options
Cette fon!tionnalit s,appuie sur l,outil pg5dump et propose les options suivantes :
format pla!n- tar et $ustom
sauvegar'e 'es Blobs
in!lusion 'es *ID 'ans la sauvegar'e
enregistrement 'es 'onnes sous forme ',or're INS2#"
'sa!tiver les guillements ,g, pour le !orps 'es fon!tions
Pour les sauvegar'es au format pla!n- il est possible ',a!tiver les options suivantes :
sauvegar'er uni/uement les 'onnes
sauvegar'er uni/uement le s!hma
ne pas enregistrer le propritaire 'es 'onnes
in!lure l,or're 'e !ration 'e la base 'e 'onnes en 'but 'e sauvegar'e
in!lure l,or're 'e suppression 'es 'onnes avant les or'res 'e !ration
'sa!tiver les '!len!heurs
$ttention : pour restaurer les 'onnes ave! pgAdm!n les 'onnes 'oivent
Btre sauvegar'es au format tar ou custom.
5.(3 1estauration
interfa!e 'e restauration
format tar ou $ustom uni/uement
pgAdm!n permet 'e restaurer une table ou une base 0 partir ',un fi!hier 'e sauvegar'e
au format tar ou $ustom. Cette fon!tionnalit s,appuie sur l,outil pg5restore et
propose les options suivantes :
restaurer les 'onnes uni/uement
&'% / 275 http://www.bull-formation.om

Administration PostgreSQL
restaurer le s!hma uni/uement
ne pas restaurer le propritaire 'es 'onnes <l,utilisateur restaurant les
'onnes en 'evient propritaire?
'sa!tiver les '!len!heurs
Pour utiliser !ette fon!tionnalit- faire un !li! 'roit sur l,ob*et 0 restaurer et
sle!tionner #estaurat!on.
#ans la fenBtre 'e restauration- !hoisir le fi!hier !ontenant la sauvegar'e 'es 'onnes
et les options- puis vali'er.
5.(5 .estion 'es rPles
.estion 'e utilisateurs
.estion 'es groupes
1&L" a US"1 et/ou .1&UP
pgAdm!n permet 'e grer les rPles 'e groupes et ',utilisateurs. L,interfa!e permet
',a*outer- 'e mo'ifier et 'e supprimer les rPles. Pour !ha!un 'es rPles- il est possible 'e
sp!ifier :
un ou plusieurs rPles ',appartenan!e
'es variables
un mot 'e passe 'e !onne+ion
une 'ate ',e+piration pour le rPle
si le rPle hrite 'es 'roits 'es rPles parents
si le rPle est superutilisateur
si le rPle peut !rer 'es bases 'e 'onnes
si le rPle peut !rer 'es rPles
L,a*out 'e rPle est a!!essible via l,interfa!e ave! un !li! 'roit sur le noeu' #Ples
groupe ou #Ples de $onne9!on 'ans l,arbre 'u !luster 'e base 'e 'onnes.
Pour mo'ifier un rPle- utiliser le !li! 'roit sur le rPle !hoisi- puis !hoisir Propr!QtQs.
Pour supprimer un rPle- utiliser le !li! 'roit sur le rPle !hoisi- puis !hoisir Suppr!mer.
&&' / 275 http://www.bull-formation.om

Administration PostgreSQL
5.(6 .estion 'es tables
.estion 'es tables
.estions 'es 'roits et 'es attributs
Paramtrage 'es oprations 'e maintenan!e
pgAdm!n permet ',effe!tuer sur !ha!une 'es tables les oprations suivantes :
affi!her les 'onnes <ave! la possibilit 'e filtrer les 'onnes?
supprimer 'es tables en !as!a'e
'finir les param9tres ',autova!uum
'finir les 'roits
'finir 'es !ontraintes <!l primaire- !l trang9re- uni/ue- !he!H?
a*outer/mo'ifier/supprimer 'es !olonnes
5.(7 $ffi!hage 'es 'onnes
&&& / 275 http://www.bull-formation.om

Administration PostgreSQL
5.(R .estion 'es ob*ets
Cli!H 'roit sur l,ob*et
$ttention au+ ob*ets !a!hs )
#e mani9re gnrale- la gestion 'es ob*ets s,effe!tue 'e la mani9re suivante :
!li! 'roit sur l,ob*et gnri/ue pour pro!'er 0 l,a*out ',un ob*et ou a!!'er au
gestionnaire 'e 'roits pour le t;pe ',ob*et sle!tionn \
!li! 'roit sur un ob*et parti!ulier pour le mo'ifier- le supprimer- a*outer un ob*et 'e
mBme t;pe- a*outer un sousob*et ou a!!'er au gestionnaire 'e 'roits sur !et ob*et.
Les ob*ets grs par pgAdm!n sont : !onversion- langage- s!hma- agrgat- !onversion-
'omaine- fon!tion- trigger- pro!'ure- oprateur- !lasse ',oprateurs- famille
',oprateurs- s/uen!e- table- in'e+- !olonne- !ontrainte- r9gle- vue- t;pe.
Pour n,affi!her /ue les ob*ets utilisateurs et mas/uer les ob*ets s;st9mes- 'sa!tiver
l,option *bBets s%stRmes 'u menu A77!$+age.
$ttention- !e!i ne sera effe!tif /u,apr9s re!onne+ion.
5.(O c'iteur 'e re/uBtes
Un 'iteur 'e re/uBte permet 'e :
lire/!rire un fi!hier 'e re/uBtes \
e+!uter une re/uBte \
sauvegar'er le rsultat ',une re/uBte 'ans un fi!hier \
e+!uter un 2-PLAIN <ave! les options verbose et anal%Ne? sur une
re/uBte.
L,'iteur 'e re/uBte est a!!essible 'epuis le menu _&util/c'iteur 'e re/uBtes_ ou
'epuis un i!Pne 'e la barre ',outils.
&&2 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.(M FenBtre 'e l,'iteur 'e re/uBtes
&&! / 275 http://www.bull-formation.om

Administration PostgreSQL
6 pg$gent
Programmer 'es oprations rguli9res
Utile pour Xin'ows
Sous Linu+- !ron est prfrable
pgAgent est un agent utilis pour planifier l,e+!ution 'e tQ!hes pour PostgreSQL. %l est
!apable ',e+!uter 'es s!ripts shell ou 'es tQ!hes SQL ave! 'es planifi!ations
!omple+es.
pgAgent a t intro'uit ave! pgAdm!n (.6.
6.( %nstallation 'e pg$gent
%n!lus 'ans l,installateur Xin'ows
pa/uets 1P= et #ebian/Ubuntu 'isponibles
4oi!i un e+emple ',installation 'u pa/uet pgAgent sous #ebian. @e pas oublier 'e
vrifier /ue le langage plpgs4l est install pour la base postgres- puis e+!uter le
s!ript /usr/share/pga'min5/pgagent.s/l
$ a*t6gt #'$ta(( pgagent
$ createlang plpgsql postgres
$ psql postgres 0 /usr/share/pgadmin3/pgagent.sql
%l est galement possible 'e l,e+!uter le s!ript 0 partir 'e pgAdm!n. Pour !ela-
sle!tionner la base postgres- puis ouvrir l,'iteur 'e re/uBtes <menu
S*ut!ls D: Td!teur de re4uUtesS= et sQle$t!onner le 7!$+!er6
6.3 *obs
Cha/ue ta!he est reprsent par un I*obJ
#finir la prio'i!it et les a!tions
pg$'min gar'e la tra!e 'es rsultats obtenus
&&" / 275 http://www.bull-formation.om

Administration PostgreSQL
pgAgent e+!ute 'es tQ!hes planifies appeles Bobs. Cha/ue Bob !onsiste en
l,e+!ution 'e steps ou <pas en fran8ais? 0 'es 'ates !hoisies.
Un noeu' Bobs est prsent 'ans pgAdm!n pour permettre la !onfiguration 'es tQ!hes
pour pgAgent. Un Bob peut !omporter un ou plusieurs pas et galement une ou
plusieurs plan!7!$at!ons.
pgAdm!n affi!he le rsultat 'e la 'erni9re e+!ution 'es *obs ainsi /ue la 'ate 'u
pro!hain '!len!hement.
6.5 Planifier une ta!he 'e maintenan!e
6.6 ctapes
une srie 'e !omman'e SQL
un fi!hier bat!h
Une step <ou tape? est la 'finition ',une a!tion 0 faire pour pgagent. Cela peut Btre
&&5 / 275 http://www.bull-formation.om

Administration PostgreSQL
une srie 'e !omman'es SQL ou bien un fi!hier bat!h.
Pour !ha/ue tape- il faut 'finir le nom 'e la base 'e 'onnes sur la/uelle il
s,appli/ue.
$fin 'e !ontrPler le rsultat 'e sortie ',un *ob- il peut Btre plus intressant 'e mettre
'es !omman'es SQL 'ans un fi!hier 0 e+!uter plutPt /ue ',e+!uter 'ire!tement 'es
or'res SQL 'epuis un Bob.
6.7 #finir une tape
6.R Planifi!ation
Prio'i!it simple]
] ou planifi!ation volue
"+!eptions
&&# / 275 http://www.bull-formation.om

Administration PostgreSQL
pgAgent permet ',utiliser 'es planifi!ations !omple+es pour l,e+!ution 'es Bobs.
%l est possible 'e 'terminer une plage temporelle 'e vali'it ',une planifi!ation.
&n peut 'finir une prio'i!it pour une planifi!ation selon :
les *ours 'e la semaines <'iman!he .. same'i? \
les *ours 'u mois <(er- 39me .. 5(9me? \
les mois 'e l,anne <*anvier .. '!embre? \
un ou plusieurs temps <heure ^ minutes?
&n peut galement sp!ifier 'es e+!eptions pour les/uelles les Bobs ne seront pas
e+!uts.
6.O "!ran 'e planifi!ation
&&7 / 275 http://www.bull-formation.om

Administration PostgreSQL
7 phpPg$'min
$'resse: http://phppga'min.sour!eforge.net/
4ersion: 7.F.3
Li!en!e: .@U Publi! Li!ense
@otes: =ultiplateforme
7.( phpPg$'min : prsentation gnrale
phpPgdmin - Prsentation gnrale
phpPg$'min se !ompose 'e 'eu+ volets:
&&$ / 275 http://www.bull-formation.om

Administration PostgreSQL
une arbores!en!e sur la gau!he permettant 'e naviguer parmi les ob*ets 'es serveurs
et 'e leur bases 'e 'onnes
la page prin!ipale 0 'roite affi!hant les 'tails 'e l,ob*et voulu ou 'e l,a!tion ralise
7.3 phpPg$'min : Fon!tionnalits (/3
$ppli!ation web 'porte
Cration- maintenan!e 'e bases 'e 'onnes
%mport et e+port 'e 'onnes
"+!ution 'e !omman'es SQL et 'e s!ripts <uploa'?
.estion 'es tablespa!es
.estion 'es utilisateurs et 'es 'roits
.estion 'es !onne+ions
Support multilingue <5( langues supports?
Support 'es 'iffrentes oprations 'e maintenan!e
phpPg$'min a !ertains avantages:
!apable grer un nombre illimit 'e serveurs PostgreSQL
permet sur les serveurs PostgreSQL 'e ne n,ouvrir l,a!!9s /u,0 une seule ma!hine 'ans
le fi!hier pg[hba.!onf- plutPt /u,0 !ha!un 'es postes #B$
!entralise l,installation et la !onfiguration 'es a!!9s vers les serveurs en un seul point
plutPt /ue 'e multiplier !eu+!i sur tous les postes #B$
&&% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.5 phpPg$'min : Fon!tionnalits 3/3
.estion 'es tables- vues- in'e+- s/uen!es
.estion 'es !ontraintes- fon!tions- triggers- r9gles-
.estions 'es t;pes- agrgats- 'omaines
4isualisation 'es verrous
4isualisation 'es oprateurs- !lasses ',oprateurs et !onversions entre
en!o'ages
4isualisation 'es languages et !onversions 'e t;pe
Configuration 'e l,autova!uum
Configuration 'e la re!her!he plein te+te
&2' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.6 $rbores!en!e $per8us
phpPgdmin - rborescence - per!us
7.6.( #tails
Le volet 'e gau!he 'e phpPg$'min prsente les 'iffrents serveurs a!!essibles 'epuis
l,instan!e !onfigure.
Pour !ha/ue serveur- l,arbores!en!e in!lut !ha/ue base ainsi /ue leurs ob*ets.
&2& / 275 http://www.bull-formation.om

Administration PostgreSQL
7.6.3 .roupes 'e serveurs
phpPg$'min permet 'e regrouper les 'iffrents serveurs PostgreSQL /ui ; sont
!onfigurs en groupe logi/ue.
Sue la !apture ',!ran prsente i!i- l,a'ministrateur a '!i' 'e regrouper ses serveurs
en fon!tion 'e la bran!he 0 la/uelle ils appartiennent- soit trois groupes 'istin!ts:
Ibran!he O.+J
Ibran!he M.+J
Ibran!he L.+J
4oi!i l,e+trait 'u fi!hier I!onf/!onfig.in!.phpJ /ui permet !ette !onfiguration:
%% !roups allo& administrators to logical' group servers toget(er under group nodes in t(e left
bro&ser tree
$conf['srv_groups'][0]['desc'] = "branche 7.x";
$conf['srv_groups'][0]['servers'] = '0';
$conf['srv_groups'][1]['desc'] = 'branche 8.x';
$conf['srv_groups'][1]['servers'] = '1,2,3,4,5';
$conf['srv_groups'][2]['desc'] = 'branche 9.x';
$conf['srv_groups'][2]['servers'] = '6,7';
Ce /ui peutBtre aussi !rit 'e !ette fa8on:
$conf['srv_groups'] = array(
array(
'desc' => 'branche 7.x',
'servers' => '0'
),
array(
'desc' => 'branche 8.x',
'servers' => '1,2,3,4,5'
),
array(
'desc' => 'branche 9.x',
'servers' => '6,7'
)
);
Le nCu' nomm I2ous les serveursJ regroupe l,ensemble 'es serveurs prsents 'ans la
!onfiguration 'e phpPg$'min.
&22 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.7 $rbores!en!e 2ables- vues- s/uen!es et
fon!tions

phpPgdmin - rborescence - "ables# vues# squences et fonctions
Le volet 'e gau!he permet 'e naviguer rapi'ement 'ans les ob*ets 'es bases 'e
'onnes. $insi- il est possible 'e lister et ',a!!'er au+ tables- vues- s/uen!es et
fon!tions ',un s!hma tr9s rapi'ement.
&2! / 275 http://www.bull-formation.om

Administration PostgreSQL
7.R $rbores!en!e #tails table

phpPgdmin - rborescence - $tails table
L,arbores!en!e permet aussi ',a!!'er rapi'ement 0 l,ensemble 'es proprits 'es
tables.
Cli/uer sur les labels m9ne 0 la page 'e proprit 'e l,ob*et 'sir. @ote: !epen'ant
/ue !ertaines i!Pnes ont un lien 'iffrent 'e !elui 'e leur label:
l,i!Pne 0 gau!he 'u nom ',une table permet 'e par!ourir 'ire!tement les 'onnes 'e
la table
l,i!Pne 0 gau!he 'u nom ',une !olonne permet 'e visualiser !ha!une 'es valeurs
prsentes 'ans la table ainsi /ue leur nombre ',o!!urren!e
Sur la !apture ',!ran i!i prsente- les nCu's 'ont le label est en noir ne sont
!epen'ant pas !li/uables !ar !es lments n,ont pas 'e page sp!ifi/ue.
&2" / 275 http://www.bull-formation.om

Administration PostgreSQL
7.O $rbores!en!e #tails vue

phpPgdmin - rborescence - $tails vue
Comme pour les tables- l,arbores!en!e permet 'e visualiser et a!!'er rapi'ement au+
'tails 'es vues.
%!i aussi- !li/uer sur l,i!Pne ',une vue ou ',une 'e !es !olonnes permet 'e naviguer 'ans
les 'onnes 'e !ette vue ou 'e sa !olonne.
&25 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.M "+!uter 'es re/uBtes
phpPgdmin - %&cution de requtes SQL

L,e+!ution 'e re/uBtes SQL 'epuis phpPg$'min se fait 'epuis l,onglet ISQLJ a!!essible
au niveau 'e !ha/ue base 'e 'onnes ou ',un 'e leurs s!hmas.
%l e+iste 'eu+ mtho'es pour e+!uter !es re/uBtes SQL :
l,e+!ution 'ire!te en ligne en remplissant le formulaire
l,e+!ution ',un s!ript SQL en !hoisissant un fi!hier SQL 'epuis votre 'is/ue 'ur lo!al
&2# / 275 http://www.bull-formation.om

Administration PostgreSQL
7.L Wistori/ue 'es re/uBtes
phpPgdmin - 'entre d'historique

phpPg$'min permet 'e !onserver un histori/ue 'es re/uBtes e+!utes par l,utilisateur
lors 'e la session !ourante. Cet histori/ue n,est pas !onserv entre 'eu+ sessions.
%l est possible ',a!!'er 0 !et histori/ue 0 travers le lien IWistori/ueJ en haut 0 'roite
'e la page prin!ipale. La fenBtre asso!ie prsente alors la liste 'e re/uBte- en fon!tion
'e la base 'e 'onnes sle!tionne. #e plus- elle permet alors au !hoi+ 'e :
supprimer 'es re/uBtes 'e !et histori/ue
vi'er l,histori/ue
re+!uter 'es re/uBtes
Seules les re/uBtes e+!utes 'ire!tement en ligne sont !onserve 'ans l,histori/ue-
!elles e+!utes 'epuis un s!ript SQL ne sont pas !onserves.
&27 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(F 1e!her!he
phpPgdmin - (echerche

phpPg$'min permet 'e re!her!her 'es ob*ets au sein ',une base 'e 'onnes. Cette
fon!tionnalit est a!!essible 'epuis l,onglet I1e!her!herJ 'isponible au niveau 'e
!ha/ue base 'e 'onnes.
%l est possible 'e !li/uer in'pen'amment sur !ha/ue nom ',ob*et pour !ha!une 'es
o!!urren!es trouves. Par e+emple- pour !ha/ue !olonne trouve- nous aurons trois
liens: le s!hma- la table et la !olonne- !ha/ue lien menant 0 la page 'e proprit
asso!ie 0 l,ob*et.
La re!her!he par!ourt tous les ob*ets 'e la base: s!hmas- tables- vues- !olonnes-
!ontraintes- in'e+- s/uen!es- fon!tions- triggers- r9gles- t;pes- 'omaines- oprateurs-
!lasses ',oprateur- !onversions- langages- et agrgats.
&2$ / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(( Pro!essus en !ours
phpPgdmin - Liste des processus en cours

L,onglet Ipro!essusJ a!!essible au niveau 'e !ha!une 'es bases 'e 'onnes permet 'e
visualiser les pro!essus !onne!ts 0 la base 'e 'onnes !ourante. Cha/ue pro!essus
!orrespon' 0 une !onne+ion 0 la base 'e 'onne.
@ous ; trouvons l,utilisateur utilis pour la !onne+ion- son a!tivit et 0 /uel moment 0
t e+!ute la re/uBte !ourante. #e plus- si votre utilisateur 'e !onne+ion en a le
'roit- !ette page vous permet ',interrompre une re/uBte- voire mBme 'e for!er la
'!onne+ion ',une session- respe!tivement 0 l,ai'e 'es a!tions I$nnulerJ et I2uerJ.
Si votre navigateur supporte les re/uBtes as;n!hrones en *avas!ript <aussi nomm a'a(?-
les 'onnes sur les sessions sont alors rafraE!hies automati/uement toutes les trois
se!on'es. %l est possible ',arrBter !e !omportement en !li/uant sur I$rrBterJ.
&2% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(3 4isualisation 'es verrous
phpPgdmin - )isualisation des verrous

L,onglet I4errousJ a!!essible au niveau 'e !ha!une 'es bases 'e 'onnes permet 'e
visualiser tous les verrous prsents sur la base 'e 'onnes !ourante.
%!i aussi- si votre navigateur supporte les re/uBtes a*a+- les 'onnes sont alors
rafraE!hies toutes les 5 se!on'es. 2out !omme pour la page 'es pro!essus- il est possible
',arrBter !e !omportement en !li/uant sur I$rrBterJ.
&!' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(5 2Q!he 'e maintenan!e (/5
phpPgdmin - *aintenance base de donnes

phpPg$'min permet ',e+!uter les 'iffrentes tQ!hes 'e maintenan!es pour toute une
base- un ensemble 'e tables ou une table en parti!ulier. Ce sli'e prsente les
oprations sur une base enti9re
Les /uatre tQ!hes 'e maintenan!e !ourante sont 'isponibles: 4$CUU=- $@$LAZ"-
CLUS2"1 et 1"%@#"Y.
%!i- elles s,e+!uteront toutes sur toutes les tables prsentes 'ans la base 'e 'onnes
!ourante.
La partie I$utova!uumJ permet 'e visualiser le paramtrage sp!ifi/ue 'e !e
m!anisme par ta!le. #ans l,e+emple prsent i!i- l,autova!uum a t 'sa!tiv pour la
table IregionJ. Le param9tre mo'ifi apparaEt alors en rouge.
%l est i!i possible ','iter ou supprimer les !onfigurations e+istantes 'e l,autova!uum
pour !ha/ue table- mais pas ',en ra*outer.
&!& / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(6 2Q!he 'e maintenan!e 3/5
"+!ution 'es tQ!hes 'e maintenan!es pour un ensemble 'e tables :
phpPgdmin - *aintenance d'un ensemble de tables

%l est possible ',e+!uter une tQ!he 'e maintenan!e sur plusieurs tables ',un mBme
s!hma 'epuis l,onglet I2ablesJ 'es proprits 'u s!hma.
Co!he: les 'iffrentes tables voulues- sle!tionne: l,opration 'e maintenan!e voulue
en 'essous 'u tableau- !li/ue: sur ILan!erJ. Une page 'e !onfirmation vous permettra
'e vali'er la liste 'es tables une 'erni9re fois avant ',e+!uter l,opration.
@ous avons i!i aussi un a!!9s 'ire!t au+ oprations 'e 4$CUU=- $@$LAZ"- 1"%@#"Y pour
!ha!une 'es tables en parti!ulier.
&!2 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(7 2Q!he 'e maintenan!e 5/5
2Q!hes 'e maintenan!es pour une table :
phpPgdmin - *aintenance d'une table

L,onglet I$'minJ a!!essible au niveau 'e !ha/ue table permet ',a!!'er 0 une page
/uivalente 0 !elle propose pour les bases 'e 'onnes- mais !on!ernant !ette fois!i
uni/uement la table sle!tionne.
$insi- il sera i!i aussi possible ',e+!uter les tQ!hes 'e 4$CUU=- $@$LAZ"- CLUS2"1 et
1"%@#"Y sur la table voulue. @ote: /ue CLUS2"1 ne sera i!i a!!essible /ue si un in'e+ a
t 'fini au pralable pour !ette opration.
L,a*out ',une !onfiguration ',autova!uum sp!ifi/ue 0 la table est 'isponible i!i si
au!une n,est '*0 'finie. Si la !onfiguration e+iste- il est alors possible 'e l,'iter ou
'e la supprimer.
&!! / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(R #finition ',une table
phpPgdmin - $finition d'une table

Cette page prsente la 'finition ',une table. @ous ; retrouvons ses !olonnes- leurs
t;pes et !ontraintes. #e plus- elle nous permet ',a*outer ou supprimer 'es !olonnes-
vi'er la table- insrer 'e nouvelles lignes ou ',effe!tuer une re!her!he sur la table.
Pour !ha!une 'es !olonnes nous avons la possibilit 'e l,'iter- la supprimer- ',en
mo'ifier les 'roits <0 partir 'e PostgreSQL M.6?- ',en par!ourir les 'onnes. @ote: /u,il
est possible 'e !onsulter la 'finition 'es !ontraintes au survol 'es i!Pnes asso!ies
ave! la souris.
&!" / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(O %nformation sur les tables
phpPgdmin - Statistiques sur les tables

phpPg$'min est !apable 'e vous prsenter /uel/ues informations sur les statisti/ues
',utilisation 'e la table ainsi /ue la liste 'es tables /ui en hritent.
&!5 / 275 http://www.bull-formation.om

Administration PostgreSQL
R Con!lusion
Cette prsentation n,est pas e+haustive )
%l e+iste ',autres pro'uits /uivalents.
R.( Bibliographie
2our graphi/ue 'e pg$'min (.(6
2our graphi/ue 'e pg$'min (.(3
U 2our graphi/ue 'e pg$'min (.(6 N. .uillaume Lelarge- 3F((
http://www.pga'min.org/visualtour(6.php
U 2our graphi/ue 'e pg$'min (.(3 N. .uillaume Lelarge- 3F(F
http://www.pga'min.org/visualtour(3.php
(conograp$ie :
La photo initiale est 'isponible sous li!en!e CCBAS$ :
http://www.fli!Hr.!om/photos/maggieme/67M((R5R6R/
R.3 Questions
@,hsite: pas- !,est le moment )
&!# / 275 http://www.bull-formation.om

Administration PostgreSQL
ravau# prati+ues
&!7 / 275 http://www.bull-formation.om

Administration PostgreSQL
( cnon!s
(.( pg$'min
Le but 'e !e 2P est ',utiliser pg$'min pour effe!tuer les tQ!hes !ourantes sur une base
PostgreSQL.
"+!uter pga'min5 ave! l,utilisateur postgres.
Crer une !onne+ion sur le serveur PostgreSQL lo!al.
Positionner le param9tre worH[mem 'u fi!hier postgres/l.!onf 0 (F=B 0 l,ai'e 'e
pg$'min.
1e'marrer postgreSQL.
Se !onne!ter sur la base _tp['rui'_ et lan!er un 4$CUU= FULL $@$LAZ" sur la base
_tp['rui'_.
planifier un va!uum 'e la base tous les lun'is 0 3h5F. 4rifier /ue la pro!haine
e+!ution 'e 'u va!uum 'e la base est bien prvue pour le lun'i suivant 0 3h5F.
$ffi!her toutes les 'onnes 'u *our 'ans la table _vente_ en utilisant un filtre sur les
'onnes 'e la table _vente_.
$ffi!her les 'onnes 'e la vue _a!hat['u[*our_.
Sauvegar'er la base _tp['rui'_ au format _C&=P1"SS_ 'ans un fi!hier
/var/ba!Hups/pgs/l/base[tp['rui'.'ump.
Supprimer la base 'e 'onnes _tp['rui'_.
$ttention 'e rafraE!hir la liste 'es bases 'e 'onnes afin 'e fermer les
!onne+ions a!tives 'e pga'min sur les bases 'e 'onnes avant 'e
supprimer la base 'e 'onnes.
Crer une nouvelle base _tp['rui'_.
1estaurer la sauvegar'e.
1in'e+er manuellement la base 'e 'onnes _tp['rui'_.
$*outer un rPle groupe Ile!tureJ et un utilisateur Ile!teurJ- appartenant au rPle
Ile!tureJ </ui hrite 'es 'roits 'u rPle le!ture?.
#onner les 'roits en le!ture sur les tables 'e la base 'e 'onnes tp['rui' au rPle
Ile!tureJ.
Se !onne!ter 0 la base 'e 'onnes ave! l,outil ps/l ave! l,utilisateur le!teur et vrifier
/ue !et utilisateur peut a!!'er en le!ture au+ tables 'e la base _tp['rui'_ mais /u,il
ne peut pas ; a!!'er en !riture.
&!$ / 275 http://www.bull-formation.om

Administration PostgreSQL
$*outer une nouvelle table temporaire _tmp_ /ui !ontient un !hamp i' 'e t;pe serial
et un !hamp libelle 'e t;pe te+t non nul.
$*outer une !ontrainte 'e !l primaire pH[tmp[i' sur le !hamp i' 'e la table _tmp_\
$*outer un in'e+ i'+[tmp[libelle 'e t;pe btree sur le !hamp libelle 'e la table _tmp_.
$*outer une !olonne libelle[!ourt 'e t;pe te+t 0 la table _tmp_.
c!rire une fon!tion rempli[libelle[!ourt /ui rempli le !hamps libelle[!ourt ave! les (F
premiers !ara!t9res 'u !hamp libelle. Cette fon!tion sera appel par le '!len!heur
trigger[tmp[libelle[!ourt /ui sera e+!ut avant insertion ou mise 0 *our 'e la table
_tmp_.
$ l,ai'e 'e l,'iteur 'e re/uBte- a*outer l,lment a;ant pour libelle I2est ',insertion
'ans la table temporaireJ 'ans la table _tmp_. 4rifier /ue l,lment est insr
!orre!tement en utilisant la fon!tion 'e visualisation 'es 'onnes sur la table _tmp_-
et /ue le '!len!heur a rempli la !olonne libelle[!ourt !orre!tement.
"ffa!er les lments 'e la table _tmp_ 0 l,ai'e 'e l,'iteur 'e re/uBte et rinitialiser
la s/uen!e tmp[i'[se/ 0 (.
%nsrer l,lment a;ant pour libelle I2est ',insertion 'ans la table temporaire numro
3J 'ans la table _tmp_ et vrifier /ue l,i' 'e !et lment est bien (.
Supprimer la table temporaire ainsi /ue tous les ob*ets s,; rapportant.
(.3 #rui'
#ans !e 2P- nous allons !onstruire une petite base 'e 'onnes nomme tp['rui' 0 l,ai'e
'e l,outil #rui'.
Cette base 'e 'onnes est '!oupe fon!tionnellement en 5 mo'ules fon!tionnels-
_base[interne_- _a!hat_ et _vente_.
&n a*outera un alias au t;pe var!har pour avoir un t;pe !o'e[arti!le /ui est une !haEne
'e !ara!t9re 'e 5 lettres ma*us!ules.
&n a*outera un alias au t;pe var!har pour avoir un t;pe telephone /ui est une !haEne 'e
(F !ara!t9res.
Le mo'ule _base[interne_ !omporte :
une table _arti!le_ /ui poss9'e 3 !hamps :
!o'e 'e t;pe !o'e[arti!le /ui est la !l 'e la table arti!le.
'esignation 'e t;pe te+t /ui est un libell libre \
Le mo'ule _a!hat_ !omporte :
une table _fournisseur_ /ui poss9'e les !hamps suivants :
i' 'e t;pe serial /ui est la !l primaire 'e la table \
nom 'e t;pe te+t est un !hamps obligatoirement non null\
a'resse 'e t;pe te+t \
&!% / 275 http://www.bull-formation.om

Administration PostgreSQL
telephone 'e t;pe te+t /ui est une !haEne 'e (F !ara!t9res.
une table _arti!le[fournisseur_ /ui est une table 'e relation entre la table _arti!le_ et
la table _fournisseur_. Cette table !ontient le nombre ',arti!les !omman's 0 une
'ate 'onne !he: un fournisseur. Cette table !omporte les !hamps suivants :
arti!le[!o'e : rfren!e vers le !o'e 'e l,arti!le \
fournisseur[i' : rfren!e vers l,i' 'u fournisseur \
'ate[!omman'e : 'ate 'e la !omman'e \
nombre : nombre ',arti!les !omman's.
Les ) prem!ers $+amps de la table Lart!$le57ourn!sseurL 7orment la $lQ
pr!ma!re6 La table Lart!$le57ourn!sseurL do!t Utre m!se V Bour
lors4u1un art!$le ou un 7ourn!sseur est suppr!mQ pour ne pas avo!r de
rQ7Qren$e $assQe6
une vue _!omman'e['u[*our_ /ui montre tous les arti!les !omman's pour le *our
!ourant.
une fon!tion _!omman'e[arti!les['u[*our_ /ui renvoie le nombre ',arti!les
!omman's pour le *our !ourant.
Le mo'ule _vente_ !omporte :
une table _!lient_ /ui poss9'e les !hamps suivants :
i' 'e t;pe serial /ui est la !l primaire 'e la table \
nom 'e t;pe te+t est un !hamps obligatoirement non null\
a'resse 'e t;pe te+t \
telephone 'e t;pe te+t /ui est une !haEne 'e (F !ara!t9res.
une table _vente_ /ui est une table 'e relation entre la table _arti!le_ et la table
_!lient_. Cette table !ontient le nombre ',arti!les ven'us 0 une 'ate 'onne 0 un
!lient. Cette table !omporte les !hamps suivants :
arti!le[!o'e : rfren!e vers le !o'e 'e l,arti!le \
!lient[i' : rfren!e vers l,i' 'u !lient \
'ate[a!hat : 'ate 'e l,a!hat \
nombre : nombre ',arti!les a!hets.
Les ) prem!ers $+amps de la table LventeL 7orment la $lQ pr!ma!re6 La
table LventeL do!t Utre m!se V Bour lors4u1un art!$le ou un $l!ent est
suppr!mQ pour ne pas avo!r de rQ7Qren$e $assQe6
une vue _a!hat['u[*our_ /ui montre toutes les ventes pour le *our !ourant.
Questions
_ Crer la base 'e 'onnes tp['rui' 'ans #rui' 0 partir 'u template PostgreSQL.
_ Crer les lments 'u mo'ule _base interne_ et 'u mo'ule _a!hat_.
&"' / 275 http://www.bull-formation.om

Administration PostgreSQL
_ Crer les lments 'u mo'ule _vente_ par !opie 'es lments 'u mo'ule _a!hat_.
_ Crer la vue "/1 I4ue 'e la base tp['rui'J /ui montre les relations entre toutes les
tables 'e la base 'e 'onnes.
_ $*outer le mo'ule _PostgreSQL_ au mo'ule _S/l s!ript_ pour la gnration 'es s!ripts
SQL- puis gnrer le !o'e SQL.
_ $*outer le mo'ule _P#F Format_ au mo'ule _#o!s_ pour la gnration 'e la
'o!umentation- puis gnrer la 'o!umentation au format P#F.
_ $*outer le mo'ule >ava au mo'ule Co'e pour la gnration 'es !lasses >ava- puis apr9s
avoir !onfigur le nom 'u pa!Hage <e+: tp['rui'? gnrer le !o'e >ava.
_ $ l,ai'e 'e l,outil !reate'b- !rer une base tp['rui' vi'e et ; a*outer le langage
plpgs/l.
_ $ l,ai'e 'e ps/l- e+!uter le !o'e SQL gnr- puis insrer un arti!le- un fournisseur-
un !lient- une !omman'e ',arti!le pour le *our !ourant- une vente ',arti!le pour le *our
!ourant. 4rifier /ue les vues et la fon!tion renvoient le rsultat atten'u.
&"& / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Solutions
3.( pg$'min
Corps 'e la fon!tion rempli[libelle[!ourt :
BEGIN
NEW.libelle_court := substring (NEW.libelle FROM 1 FOR 10);
END;
3.3 #rui'
%nsertion 'es 'onnes :
insert into article (code, designation) values ('PGD', 'PostgreSQL documentation');
insert into fournisseur (nom) values ('mon_fournisseur');
insert into client (nom) values ('mon_client');
insert into article_fournisseur (article_code, fournisseur_id, date_commande, nombre) values
('PGD', 1, now() - interval '1 d', 3);
insert into article_fournisseur (article_code, fournisseur_id, date_commande, nombre) values
('PGD', 1, now(), 2);
insert into vente (article_code, client_id, date_achat, nombre) values ('PGD', 1, now() -
interval '1 d', 1);
insert into vente (article_code, client_id, date_achat, nombre) values ('PGD', 1, now(), 1);
%nterrogation 'e la base 'e 'onnes :
select * from article;
select * from fournisseur;
select * from client;
select * from article_fournisseur;
select * from vente;
select * from commande_du_jour;
select * from achat_du_jour;
select * from commande_articles_du_jour();
&"2 / 275 http://www.bull-formation.om

Administration PostgreSQL
2c$es courantes
&"! / 275 http://www.bull-formation.om

Administration PostgreSQL
( %ntro'u!tion
Cration/suppression ',une base
2emplates
1Ples et utilisateurs
=aintenan!e
%n'e+ation
(.( Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
&"" / 275 http://www.bull-formation.om

Administration PostgreSQL
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
&"5 / 275 http://www.bull-formation.om

Administration PostgreSQL
3 .estion 'es bases
Cration
Suppression
Configuration
=o'9le <ie. 2emplate?
3.( Cration ',une base
SQL : C#2A"2 DA"ABAS2
1util s/st0me : $reatedb
Quan' une nouvelle base 'e 'onnes est !re 0 l,intrieur 'u groupe- Itemplate(J est
gnralement !lone. Cela signifie /ue tous les !hangements effe!tus sur Itemplate(J
sont propags 0 toutes les bases 'e 'onnes !res ultrieurement. #u !oup- il est
'!onseill ',utiliser Itemplate(J pour votre travail /uoti'ien mais !ette proprit-
utilise *u'i!ieusement- peut Btre utile.
L,outil s;st9me $reatedb se !onne!te 0 la base 'e 'onnes IpostgresJ et e+!ute la
!omman'e C#2A"2 DA"ABAS2- e+a!tement !omme !i'essus. $ppele sans au!un
argument- $reatedb !re une base 'e 'onne portant le nom 'e l,utilisateur !ourant.
D partir 'e la version M.6- il est possible ',in'i/uer les options LC5C*LLA"2 <or're 'e
tri? et LC5C";P2 <*eu 'e !ara!t9res? pour !ha/ue base 'e 'onnes !re.
3.3 Suppression ',une base
SQL : D#*P DA"ABAS2
1util s/st0me : dropdb
Supprimer une base 'e 'onnes supprime tous les ob*ets /ui taient !ontenus 'ans la
base. La 'estru!tion ',une base 'e 'onnes ne peut pas Btre annule. 4ous ne pouve:
pas e+!uter la !omman'e D#*P DA"ABAS2 en tant !onne!t 0 la base 'e 'onnes
&"# / 275 http://www.bull-formation.om

Administration PostgreSQL
!ible. @anmoins- vous pouve: Btre !onne!t 0 une autre base 'e 'onnes- !e!i
in!luant la base Itemplate(J. Itemplate(J pourrait Btre la seule option pour supprimer
la 'erni9re base utilisateur ',un groupe 'onn.
Contrairement 0 $reatedb- l,a!tion par 'faut n,est pas 'e supprimer la base poss'ant
le nom 'e l,utilisateur en !ours.
3.5 Configuration
AL"2# DA"ABAS2 base S2" param "* valW
$ttention- paramtrage sp!ifi/ue non !opi.
%l est possible 'e mo'ifier , c$aud un gran' nombre 'e param9tres 'e la base- en
utilisant la s;nta+e suivante :
ALTER DATABASE base SET param TO val;
Les param9tres par base 'e 'onnes sur!hargent tous !eu+ re8us 'e la ligne 'e
!omman'e 'e postmaster ou 'u fi!hier 'e !onfiguration- et sont aussi sur!hargs par
!eu+ 'e l,utilisateur \ les 'eu+ sont sur!hargs par les options par session.
Cela sauvegar'e le rglage <mais ne l,appli/ue pas imm'iatement?. Lors 'es !onne+ions
ultrieures 0 !ette base 'e 'onnes- tout se passe !omme si la !omman'e tait
e+!ute *uste avant 'e !ommen!er la session. @ote: /ue les utilisateurs peuvent
!epen'ant mo'ifier !e rglage pen'ant la session \ il s,agit seulement ',un rglage par
'faut. Pour annuler un tel rglage par 'faut- utilise: :
ALTER DATABASE nom_base RESET nom_variable;
Si vous !opie: une base 'e 'onnes 'ont !ertains param9tres ont t !onfigurs
sp!ifi/uement pour !ette base 'e 'onnes- !es param9tres ne sont pas appli/us 0 la
nouvelle base 'e 'onnes.
3.6 =o'9le 'e base <ie. 2emplate?
Crer une base 'e 'onnes 0 partir 'e Itemplate3J :
CREATE DATABASE nom_base TEMPLATE template2;
par 'faut- Itemplate(J est utilise
Lan!er un /AC00. >#22O2- apr9s la !ration 'u template
&"7 / 275 http://www.bull-formation.om

Administration PostgreSQL
%l est essentiel /ue la base 'e 'onnes sour!e soit ina!tive <pas 'e transa!tion en
!riture en !ours? pen'ant toute la 'ure 'e l,opration 'e !opie.
&n peut par e+emple '!i'er /ue la base test 'oit Btre fige pour 'evenir un mo'9le :
UPDATE pg_database
SET datistemplate=true
WHERE datname='test';
$insi- tout utilisateur 'ot 'u 'roite C1"$2"#B pourra la !loner. Sans !ette option- seul
un superutilisateur ou le propritaire 'e la base !lone peut en faire une !opie.
La !omman'e shell !orrespon'ante pour !rer une base 'e 'onnes 0 partir ',un mo'9le
est :
createdb -T test nom_base
C#2A"2 DA"ABAS2 fon!tionne en !opiant une base 'e 'onnes pre+istante. Par
'faut- !ette !omman'e !opie la base 'e 'onnes s;st9me stan'ar' Itemplate(J. $insi-
!ette base 'e 'onnes est le U mo'9le N 0 partir 'u/uel 'e nouvelles bases 'e 'onnes
sont !res. Si vous ; a*oute: 'es ob*ets- !es ob*ets seront !opis 'ans les bases 'e
'onnes utilisateur !res ultrieurement.
Par e+emple- si vous installe: le langage 'e pro!'ures PL/pgSQL 'ans la base
Itemplate(J- !elui!i sera automati/uement 'isponible 'ans les bases 'e 'onnes
utilisateur !res 0 partir 'e !e mo'9le.
$pr9s avoir prpar ou mo'ifi une base 'e 'onnes mo'9le- il est re!omman'
',utiliser la !omman'e /AC00. >#22O2 'ans !ette base 'e 'onnes. Cela vite les
probl9mes 'e rutilisation ',%# 'e transa!tion '*0 attribus <parti!uli9rement
important si- en plus- datallow$onn vaut 7alse !ar au!une !onne+ion 'e
maintenan!e n,; est autorise 'ans !e !as?.
&"$ / 275 http://www.bull-formation.om

Administration PostgreSQL
5 Utilisateurs d .roupes
4ersions
Utilisateurs
.roupes
$ttributs
#roits
5.( 4ersions
3ersion 4 5676 : US"1 d .1&UP
3ersion 89 5676 : 1&L"
$ve! les versions antrieures 0 la M.(.+ 'e PostgreSQL- les 'roits sont grs !omme 'ans
IUni+J : on peut !rer 'es utilisateurs et 'es groupes. Les groupes tant une mani9re
logi/ue 'e grouper les utilisateurs pour fa!iliter la gestion 'es privil9ges- les 'roits
peuvent Btre a!!or's ou rvo/us 0 un groupe entier.
D partir 'e la version M.( apparaEt la notion 'e rPle en lieu et pla!e 'es utilisateurs et
les groupes. Un rPle peut Btre vu soit !omme un utilisateur 'e la base 'e 'onnes- soit
!omme un groupe ',utilisateurs 'e la base 'e 'onnes- suivant la fa8on 'ont le rPle est
!onfigur. Les rPles peuvent poss'er 'es ob*ets 'e la base 'e 'onnes <par e+emple
'es tables? et peuvent affe!ter 'es 'roits sur !es ob*ets 0 ',autres rPles pour !ontrPler
/ui a a!!9s 0 !es ob*ets. #e plus- il est possible 'e 'onner l,appartenan!e ',un rPle 0 un
autre rPle- l,autorisant ainsi 0 utiliser les 'roits affe!ts au rPle 'ont il est membre.
Les !on!epts 'es U utilisateurs N et 'es U groupes N restent 'isponibles 'ans les versions
M.( et ultrieures. %l n,; a 'on! pas 'e probl9mes 'e !ompatibilit as!en'ante.
&"% / 275 http://www.bull-formation.om

Administration PostgreSQL
5.3 Utilisateurs
SQL : C#2A"2 0S2# : a*oute un nouvel utilisateur 'ans le groupe 'e
bases 'e 'onnes PostgreSQL
SQL : AL"2# 0S2# : !hange les attributs ',un utilisateur
SQL : D#*P 0S2# : supprime un utilisateur
SQL : AL"2# G#*0P : g9re l,appartenan!e ',un utilisateur 0 un groupe
1utils s/st0me : $reateuser / dropuser : !omman'es utilises pour
a*outer ou supprimer un utilisateur 'e base 'e 'onnes
SQL : #2ASSIGN et D#*P *&N2D : raffe!tation/suppression 'es ob*ets
appartenant 0 un rPle
"+emple : Crer un utilisateur vali'e *us/u,en 3F(F :
CREATE USER tom WITH PASSWORD 'fud77val' VALID UNTIL '2010-01-01';
D partir 'e la version M.(.+- la !omman'e :
CREATE USER nom;
est /uivalente 0 :
CREATE ROLE nom LOGIN;
5.5 .roupes
SQL : C#2A"2 G#*0P : !re un groupe ',utilisateurs 'e base 'e 'onnes
SQL : D#*P G#*0P : supprime un groupe ',utilisateurs 'e base 'e
'onnes
SQL : AL"2# G#*0P : !omman'e utilise pour grer un groupe 'e base
'e 'onnes
D partir 'es versions M.(.+- C#2A"2 G#*0P est un alias 'e C#2A"2 #*L2 ave! l,option
N*L*GIN.
Pour a*outer ou supprimer un utilisateur 0 un groupe :
&5' / 275 http://www.bull-formation.om

Administration PostgreSQL
ALTER GROUP nom_group ADD USER utilisateur_1, ... ;
ALTER GROUP nom_group DROP USER utilisateur_1, ... ;
5.6 1Ples
1Ples a Utilisateur ^ .roupe
SQL : C#2A"2 #*L2 : a*oute un nouveau rPle 'ans une grappe <!luster?
'e bases 'e 'onnes PostgreSQL.
SQL : D#*P #*L2 : supprime un rPle ',un !luster 'e bases 'e 'onnes
1utils s/st0me : $reateuser / dropuser
2able 'e rPles : pg5roles
Un rPle est une entit /ui peut poss'er 'es ob*ets 'e la base 'e 'onnes et avoir 'es
'roits sur la base. %l peut Btre !onsi'r !omme un U utilisateur N- un U groupe N ou les
'eu+ suivant la fa8on 'ont il est utilis.
Con!eptuellement- les rPles 'e base 'e 'onnes sont totalement spars 'es
utilisateurs 'u s;st9me ',e+ploitation. "n prati/ue- il peut Btre !ommo'e 'e maintenir
une !orrespon'an!e mais !ela n,est pas re/uis. Les rPles sont globau+ 0 toute une
installation 'e groupe 'e bases 'e 'onnes <et non in'ivi'uelle pour !ha/ue base?.
Les rPles e+istants sont sto!Hs 'ans la table 'u !atalogue s;st9me pg5aut+!d 'ont les
'roits ',a!!9s sont restreints au+ seuls superutilisateurs. %l est !epen'ant possible
',affi!her la liste 'es rPles !rs en interrogeant la vue pg5roles :
SELECT rolname FROM pg_catalog.pg_roles;
5.7 &ptions 'e ,,C1"$2" 1&L",,
IN,2#I"- N*IN,2#I"
L*GIN- N*L*GIN
C*NN2C"I*N LI.I"
X 2NC#;P"2D Y 0N2NC#;P"2D ZPASS&*#D
Ces !lauses pr!isent si un rPle U hrite N 'es 'roits ',un rPle 'ont il est membre.
Un rPle /ui poss9'e l,attribut IN,2#I" peut automati/uement utiliser tout privil9ge
'tenu par un rPle 'ont il est membre. Sans IN,2#I"- l,appartenan!e 0 un autre rPle
&5& / 275 http://www.bull-formation.om

Administration PostgreSQL
lui !onf9re uni/uement la possibilit ',utiliser S2" #*L2 pour a!/urir les 'roits 'e
l,autre rPle. %ls ne sont 'isponibles /u,apr9s !ela. Si un rPle herite ',un autre rPle lui
aussi IN,2#I"- il hrite aussi 'es rPles 'ont !e 'ernier est membre.
IN,2#I" est la valeur par 'faut.
Les !lauses L*GIN et N*L*GIN pr!isent si un rPle est autoris 0 se !onne!ter- !,est0
'ire si le rPle peut Btre 'onn !omme nom pour l,autorisation initiale 'e session 0 la
!onne+ion 'u !lient.
Un rPle a;ant l,attribut L*GIN peut Btre vu !omme un utilisateur. Un rPle a;ant
l,attribut N*L*GIN peut Btre vu !omme un groupe.
N*L*GIN est la valeur par 'faut.
C*NN2C"I*N LI.I" permet 'e limiter le nombre 'e !onne+ions en parall9le ',un
utilisateur.
X 2NC#;P"2D Y 0N2NC#;P"2D ZPASS&*#D in'i/ue si le mot 'e passe 'oit Btre
!hiffr <2NC#;P"2D? ou non <0N2NC#;P"2D?. Sans !ette !lause- le !omportement par
'faut 'pen' 'u param9tre password5en$r%pt!on.
5.R S"2 1&L"
S;nta+e :
SET [ SESSION | LOCAL ] ROLE nom
Cette !omman'e permet 'e !hanger l,utilisateur !ourant 0 l,intrieur ',une session SQL
en !ours.
L*CAL limite la porte 'e !e !hangement 0 la transa!tion en !ours. S2SSI*N <valeur
par 'faut? permet 0 !e !hangement ',Btre tou*ours valable une fois /ue la transa!tion
est termine si !ette transa!tion est bien vali'e.
L,utilisateur 'e la session !ourante 'oit Btre membre 'u rPle nomm.
Si le rPle 'e l,utilisateur 'e la session !ompren' l,attribut IN,2#I"S- alors il a!/uiert
automati/uement les 'roits 'e !ha/ue rPle /u,il peut pren're par la !omman'e S2"
#*L2.
D l,oppos- si le rPle 'e l,utilisateur 'e la session 'ispose 'e l,attribut N*IN,2#I"S- S2"
#*L2 supprime les 'roits affe!ts 'ire!tement 0 l,utilisateur 'e la session et les
rempla!e par les 'roits 'u rPle nomm.
&52 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.O h1"$SS%.@ &X@"#h et h#1&P &X@"#h
S;nta+e :
REASSIGN OWNED B7 ancien_role [, ...] TO nouveau_role
DROP OWNED B7 role [, ...] [ CASCADE | RESTRICT ]
#2ASSIGN *&N2D permet 'e rempla!er le propritaire ',ob*ets par un autre
propritaire.
D#*P *&N2D permet 'e supprimer les ob*ets poss's par un rPle parti!ulier.
$vant l,apparition 'e !es instru!tions en version M.3- il tait n!essaire 'e supprimer
!ha/ue ob*et avant 'e pouvoir supprimer le rPle propritaire.
L,option CASCAD2 permet 'e supprimer automati/uement les ob*ets /ui 'pen'ent 'es
ob*ets supprims.
L,option #2S"#IC"- par 'faut- permet 'e stopper l,opration s,il e+iste 'es ob*ets non
supprims 'pen'ants 'es ob*ets supprims.
5.M $ttributs
Les attributs ',un rPle peuvent Btre mo'ifis apr9s sa !ration ave! la
!omman'e AL"2# #*L2.
"+emple :
ALTER ROLE john WITH PASSWORD 'eurtg83b';
&n peut aussi mo'ifier !ertains param9tres 'e !onfiguration pour les sessions 'es
utilisateurs.
S;nta+e :
ALTER ROLE utilisateur SET attribut TO valeur;
"+emple 'e 'sa!tivation 'es par!ours ',in'e+ :
ALTER ROLE john SET enable_indexscan TO off;
&5! / 275 http://www.bull-formation.om

Administration PostgreSQL
5.L #roits
$!!or'er 'es 'roits 0 un utilisateur ou rPle :
GRANT privilges ON base TO utilisateur;
1etirer 'es 'roits 0 un utilisateur ou rPle :
REVOKE privileges ON base FROM utilisateur;
G#AN" sur les ob*ets 'e la base 'e 'onnes
G#AN" sur les rPles
G#AN" appli/u 0 un ob*et 'e la base 'e 'onnes 'onne 'es 'roits ',a!!9s sp!ifi/ues 0
!et ob*et 0 un ou plusieurs rPles. Ces 'roits sont a*outs 0 !eu+ '*0 poss's.
La liste 'es 'roits possibles est :
S"L"C2- %@S"12- UP#$2"- #"L"2"
1UL"- 1"F"1"@C"S- 21%.."1- C1"$2"
2"=P&1$1A- "Y"CU2"- US$."
$LL
%l est possible 'e 'onner 'es 'roits sur les !olonnes 0 partir 'e la version M.6.
G#AN" appli/u 0 un <ou plusieurs? rPle 'finit l,appartenan!e 'e !e 'ernier 0 un autre
rPle. L,appartenan!e 0 un rPle est importante !ar elle offre tous les 'roits a!!or's 0 un
rPle 0 l,ensemble 'e ses membres.
Si &I", AD.IN *P"I*N est sp!ifi- le membre peut 0 la fois o!tro;er l,appartenan!e
0 ',autres rPles- et la rvo/uer. Sans !ette option- les utilisateurs or'inaires ne peuvent
pas le faire. 2outefois- les superutilisateurs peuvent 'onner ou enlever 0 tout rPle
l,appartenan!e 0 un rPle. Les rPles /ui poss9'ent le 'roit C#2A"2#*L2 peuvent agir
ainsi sur tout rPle /ui n,est pas superutilisateur.
Par e+emple- ren're l,utilisateur I*eanJ membre 'e Ia'minsJ :
GRANT admins TO jean;
&5" / 275 http://www.bull-formation.om

Administration PostgreSQL
6 $uthentifi!ation 'u !lient
Lors/u,un !lient se !onne!te au serveur- il utilise :
un mo;en 'e !onne+ion <a'resse %P ou so!Het Uni+?
un nom 'e base 'e 'onnes
un nom ',utilisateur
un mot 'e passe <optionnel?
PostgreSQL propose 'es mtho'es ',authentifi!ations sp!ifi/ues pour
!ha!un 'es !lients. La politi/ue ',authentifi!ation est !onsigne 'ans le
fi!hier pg5+ba6$on7.
6.( Configuration 'u fi!hier pg[hba.!onf <(/6?
Cha/ue enregistrement 'termine :
un t;pe 'e !onne+ion
une plage ',a'resses %P <si appropri au t;pe 'e !onne+ion?
un ou plusieurs noms 'e base 'e 'onnes
un ou plusieurs noms ',utilisateurs- 'e groupe
une mtho'e ',authentifi!ation 0 utiliser
Le premier enregistrement /ui !orrespon' au+ !rit9res est utilis pour effe!tuer
l,authentifi!ation.
#,autre part- il est possible ',utiliser le !ara!t9re i pour in!lure un fi!hier !ontenant
une liste 'e noms.
&55 / 275 http://www.bull-formation.om

Administration PostgreSQL
6.3 Configuration 'u fi!hier pg[hba.!onf <3/6?
Un enregistrement peut avoir l,un 'es formats suivants :
local database user auth-method [auth-option]
host database user CIDR-address auth-method [auth-option]
hostssl database user CIDR-address auth-method [auth-option]
hostnossl database user CIDR-address auth-method [auth-option]
host database user IP-address IP-mask auth-method [auth-option]
hostssl database user IP-address IP-mask auth-method [auth-option]
hostnossl database user IP-address IP-mask auth-method [auth-option]
Pour utiliser SSL- vous 'eve: avoir !onfigur ssl 0 on.
6.5 Configuration 'u fi!hier pg[hba.!onf <5/6?
lo$al
+ost
+ostssl
+ostnossl
Un enregistrement lo!al inter!epte les tentatives 'e !onne+ion utilisant les so!Hets 'u
'omaine Uni+.
Un enregistrement host inter!epte les tentatives 'e !onne+ion utilisant les rseau+
2CP/%P <SSL et non SSL?.
Un enregistrement hostssl inter!epte les tentatives 'e !onne+ion utilisant 2CP/%P ave!
le !hiffrement SSL seulement.
Un enregistrement hostnossl inter!epte les tentatives 'e !onne+ion utilisant 2CP/%P sans
le !hiffrement SSL seulement.
&5# / 275 http://www.bull-formation.om

Administration PostgreSQL
6.6 Configuration 'u fi!hier pg[hba.!onf <6/6?
database: noms 'e bases 'e 'onnes <all pour toutes les bases?
user : utilisateurs ou groupes 'e la base 'e 'onnes
CID#Daddress : !helle ',a'resses %P 'u !lient
aut+Dmet+od : mtho'e ',authentifi!ation 0 utiliser lors 'e la
!onne+ion
aut+Dopt!on : !hamp optionnel 'pen'ant 'e la mtho'e
',authentifi!ation !hoisie
Pour la !olonne database :
La valeur sameuser sp!ifie /ue l,enregistrement n,inter!epte /ue si la base 'e
'onnes 'eman'e a le mBme nom /ue l,utilisateur 'eman'.
La valeur samerole sp!ifie /ue l,utilisateur 'eman' 'oit Btre membre 'u rPle
portant le mBme nom /ue la base 'e 'onnes 'eman'e
La valeur repl!$at!on sp!ifie /u,il 'oit s,agir ',une !onne+ion provenant 'u
walre!eiver. La !onne+ion servira 0 envo;er les bouts 'e *ournau+ 'e transa!tions
'ans le !a're 'e la rpli!ation en flu+.
#es noms 'e bases 'e 'onnes multiples peuvent Btre fournis en les sparant par 'es
virgules.
Un fi!hier spar !ontenant 'es noms 'e bases 'e 'onnes peut Btre in'i/u en
faisant pr!'er le nom 'e fi!hier 'e i.
Pour la !olonne user :
Pr!'er le nom 'es groupes par un ,^,. Plusieurs noms peuvent Btre fournis en les
sparant ave! 'es virgules.
Une a'resse C%#1 ressemble 0 !e!i :
pour une ma!hine: (L3.(RM.(65.5O/53
pour un rseau: (L3.RM.(65.F/36
L,an!ienne notation 0 base ',une a'resse %P et ',un mas/ue est tou*ours 'isponible. Par
e+emple: (L3.(RM.(65.5O-377.377.377.377
&57 / 275 http://www.bull-formation.om

Administration PostgreSQL
6.7 =tho'es ',authentifi!ation <(/5?
trust
reBe$t
md5
$r%pt
Ce sont toutes 'es mtho'es internes.
trust autorise la !onne+ion sans !on'itions. reBe$t re*ette la !onne+ion sans
!on'itions. md5 'eman'e au !lient 'e fournir un mot 'e passe !hiffr =#7.
$r%pt 'eman'e au !lient 'e fournir un mot 'e passe !hiffr ave! $r%pt<=. Cette
option est seulement re!omman'e pour pouvoir !ommuni/uer ave! les !lients 'e
version antrieure 0 la O.3. #e plus- elle 'isparaEt en M.6.
6.R =tho'es ',authentifi!ation <3/5?
password
Erb5
GSSAPI
LDAP
#ad!us
La mtho'e password 'eman'e au !lient 'e fournir un mot 'e passe non !hiffr.
$utrement 'it- il passe en !lair sur le rseau.
La mtho'e Erb5 permet ',utiliser Verberos 47 pour authentifier l,utilisateur. Ce!i n,est
'isponible /ue pour les !onne+ions 2CP/%P.
La mtho'e GSSAPI !orrespon' au proto!ole 'u stan'ar' 'e l,in'ustrie pour
l,authentifi!ation s!urise 'finie 'ans 1FC 3O65. PostgreSQL supporte .SS$P% ave!
l,authentifi!ation Verberos suivant la 1FC (LR6 !e /ui permet 'e faire 'u U Single Sign
&n N. $ttention- !e n,est 'isponible /u,0 partir 'e la version M.5.
La mtho'e LDAP utilise un serveur L#$P pour authentifier l,utilisateur. Ce!i n,est
'isponible /u,0 partir 'e la version M.3. "lle se !onfigure !omme suit 'ans le fi!hier
pg5+ba6$on7 :
ldap[s]://nomduserveur[:port]/base dn[;prefix[;suffix]]
ldap://ldap.exemple.net/dc=exemple,dc=net;EXEMPLE\
&5$ / 275 http://www.bull-formation.om

Administration PostgreSQL
La mtho'e #ad!us utiliser un serveur 1$#%US pour authentifier l,utilisateur '9s la
version L.F.
6.O =tho'es ',authentifi!ation <5/5?
!dent
pam
La mtho'e i'ent Permet ',asso!ier les noms 'es utilisateurs 'u s;st9me ',e+ploitation
au+ noms 'es utilisateurs 'u s;st9me 'e gestion 'e bases 'e 'onnes. "lle r!up9re le
nom 'e l,utilisateur 'u s;st9me ',e+ploitation 'u !lient et vrifie si l,utilisateur est
autoris 0 se !onne!ter en tant /u,utilisateur 'e la base 'e 'onnes. Cette mtho'e
n!essite un param9tre supplmentaire /ui est la !orrespon'an!e in'i/ue apr9s le mot
!l i'ent.
Le mot !l sameuser permet 0 n,importe /uel utilisateur 'u s;st9me ',e+ploitation 'e
se !onne!ter en tant /u,utilisateur 'e base 'e 'onnes 'u mBme nom. Ce mot !l
'isparaEt en M.6 ob !ette option est la valeur par 'faut si au!un usermap n,est 'fini.
Les !orrespon'an!es ',i'entit autres /ue sameuser sont 'finies 'ans le fi!hier 'e
!orrespon'an!e ',i'entit- pg5!dent6$on7. Ce fi!hier !ontient 'es lignes 'e la forme
suivante :
nom-correspondance nomutilisateur-ident base-donnee-utilisateur
Un 'mon fournissant le servi!e !dent est n!essaire.
Quant 0 pam- il authentifie en utilisant les Pluggable $uthenti!ation =o'ules <P$=?
fournis par le s;st9me ',e+ploitation.
&5% / 275 http://www.bull-formation.om

Administration PostgreSQL
7 =aintenan!e
Prin!ipes et intrBts 'es oprations 'e maintenan!e
Sauvegar'e 'e l,instan!e- sauvegar'e 'es bases 'e 'onnes
.estion 'e l,espa!e 'is/ue utilise par les tables et in'e+
=ise 0 *our 'es statisti/ues 'u planifi!ateur
%ntgration 'e l,autova!uum 'ans les oprations 'e maintenan!e
%n'e+ation et rin'e+ation pour !onserver 'es in'e+ propres
.estion 'es *ournau+ appli!atifs
7.( Prin!ipes
&prations rguli9res et n!essaires
=aintenan!e plus simple /u,ave! ',autres S.B#
2Q!hes automatisables
Pour fon!tionner 'e fa8on optimale- un serveur PostgreSQL n!essite /uel/ues
oprations 'e maintenan!e rguli9res. Les tQ!hes 'e maintenan!e r!urrentes ont
plusieurs ob*e!tifs 'e :
U netto;er N les 'onnes
re!onstruire les in'e+
gar'er 'es *ournau+ appli!atifs !ompa!ts et pertinents
PostgreSQL 'eman'e peu 'e maintenan!e par rapport 0 ',autres S.B#. @anmoins- un
suivi vigilant 'e !es tQ!hes parti!ipera beau!oup 0 !onserver un s;st9me performant et
agrable 0 utiliser.
Par 'finition- les tQ!hes r!urrentes peuvent fa!ilement Btre automatises grQ!e au+
outils stan'ar's '10NI-- et notamment les s!ripts $ron. La responsabilit 'e la mise
en pla!e 'e !es s!ripts et 'u !ontrPle 'e leur bon fon!tionnement rel9ve 'e
l,a'ministrateur 'e la base.
&#' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.3 Sauvegar'e
pg5dump d pg5dumpall
Sauvegar'e 'is/ue en ligne
#finir une politi/ue 'e sauvegar'e
4rifier la restauration 'es sauvegar'es
Le prin!ipe 'e pg5dump est 'e gnrer un fi!hier te+te <ou binaire en mo'e D> $? 'e
!omman'es SQL <appel U fi!hier 'ump N?- /ui- s,il est renvo; au serveur- re!re une
base 'e 'onnes i'enti/ue 0 !elle sauvegar'e. L,usage basi/ue est :
pg_dump base_de_donnees > fichier_de_sortie
Le fi!hier 'ump peut Btre restaur ave! la !omman'e :
psql base_de_donnees < fichier_d_entree
pg5dumpall simplifie la tQ!he 'e l,a'ministrateur en sauvegar'ant toutes les bases 'e
'onnes ',un groupe 'e bases 'e 'onnes <$luster? et prserve les 'onnes !ommunes
au groupe 'e bases <les rPles par e+emple? :
pg_dumpall > fichier_de_sortie
Le fi!hier 'e sauvegar'e rsultant peut Btre restaur ave! ps4l :
psql -f fichier_d_entree postgres
Le prin!ipe 'e la sauvegar'e 'is/ue U en ligne N est 'e sauvegar'er les fi!hiers 'e la
base 'e 'onnes alors /ue !elle!i est en!ore en a!tivit- en ignorant les erreurs 'e
mo'ifi!ation 'e fi!hiers 'te!tes par l,outil 'e sauvegar'e <erreurs normales- puis/ue
la base !ontinue 'e fon!tionner?. D la restauration- la base 'e 'onnes 'oit Btre
!apable 'e re*ouer l,ensemble 'es *ournau+ 'e transa!tion a;ant t gnrs pen'ant la
prio'e 'e sauvegar'e- afin 'e restaurer l,intgrit 'es fi!hiers 'e la base.
Cette mtho'e impose 'on! avant tout /ue le !luster ar!hive ses *ournau+ 'e
transa!tion- mais aussi /u,on notifie au !luster /u,il est en !ours 'e sauvegar'e- afin
/u,il tra!e la liste 'es fi!hiers 'ont il aura besoin pour retrouver son intgrit en !as 'e
restauration.
Cette pro!'ure est plus !ompli/ue /ue pg5dump- !ar la pro!'ure 'e restauration
&#& / 275 http://www.bull-formation.om

Administration PostgreSQL
!ontient 'avantage ',tapes et impose 'es manipulations 'e fi!hiers. Son autre
limitation est /ue la restauration se fait pour l,ensemble 'u !luster <plusieurs bases
potentiellement- puis/u,on ne peut pas restaurer les fi!hiers 'e !ha/ue base 'e fa8on
in'ivi'uelle?.
"lle prsente par !ontre 'e nombreu+ avantages : elle est beau!oup plus performante-
parti!uli9rement 'ans le !as 'e grosse volumtrie <0 partir 'e /uel/ues 'i:aines 'e
gigao!tets?- et permet une sauvegar'e 'ite ,en !ontinu, : on peut restaurer la base 0
n,importe /uel point 'ans le temps- pourvu /u,on 'ispose ',une sauvegar'e antrieure 0
!e point- et 'es *ournau+ 'e transa!tion ar!hivs *us/u,0 !e point.
Pour bien 'finir et automatiser les pro!'ures 'e sauvegar'es- on peut utiliser les 7
a+es suivants :
Pour/uoi sauvegar'er G #ans un but ',ar!hivage G Pour assurer la haute 'isponibilit
'es 'onnes G
Quels sont les ensembles 'e 'onnes essentiels et !eu+ /ui ne le sont pas G
Quelle fr/uen!e 'e sauvegar'e est la plus a'apte 0 vos besoins G
Quels supports G #4# G "nregistrements sur ban'e G 1pli!ation sur une ma!hine
'istante G
Quels outils G Comman'es internes 'e PostgreSQL ou appli!ations e+ternes G
"nfin- il est important 'e tester ses sauvegar'es- ses mtho'es 'e restauration et 'e
leur bon fon!tionnement rguli9rement.
7.5 "spa!e 'is/ue 4$CUU=
La !omman'e /AC00. permet 0 PostgreSQL 'e !artographier les espa!es
libres 'isponibles 'ans les tables et in'e+.
"lle peut Btre lan!e en !on!urren!e ave! les autres oprations.
PostgreSQL ne supprime pas les versions primes 'es lignes apr9s un 0PDA"2 ou un
D2L2"2. La !omman'e /AC00. permet 'e U librer N l,espa!e utilis par !es lignes afin
',viter un a!!roissement !ontinuel 'u volume o!!up sur le 'is/ue.
Une table /ui subit beau!oup 'e mises 0 *our et suppressions n!essitera 'es netto;ages
plus fr/uents /ue les tables rarement mo'ifies. Le /AC00. U simple N mar/ue les
'onnes e+pires 'ans les tables et les in'e+ pour une utilisation future. %l ne tente pas
'e r!uprer l,espa!e utilis par les 'onnes obsol9tes- sauf si l,espa!e est 0 la fin 'e la
table et /u,un verrou e+!lusif 'e table puisse Btre fa!ilement obtenu. L,espa!e inutilis
au 'but ou au milieu 'u fi!hier ne provo/ue pas un ra!!our!issement 'u fi!hier et ne
re'onne pas ',espa!e mmoire au s;st9me ',e+ploitation.
La version M.6 amliore les performan!es 'u /AC00. en lui permettant 'e ne par!ourir
/ue la partie 'e la table /ui a t mo'ifie. Cela a un gros impa!t pour les tables les
&#2 / 275 http://www.bull-formation.om

Administration PostgreSQL
moins mo'ifies.
7.6 "spa!e 'is/ue 4$CUU= FULL
netto;age plus effi!a!e mais plus lent
mtho'e U agressive N
impa!t non ngligeable sur les performan!es
La !omman'e /AC00. >0LL lib9re l,espa!e !onsomm par les lignes primes et le
ren' au s;st9me ',e+ploitation.
Cette variante 'e la !omman'e /AC00. a!/uiert un verrou e+!lusif sur !ha/ue table.
"lle peut 'on! avoir un effet e+trBmement ngatif sur les performan!es 'e la base 'e
'onnes.
7.7 "spa!e 'is/ue stratgie
Quand "aut-il utiliser % 3AC::; ' <
@etto;ages rguliers <( fois/*our?
=aintenan!e 'e base
Quand "aut-il utiliser % 3AC::; =:LL ' <
$pr9s 'es suppressions massives 'e 'onnes
Lors/ue la base n,est pas en pro'u!tion
#es /AC00. stan'ar's et une fr/uen!e mo're sont une meilleure appro!he /ue 'es
/AC00. >0LL- mBme non fr/uents- pour maintenir 'es tables mises 0 *our
fr/uemment.
/AC00. >0LL est re!omman' 'ans les !as ob vous save: /ue vous ave: supprim ou
mo'ifi une gran'e partie 'es lignes ',une table- 'e fa8on 0 !e /ue la taille 'e la table
soit r'uite 'e fa8on !ons/uente.
&#! / 275 http://www.bull-formation.om

Administration PostgreSQL
7.R Statisti/ues <(/3?
ANAL;O2
=et 0 *our les statisti/ues 'e la base
Utile pour l,optimiseur 'e re/uBtes
Conseil : ( fois/*our- en mBme temps /ue /AC00.
L,optimiseur 'e re/uBtes 'e PostgreSQL s,appuie sur 'es informations statisti/ues 'u
!ontenu 'es tables. Ces statisti/ues sont !olle!tes par la !omman'e ANAL;O2- /ui
peut Btre invo/ue seule ou !omme une option 'e /AC00.. %l est important ',avoir 'es
statisti/ues relativement 0 *our sans /uoi 'es mauvais !hoi+ 'ans les plans ',e+!ution
pourraient pnaliser la performan!e 'e la base.
"n gnral- une bonne stratgie est 'e programmer ANAL;O2 une fois par *our. Ce!i
peut Btre !oupl 0 un /AC00. <la nuit par e+emple? pour gagner en performan!es.
7.O Statisti/ues <3/3?
c!hantillonnage pas 'faut: de7ault5stat!st!$s5target
=o'ifier les statisti/ues par !olonne:
ALTER TABLE ma_table ALTER ma_colonne SET STATISTICS 200;
Le param9tre de7ault5stat!st!$s5target initialise l,!hantillonnage par 'faut
'es statisti/ues pour les !olonnes 'e !ha!une 'es tables. #es valeurs plus importantes
a!!roissent le temps n!essaire 0 e+!uter ANAL;O2 mais pourraient amliorer les
estimations 'u planifi!ateur. La valeur par 'faut est 'e (F- *us/u,en version M.5 et (FF
0 partir 'e la version M.6.
$insi- pour !ha/ue !olonne avant la version M.6- les (F valeurs les plus fr/uentes et (F
histogrammes sont sto!Hs 'ans pg5stats en guise ',!hantillon reprsentatif 'es
'onnes. (F fournissant 'es statisti/ues plutPt pauvres et parfois loignes 'e la
ralit- ave! l,optimisation 'u pro!essus ANAL;O2- la valeur par 'faut a 'on! t
releve 0 (FF en M.6.
Si vous voule: 'es statisti/ues plus fines- vous pouve: passer !e param9tre 0 5FF. #es
valeurs suprieures sont possibles- sans 'passer la limite 'e (FFF- mais provo/uent un
ralentissement '1ANAL;O2- un a!!roissement 'e la table pg5stats- et un temps 'e
!al!ul 'es plans ',e+!ution plus long <non mesurable *us/u,0 (FF?.
4oi!i la !omman'e 0 utiliser si l,on veut mo'ifier !ette valeur !olonne par !olonne- la
&#" / 275 http://www.bull-formation.om

Administration PostgreSQL
valeur ainsi sp!ifie prvaut sur la valeur 'e de7ault5stat!st!$s5target:
ALTER TABLE ma_table ALTER ma_colonne SET STATISTICS 200;
7.M .el 'es Y%#
l,i'entifiant 'e transa!tion est un nombre !roissant et limit
si le -ID revient 0 :ro 1is/ue 'e perte 'es 'onnes )
3 solutions : !n!tdb ou /AC00.
$utova!uum 0 partir 'e la version M.(
Le m!anisme 'e !ontrPle 'e !on!urren!e multiversion <./CC? 'e PostgreSQL s,appuie
sur la possibilit 'e !omparer 'es i'entifiants 'e transa!tions <-ID?. La version ',une
ligne 'ont le -ID ',insertion est suprieur au -ID 'e la transa!tion en !ours est U 'ans
le futur N et ne 'oit pas Btre visible 'e la transa!tion !ourante.
Comme les i'entifiants ont une taille limite <53 bits 0 !e *our?- une base en a!tivit
'epuis longtemps <plus 'e 6 milliar's 'e transa!tions? pourrait !onnaEtre un !;!le 'es
i'entifiants 'e transa!tion : le -ID revien'ra 0 F et sou'ainement les transa!tions 'u
pass sembleront appartenir au futur !e /ui signifie /u,elles 'eviennent invisibles. Ce!i
peut !on'uire 0 une perte 'e 'onnes totale.
$vant PostgreSQL O.3- la seule para'e !ontre !es !;!les 'e -ID tait 'e re+!uter
init'b au ma+imum tous les 6 milliar's 'e transa!tion.
/AC00. a une appro!he plus fine : toute table 'ans la base 'oit Btre netto;e au moins
une fois tous les milliar's 'e transa!tions. Lors/u,il reste moins 'e (F millions 'e
transa!tions avant le renouveau 'u !;!le- PostgreSQL met 'es messages ',alertes <voir
!i'essous? pour !ha/ue transa!tion e+!ute.
WARNING: database "z" must be vacuumed within 177006525 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "z".
D partir 'e la version M.(- et mBme s,il est 'sa!tiv- l,autova!uum va se lan!er
automati/uement pour !ha/ue table a;ant besoin ',un rafraE!hissement 'u -ID.
&#5 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.L Le 'mon $utova!uum
4ersions Ka M.(.+
$utomatiser /AC00. et ANAL;O2
Le 'mon 'termine si le va$uum et/ou l1anal%Ne sont n!essaires
D partir 'e PostgreSQL M.(- il e+iste un pro!essus serveur optionnel et spar appel le
'mon autova$uum- 'ont le but est ',automatiser l,e+!ution 'es !omman'es /AC00.
et ANAL;O2. Une fois a!tiv- le 'mon autova$uum s,e+!ute prio'i/uement et
vrifie les tables a;ant un gran' nombre 'e lignes insres- mises 0 *our ou supprimes.
#eu+ !on'itions sont utilises pour 'terminer /uelle opration appli/uer :
limite du vacuum = autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * N
limite du analyze = autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * N
ob N est le nombre 'e lignes 'ans la table.
Le 'mon autova$uum peut Btre paramtr 0 partir 'u fi!hier Ipostgres/l.!onfJ 'e
fa8on globale. %l est possible ',avoir une !onfiguration plus fine en mo'ifiant le !ontenu
'e la table s;st9me pg>autovacuum pour les versions antrieures 0 la M.6- et en
mo'ifiant les informations 'e sto!Hage 'es tables pour les versions ultrieures.
7.(F $utova!uum : param9tres <(/3?
autova$uum
log5autova$uum5m!n5durat!on
autova$uum5napt!me
autova$uum5ma95worEers
autova$uum57reeNe5ma95age
Le param9tre autova$uum !ontrPle si le serveur 'oit lan!er le souspro!essus
autova$uum. #sa!tiv par 'faut pour M.( et M.3- a!tiv pour M.5 et suprieures.
stats5start5$olle$tor et stats5row5level <respe!tivement
tra$E5a$t!v!t!es et tra$E5$ounts en M.5? 'oivent aussi Btre a!tifs pour /ue !e
'mon soit e+!ut.
log5autova$uum5m!n5durat!on permet 'e tra!er l,a!tivit 'u souspro!essus
autova$uum si !e 'ernier 'ure plus /ue !e nombre 'e se!on'es. ( 'sa!tive les
&## / 275 http://www.bull-formation.om

Administration PostgreSQL
tra!es- F a!tive la tra!e 'e toute e+!ution '1autova$uum. Param9tre 'isponible 0
partir 'e la version M.5.
"n M.3- autova$uum5napt!me sp!ifie le 'lai entre les tours ',a!tivit pour le sous
pro!essus autova$uum. D !ha/ue tour- le souspro!essus e+amine une base 'e 'onnes
et lan!e autant 'e !omman'es /AC00. et ANAL;O2 /ue n!essaire pour les tables 'e la
base 'e 'onnes. Le 'lai est mesur en se!on'es et vaut par 'faut RF se!on'es.
"n M.5- !e nombre 'ivis par le nombre 'e bases 'e 'onnes sp!ifie le 'lai pour
l,e+!ution ',un nouveau pro!essus autova$uum worEer.
Le nombre ma+imum 'e souspro!essus peutBtre sp!ifi par le param9tre
autova$uum5ma95worEers- 'isponible 0 partir 'e la version M.5.
"nfin- autova$uum57reeNe5ma95age sp!ifie l,Qge ma+imum <en transa!tions? /ue le
!hamp pg5$lass6rel7roNen9!d puisse attein're avant 'e for!er l,e+!ution ',un
/AC00.. Param9tre 'isponible 0 partir 'e la version M.3.
7.(( $utova!uum : param9tres <3/3?
autova$uum5va$uum5t+res+old
autova$uum5anal%Ne5t+res+old
autova$uum5va$uum5s$ale57a$tor
autova$uum5anal%Ne5s$ale57a$tor
autova$uum5va$uum5$ost5dela%
autova$uum5va$uum5$ost5l!m!t
Le param9tre autova$uum5va$uum5t+res+old sp!ifie le nombre minimum 'e lignes
mises 0 *our ou supprimes n!essaires pour '!len!her un /AC00. sur une table.
autova$uum5anal%Ne5t+res+old a la mBme vo!ation pour l,or're ANAL;O2- mais
a*oute 0 !e nombre minimum 'e ligne !elui 'es lignes insres.
autova$uum5va$uum5s$ale57a$tor et autova$uum5anal%Ne5s$ale57a$tor
sp!ifient une fra!tion 'e la taille 'e la table 0 a*outer au+ param9tres 'e t+res+old
asso!is 0 !ha/ue opration pour '!i'er 'u moment ob '!len!her respe!tivement un
/AC00. ou un ANAL;O2.
autova$uum5va$uum5$ost5dela% sp!ifie la valeur 'u !oet 'u 'lai utilise 'ans les
oprations 'e /AC00.. Si ( est sp!ifi <la valeur par 'faut?- la valeur habituelle 'e
va$uum5$ost5dela% sera utilise. "n M.5- !e 'lai est rparti entre tous les pro!essus
U autova!uum worHers N.
"nfin- autova$uum5va$uum5$ost5l!m!t sp!ifie la valeur limite 'u !oet utilise
'ans les oprations 'e /AC00. automati/ues. Si ( est sp!ifi <la valeur par 'faut?- la
valeur !ourante 'e va!uum[!ost[limit sera utilise.
&#7 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(3 %n'e+ation
Lan!er ?@(ND@A rguli9rement permet :
'e gagner 'e l,espa!e 'is/ue
',amliorer les performan!es <pour les in'e+ B2ree?
'e rparer un in'e+ !orrompu
/AC00. en >0LL ou pas ne provo/ue pas 'e rin'e+ation]
#2IND2- re!onstruit un in'e+ en utilisant les 'onnes sto!Hes 'ans la table-
rempla8ant l,an!ienne !opie 'e l,in'e+.
#ans les versions 'e PostgreSQL antrieures 0 la O.6- la rin'e+ation prio'i/ue tait
fr/uemment n!essaire pour viter l,U inflation 'es in'e+ N.
#ans les versions O.6 et ultrieures- les pages ',in'e+ /ui sont 'evenues !ompl9tement
vi'es sont r!upres pour Btre rutilises. %l e+iste tou*ours la possibilit ',une
utilisation ineffi!a!e 'e l,espa!e : si prati/uement toutes les !ls ',in'e+ ',une page ont
t supprimes- la page reste alloue. La possibilit ',inflation n,est pas in'finie mais il
serait tou*ours utile 'e planifier une rin'e+ation prio'i/ue pour les in'e+ a;ant un tel
usage.
#e plus- pour les in'e+ Btree- un in'e+ tout *uste !onstruit est /uel/ue peu plus rapi'e
/u,un in'e+ /ui a t mis 0 *our plusieurs fois par!e /ue les pages a'*a!entes
logi/uement sont habituellement aussi ph;si/uement a'*a!entes 'ans un in'e+
nouvellement !r <!ette !onsi'ration ne s,appli/ue pas au+ in'e+ non Btree?. %l
pourrait Btre intressant 'e rin'e+er prio'i/uement- simplement pour amliorer la
vitesse ',a!!9s.
La rin'e+ation est aussi utile 'ans le !as ',un in'e+ !orrompu ne !ontenant plus 'e
'onnes vali'es. Bien /u,en thorie- !e!i ne 'evrait *amais arriver- en prati/ue- les
in'e+ peuvent se !orrompre 0 !ause 'e bogues 'ans le logi!iel ou ',!he!s matriels.
L,in'e+ 0 rparer peut Btre utilisateur ou syst)me <utiliser #2IND2- S;S"2. pour
!ela?.
"nfin- l,opration /AC00.- >0LL ou pas- ne provo/ue pas 'e rin'e+ation. "lle a mBme
ten'an!e 0 fragmenter les in'e+.
La !omman'e s;st9me re!nde9db peut Btre utilise pour rin'e+er une table- une
base ou un !luster 'e bases 'e 'onnes.
&#$ / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(5 CLUS2"1 ou 4$CUU= G
CL0S"2# est une alternative 0 /AC00. >0LL
Plus rapi'e /ue /AC00. >0LL suivi 'e #2IND2-
$ttention- CL0S"2# n!essite pr9s 'u 'ouble 'e l,espa!e 'is/ue utilis
pour sto!Her la table et ses in'e+
4ariation 'e la table et 'es in'e+ asso!is:
volution de la volumtrie d'une base suite au& diverses commandes de
maintenances
Par!e /ue la !omman'e CL0S"2# provo/ue une rorganisation 'es 'onnes 'e la table-
le rsultat obtenu est /uivalent 0 un /AC00. >0LL: les 'onnes sont organises
!omme l,in'e+ et les pages 'e 'onnes sont a'*a!entes 'ans les fi!hiers.
Comme CL0S"2# 'pla!e les blo!s 'e 'onnes- il provo/ue une rin'e+ation 'e tous les
in'e+ lis 0 la table.
$u final- CL0S"2# est /uivalent 0 un /AC00. >0LL suivi ',un #2IND2-- 0
l,organisation ph;si/ue 'es blo!s 'e 'onnes pr9s.
7.(6 >ournau+ appli!atifs
utiles en !as 'e probl9mes
volumineu+
utiliser un s;st9me 'e gestion 'es *ournau+ appli!atifs tels /ue
logrotate ou s%sElog ou rs%slog
Les *ournau+ appli!atifs *ouent un rPle essentiel lors/ue 'es probl9mes surviennent ou
pen'ant 'es phases 'e tests.
&#% / 275 http://www.bull-formation.om

Administration PostgreSQL
Cepen'ant- !es fi!hiers ont ten'an!e 0 Btre volumineu+- en parti!ulier si le niveau 'e
'bogage est important. %l est 'on! !onseill 'e bien anal;ser !e 'ont on a besoin ',;
tra!er sur un serveur 'e pro'u!tion.
$ttention pour !eu+ /ui veulent utiliser s%sElog:
sur beau!oup 'e s;st9mes- s%sElog n,est pas tr9s fiable- parti!uli9rement ave! les
messages tr9s gros \ il pourrait tron/uer ou supprimer 'es messages au moment ob
vous en aure: le plus besoin.
s%sElog for!e la s;n!hronisation 'e tous les messages sur le 'is/ue- !e /ui n,est pas
tr9s bon sur le plan 'es performan!es.
0 partir 'e Lenn;- rs%slog 'evient le gestionnaire 'e s;slog par 'faut sur les
serveurs 'ebian. %l est intressant 'e !onstater /ue rs%slog propose un plugin pour
PostgreSQL- !,est0'ire /ue rs%slog est !apable 'e sto!Her les messages s;slog 'ans
une base PostgreSQL.
http://www.rs;slog.!om/
&7' / 275 http://www.bull-formation.om

Administration PostgreSQL
R Con!lusion
PostgreSQL 'eman'e peu 'e travail au /uoti'ien.
D l,installation- !ertaines tQ!hes 'oivent Btre automatises- par e+emple la
sauvegar'e- les /AC00..
Pour le reste- il s,agit surtout 'e surveiller la bonne e+!ution 'es s!ripts
automatiss et le !ontenu 'es *ournau+ appli!atifs.
R.( Pour aller plus loin
#o!umentation offi!ielle :
Chapitre 33. Planifier les tQ!hes 'e maintenan!e
U &prations 'e maintenan!e sous PostgreSQL N
http://'alibo.org/glmf(FL[operations['e[maintenan!e[sous[postgres/l
R.3 Questions
@,hsite: pas- !,est le moment )
&7& / 275 http://www.bull-formation.om

Administration PostgreSQL
ravau# Prati+ues
&72 / 275 http://www.bull-formation.om

Administration PostgreSQL
( cnon!s
(.( Prre/uis
#ans le fi!hier postgres+l6con"- 'sa!tiver le 'mon autova!uum.
Puis- relan!er PostgreSQL.
(.3 .estion 'es rPles
$*outer la table fa!ture <f[i' int6- f[ob*et var!har<3FF?- f['ate timestamp? 0 la base 'e
'onnes !ave.
(.3.( Cration ',un utilisateur et ',un groupe
$ l,ai'e 'u superutilisateur postgres:
!rer un rPle se$retar!at /ui a le 'roit 'e visualiser- ',a*outer- 'e mettre 0 *our et
'e supprimer 'es items 'e la table 7a$ture
!rer un utilisateur bob appartenant au groupe se$retar!at
vrifier la !ration 'es 'eu+ rPles
$ l,ai'e 'e l,utilisateur bob:
insrer les fa!tures a;ant pour ob*et I4in 'e Bor'eau+J et I4in 'e BourgogneJ ave! la
'ate et l,heure !ourante
sle!tionner les fa!tures 'e la table fa!tures
mettre 0 *our la 'eu+i9me fa!ture ave! la 'ate et l,heure !ourante
supprimer la premi9re fa!ture
(.3.3 =o'ifi!ation 'es permissions
1etirer les 'roits D2L2"2 sur la table 7a$ture pour le rPle se$retar!at. 4rifier /u,il
n,est pas possible 'e supprimer la 'eu+i9me fa!ture ave! l,utilisateur bob.
1etirer tous les 'roits pour le groupe se$retar!at sur la table appellat!on et
vrifier /ue l,utilisateur bob appartenant au groupe se$rQtar!at ne peut pas
sle!tionner les appellations !ontenues 'ans la table appellat!on.
$utoriser l,utilisateur bob 0 a!!'er 0 la table appellat!on en le!ture.
4rifier /ue l,utilisateur bob peut 'sormais a!!'er 0 la table appellat!on.
&7! / 275 http://www.bull-formation.om

Administration PostgreSQL
(.3.5 Writage 'es 'roits au login
Crer un utilisateur t!na appartenant au rPle se$rQtar!at- mais n,hritant pas 'es
'roits au login.
4rifier /ue l,utilisateur t!na ne peut pas a!!'er 0 la table 7a$ture.
Positionner le rPle se$retar!at et sle!tionner les 'onnes 'e la table 7a$ture.
4rifier /ue l,utilisateur t!na poss9'e maintenant les 'roits 'u rPle se$retar!at.
(.5 pg[hba.!onf
ctablisse: la !onfiguration suivante pour a!!'er 0 la base 'e 'onnes:
autorise: votre voisin 'e gau!he 0 se !onne!ter sans mot 'e passe ave! l,utilisateur
t!na.
autorise: votre voisin 'e 'roite 0 se !onne!ter ave! un mot 'e passe <autorisation en
%P sans ssl? ave! l,utilisateur bob.
(.6 4$CUU=
(.6.( @etto;age ave! 4$CUU=
$ffi!her la taille 'e la table stoc&.
Copier le !ontenu 'e la table 'ans une nouvelle table <stoc&>!is?.
Supprimer le !ontenu 'e la table sto!H. Quel est l,espa!e 'is/ue utilis par !ette table G
%nsrer le !ontenu 'e la table stoc&>!is 'ans la table stoc&. Quel est l,espa!e 'is/ue
utilis par la table G
1pter plusieurs fois les 'eu+ 'erni9res !omman'es <en terminant par insert?. Quel est
l,espa!e 'is/ue utilis par la table G
"ffe!tuer un 4$CUU= simple. 4rifier la taille 'e la base.
4i'er la table stoc&- insrer 0 nouveau le !ontenu 'e la table stoc&>!is. L,espa!e mis 0
'isposition atil t utilis G
(.6.3 @etto;age ave! 4$CUU= FULL
"+!uter 0 nouveau une srie 'e suppression et ',insertion 'ans la table stoc&.
"ffe!tuer un 4$CUU= FULL. Quel est l,impa!t sur la taille 'e la base G
(.7 2run!ate ou #elete G
&bserver la 'iffren!e entre les !omman'es delete et truncate en tron/uant la table
vin>!is.
&7" / 275 http://www.bull-formation.om

Administration PostgreSQL
(.R Statisti/ues
4rifier les param9tres 'e r!upration 'e statisti/ues au sein 'u fi!hier
postgres+l6con".
Quelle est la table s;st9me !olle!tant les statisti/ues !olle!tes par la !omman'e
ANAL;O2 G
%l e+iste une mtho'e plus I!onfortableJ ',a!!'er au+ 'onnes 'e !ette table.
$ffi!her les statisti/ues !olle!tes pour la table region.
Lan!er la !olle!te pour !ette table uni/uement.
&bserver les mo'ifi!ations 'ans la table s;st9me 'e statisti/ues.
(.O .el 'es Y%#
La table pg>data!ase !ontient 'es informations !on!ernant la 'ate 'u 'ernier gel 'e
Y%#. 2rouver la re/uBte permettant 'e visualiser le nombre 'e transa!tions effe!tues
entre le Y%# limite et le Y%# !ourant.
(.M #mon $utova!uum
#ans le fi!hier postgres+l6con"- a!tiver le 'mon autova!uum.
=o'ifier la fr/uen!e pour '!len!her un va!uum automati/ue toutes les 5F se!on'es.
4rifier /ue vos mo'ifi!ations ont t prises en !omptes en interrogeant la table
pg>settings.
(.L 1in'e+ation
1e!rer l,in'e+ 'e la table appelation.
Comment re!rer tous les in'e+ 'e la base cave G
Comment re!rer uni/uement les in'e+ 'es tables s;st9mes G
Quelle est la 'iffren!e entre la !omman'e 1"%@#"Y et la s/uen!e I#1&P %@#"Y ^
C1"$2" %@#"YJ G
(.(F 2ra!es
Quelle est la mtho'e 'e gestion 'es logs utilise par 'faut G
=o'ifier le fi!hier postgres+l6con" pour utiliser le programme interne 'e rotation 'es
*ournau+. Les logs 'oivent 'sormais Btre sauvegar's 'as le rpertoire
BtmpBP>;A(N@NANC@B et automatiser la rotation 'es *ournau+ pour gnrer un
nouveau fi!hiers 'e logs toutes les 7 minutes- /uel/ue soit la /uantit 'e logs ar!hivs.
=o'ifier la !onfiguration pour !olle!ter un ma+imum ',information 'ans les *ournau+.
"!rire un s!ript shell /ui !ompresse les fi!hiers 'e logs vieu+ 'e (F minutes et /ui
&75 / 275 http://www.bull-formation.om

Administration PostgreSQL
InettoieJ le rpertoire en supprimant les *ournau+ vieu+ 'e 5F minutes.
&7# / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Solutions
3.( Prre/uis
#ans le fi!hier postgres+l6con"- 'sa!tiver le 'mon autova!uum.
Puis- relan!er PostgreSQL.
3.3 .estion 'es rPles
Conne+ion ave! l,utilisateur !aviste <a'ministrateur 'e la base !ave?:
$ psql -U caviste cave
Cration 'e la table 7a$ture:
caviste@cave=> CREATE TABLE facture (f_id int4, f_objet varchar(200), f_date timestamp);
3.3.( Cration ',un utilisateur et ',un groupe
Cration 'u rPle se$retar!at ave! l,utilisateur postgres:
postgres@cave=> CREATE ROLE secretariat;
postgres@cave=> GRANT SELECT, INSERT, UPDATE, DELETE ON facture TO secretariat;
Cration 'e l,utilisateur bob appartenant au groupe se$retar!at:
postgres@cave=> CREATE ROLE bob LOGIN IN GROUP SECRETARIAT;
4rifi!ation 'e la !ration 'es 'eu+ rPles:
postgres@cave=> SELECT * FROM pg_roles;
<4ous pouve: aussi utiliser j'u pour obtenir la liste 'es utilisateurs- et j'p pour
!onnaEtre les 'roits 'es ob*ets?.
Conne+ion ave! l,utilisateur bob:
$ psql -U bob cave
&77 / 275 http://www.bull-formation.om

Administration PostgreSQL
%nsertion 'es fa!tures:
bob@cave=> INSERT INTO facture (f_id, f_objet, f_date) VALUES (1, 'Vin de Bordeaux', now());
bob@cave=> INSERT INTO facture (f_id, f_objet, f_date) VALUES (2, 'Vin de Bourgogne', now());
Sle!tionner les fa!tures:
bob@cave=> SELECT * FROM facture;
=o'ifier la 'eu+i9me fa!ture ave! la 'ate et l,heure !ourante:
bob@cave=> UPDATE facture SET f_date = now() WHERE f_id = 2;
Supprimer la premi9re fa!ture:
bob@cave=> DELETE FROM facture WHERE f_id = 1;
3.3.3 =o'ifi!ation 'es permissions
1etirer les 'roits D2L2"2 sur la table fa!ture pour le rPle se$retar!at ave!
l,utilisateur postgres:
postgres@cave=> REVOKE DELETE ON facture FROM secretariat;
4rifier /u,il n,est pas possible 'e supprimer la 'eu+i9me fa!ture ave! l,utilisateur bob:
bob@cave=> DELETE FROM facture WHERE f_id = 2;
1etirer tous les 'roits pour le groupe se$retar!at sur la table appellat!on:
postgres@cave=> REVOKE ALL ON appellation FROM secretariat;
4rifier /ue l,utilisateur bob appartenant au groupe se$retar!at ne peut pas
sle!tionner les appellations !ontenues 'ans la table appellat!on:
secretariat@cave=> SELECT * FROM appellation;
$utoriser l,utilisateur bob 0 a!!'er 0 la table appellat!on en le!ture:
postgres@cave=> GRANT SELECT ON appellation TO bob;
4rifier /ue l,utilisateur bob peut 'sormais a!!'er 0 la table appellat!on:
&7$ / 275 http://www.bull-formation.om

Administration PostgreSQL
bob@cave=> SELECT * FROM appellation;
3.3.5 Writage 'es 'roits au login
Crer un utilisateur t!na appartenant au rPle se$rQtar!at:
postgres@cave=> CREATE ROLE tina LOGIN NOINHERIT;
#onner les 'roits 'u rPle se$retar!at 0 l,utilisateur t!na:
postgres@cave=> GRANT secretariat TO tina;
Se !onne!ter ave! l,utilisateur t!na 0 la base 'e 'onnes !ave et vrifier /u,il n,est pas
possible ',a!!'er 0 la table 7a$ture:
$ psql -U tina cave
tina@cave=> SELECT * FROM facture;
Positionner le rPle se$retar!at et sle!tionner les 'onnes 'e la table 7a$ture:
tina@cave=> SET role secretariat;
secretariat@cave=> SELECT * FROM facture;
L,utilisateur t!na poss9'e maintenant les 'roits 'u rPle se$retar!at.
3.5 pg[hba.!onf
Pour autoriser vos voisins 0 a!!'er 0 la base- a*outer les lignes suivantes 'ans le fi!hier
pg[hba.!onf :
[ pour le vo!s!n V votre gau$+e ave$ l1adresse IP K(6\'6-6;C)'
+ost $ave t!na K(6\'6-6;C)' trust
[ pour le vo!s!n V votre dro!te ave$ l1adresse IP K(6\'6-6OC)'
+ostnossl $ave bob K(6\'6-6OC)' md5
3.6 4$CUU=
3.6.( @etto;age ave! 4$CUU=
Pour visualiser la taille 'e la table- il suffit ',utiliser la fon!tion pg5relat!on5s!Ne :
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
&7% / 275 http://www.bull-formation.om

Administration PostgreSQL
1etrouver fa!ilement une fon!tion %l est fa!ile 'e retrouver fa!ilement une
fon!tion en effe!tuant une re!her!he par mot !l 'ans ps/l. "+emple:
postgres=# \df *pretty*
Liste des fonctions
-[ RECORD 1 ]------------------+---------------
Schma | pg_catalog
Nom | pg_size_pretty
Type de donnes du rsultat | text
Type de donnes des paramtres | bigint
Type | normal
Cration ',une !opie 'e la table sto!H :
caviste@cave=> CREATE TABLE stock_bis AS SELECT * FROM stock;
Suppression 'es 'onnes 'ans la table:
caviste@cave=> DELETE FROM stock;
L,espa!e 'is/ue est tou*ours utilis :
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
1insertion 'es 'onnes 0 partir 'e la !opie :
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
L,espa!e 'is/ue utilis a 'oubl :
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
1pter !es 'eu+ 'erni9res !omman'es plusieurs fois <en terminant par (NS@?? et
observer la taille 'e la table :
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
La !omman'e va!uum InettoieJ mais ne Ilib9reJ pas ',espa!e 'is/ue :
caviste@cave=> VACUUM stock;
...
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
&$' / 275 http://www.bull-formation.om

Administration PostgreSQL
4i'er la table sto!H- insrer 0 nouveau le !ontenu 'e la table sto!H[bis :
caviste@cave=> DELETE FROM stock;
-- )))
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
-- )))
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
4rifier la taille 'e la base- P. a rutilis 'es espa!es 'isponibles :
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
3.6.3 @etto;age ave! 4$CUU= FULL
$ nouveau- supprimer et insrer massivement 'es tuples 'ans la base puis lan!er un
va!uum full :
caviste@cave=> DELETE FROM stock;
-- )))
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
-- )))
caviste@cave=> DELETE FROM stock;
-- )))
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
-- )))
caviste@cave=> DELETE FROM stock;
-- )))
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
-- )))
caviste@cave=> DELETE FROM stock;
-- )))
caviste@cave=> INSERT INTO stock SELECT * FROM stock_bis;
-- )))
caviste@cave=> SELECT pg_size_pretty(pg_relation_size('stock'));
-- )))
caviste@cave=> vacuum FULL stock;
3.7 2run!ate ou #elete G
&n tron/ue la table vin[bis. L,espa!e 'is/ue est imm'iatement libr :
cave=> TRUNCATE vin_bis;
TRUNCATE TABLE
cave=> SELECT pg_size_pretty(pg_relation_size('vin_bis'));
pg_size_pretty
----------------
0 bytes
(1 ligne)
3.R Statisti/ues
Les param9tres 'e !ontrPle 'e la fon!tion 'e r!upration 'e statisti/ues sont :
&$& / 275 http://www.bull-formation.om

Administration PostgreSQL
tra$E5a$t!v!t!es ? on
tra$E5$ounts ? on
Les 'onnes !olle!tes sont sto!Hes 'ans la table pg5stat!st!$s. L,utilisateur
$av!ste ne 'ispose pas 'es 'roits n!essaire pour a!!'er 0 !es 'onnes :
$ su - postgres
$ psql cave
...
postgres@cave=> SELECT * FROM pg_statistic;
La vue pg5stats fa!ilite l,a!!9s 0 !es 'onnes :
cave=> SELECT * FROM pg_stats;
Pour affi!her les informations !on!ernant la table reg!on- on e+!ute la re/uBte
suivante :
cave=> SELECT * FROM pg_stats WHERE tablename='region';
Pour le moment- au!une 'onne n,a t !olle!te pour !ette table. &n '!len!he 'on!
la !olle!te ave! la !omman'e ANAL;O2 :
cave=> analyze region;
Cette fois- la table pg5stat!st!$s !ontient 'es informations 0 propos 'es statisti/ues
'e la table reg!on :
cave=> SELECT * FROM pg_stats WHERE tablename='region';
3.O .el 'es Y%#
La re/uBte SQL !i'essous in'i/ue le nombre 'e transa!tions effe!tues entre le Y%#
limite et le Y%# !ourant :
SELECT datname, age(datfrozenxid) FROM pg_database;
3.M #mon $utova!uum
Les param9tres 'u fi!hier postgres4l6$on7 rgissant l,a!tivit 'u 'mon
!ommen!ent par le prfi+e autovacuum> :
autova$uum ? on
autova$uum5napt!me ? ](
&$2 / 275 http://www.bull-formation.om

Administration PostgreSQL
autova$uum5va$uum5t+res+old ? K(((
autova$uum5anal%Ne5t+res+old ? 5((
autova$uum5va$uum5s$ale57a$tor ? (6\
autova$uum5anal%Ne5s$ale57a$tor ? (6'
autova$uum5va$uum5$ost5dela% ? DK
autova$uum5va$uum5$ost5l!m!t ? DK
Pour augmenter la fr/uen!e 'e l,autova!uum- mo'ifier la valeur 'e napt!me :
autova$uum5napt!me ? K(
"nsuite re!harger le fi!hier postgres/l.!onf pour /ue les mo'ifi!ations soient prises en
!ompte. %l n,est pas n!essaire 'e re'marrer le serveur :
# /etc/init.d/postgresql reload
$ttention- sous #ebian- il s,agira 'u s!ript Cet$C!n!t6dCpostgres4lD86\ pour une
version M.6.
Pour vrifier /ue les mo'ifi!ations sont t effe!tues- e+!uter la re/uBte suivante :
SELECT name, setting, short_desc
FROM pg_settings
WHERE name ~ 'autovacuum';
3.L 1in'e+ation
La rin'e+ation ',une table se fait 'e la mani9re suivante :
REINDEX TABLE appelation;
Pour re!rer tous les in'e+es :
REINDEX DATABASE cave;
Pour rin'e+er uni/uement les tables s;st9mes :
REINDEX SYSTEM cave;
#2IND2- est similaire 0 une suppression et 0 une nouvelle !ration 'e l,in'e+.
Cepen'ant les !on'itions 'e verrouillage sont 'iffrentes :
#2IND2- verrouille les !ritures mais pas les le!tures 'e la table m9re 'e l,in'e+. %l
pren' aussi un verrou e+!lusif sur l,in'e+ en !ours 'e traitement- !e /ui blo/ue les
le!tures /ui tentent ',utiliser l,in'e+.
$u !ontraire- D#*P IND2- !re temporairement un verrou e+!lusif sur la table
&$! / 275 http://www.bull-formation.om

Administration PostgreSQL
parent- blo/uant ainsi !ritures et le!tures. Le C#2A"2 IND2- /ui suit verrouille les
!ritures mais pas les le!tures \ !omme l,in'e+ n,e+iste pas- au!une le!ture ne peut
Btre tente- signifiant /u,il n,; a au!un blo!age et /ue les le!tures sont probablement
for!es 'e raliser 'es par!ours s/uentiels !omplets.
3.(F 2ra!es
Par 'faut le mo'e 'e *ournalistation est stderr.
Pour a!tiver le r!uprateur interne 'e log il faut mo'ifier le param9tre suivant 'ans le
fi!hier postgres+l6con" :
logg!ng5$olle$tor ? on
Puis paramtrer le !omportement 'u r!uprateur :
log5d!re$tor% ? 1CtmpC"P5.AIN"2NAC21
[ Attent!on ^
[ $e reperto!re do!t Utre a$$ess!ble pour l1ut!l!sateur postgres
log5rotat!on5age ? 5
log5rotat!on5s!Ne ? (
log5m!n5messages ? debug5
Un s!ript shell pour grer la rotation 'es logs et !onserver un volume 'e logs !onstant :
#%bin%bas(

# On compresse les fic(iers vieu* de + minutes
4#'d . -type f -cmin +3 -exec g8#* -9 9: \; -print

# On supprime les fic(iers vieu* de +, minutes
4#'d . -type f -cmin +30 -exec rm -f 9: \; -print
Pour fon!tionner !orre!tement- !e s!ript 'oit Btre e+!ut par l,utilisateur postgres ou
par root.
&$" / 275 http://www.bull-formation.om

Administration PostgreSQL
PostgreSQL : Sauvegarde B
?estauration
&$5 / 275 http://www.bull-formation.om

Administration PostgreSQL
( %ntro'u!tion
La sauvegar'e 'es bases 'e 'onnes est essentielle pour la s!urisation 'es
'onnes. Le matriel peut Btre tr9s robuste et tolrant au+ pannes mais
personne n,est 0 l,abri ',une impru'en!e ou ',un 'sastre.
Comme tout bon S.B# /ui se respe!te- PostgreSQL propose 'iffrentes
solutions 'e sauvegar'e 0 froi' et 0 !hau' ainsi /ue 'es mtho'es 'e
restauration partielle ou !ompl9te.
(.( =enu
Politi/ue 'e sauvegar'e
Sauvegar'e SQL
Sauvegar'e au niveau s;st9me 'e fi!hiers <0 froi'?
Sauvegar'e 0 !hau'
Utilisation ',outils e+ternes ',ar!hivage
(.3 Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
Paternit
&$# / 275 http://www.bull-formation.om

Administration PostgreSQL
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
&$7 / 275 http://www.bull-formation.om

Administration PostgreSQL
3 #finir une politi/ue 'e sauvegar'e
Pour/uoi tablir une politi/ue G
Que sauvegar'er G
D /uelle fr/uen!e sauvegar'er les 'onnes G
Quels supports G
Quels outils G
4rifier la restauration 'es sauvegar'es
$fin ',assurer la s!urit 'es 'onnes- il est n!essaire 'e faire 'es sauvegar'es
rguli9res.
Ces sauvegar'es vont servir- en !as 'e probl9me- 0 restaurer les bases 'e 'onnes 'ans
un tat le plus pro!he possible 'u moment ob le probl9me est survenu.
%l est possible 'e sauvegar'er :
une ou plusieurs tables \
une ou plusieurs bases 'e 'onnes \
l,ensemble 'es bases 'e 'onnes 'u !luster :
l,ensemble 'es fi!hiers 'u !luster PostgreSQL.
%l faut 'terminer la fr/uen!e 'e sauvegar'e 'es 'onnes selon :
le volume 'e 'onnes 0 sauvegar'er \
la !riti!it 'es 'onnes \
la /uantit 'e 'onnes /u,il est U a!!eptable N 'e per're en !as 'e
probl9me.
%l est possible 'e sauvegar'er les 'onnes par N>S- sur 'es 'is/ues ''is- sur 'es
ban'es. #ans tous les !as- il est fortement '!onseill 'e faire les sauvegar'es sur les
'is/ues utiliss par la base 'e 'onnes.
%l est essentiel 'e s,assurer /ue les sauvegar'es sont !onsistantes.
&$$ / 275 http://www.bull-formation.om

Administration PostgreSQL
3.( &b*e!tifs
La sauvegar'e et la restauration 'es bases 'e 'onnes peuvent Btre
utilises pour :
Scuriser les 'onnes
=ettre 0 *our le moteur 'e 'onnes
#upli/uer une base 'e 'onnes 'e pro'u!tion
$r!hiver les 'onnes
3.3 #iffrentes appro!hes
%l e+iste 'iffrentes appro!hes pour effe!tuer 'es sauvegar'es ',une base
'e 'onnes PostgreSQL :
La sauvegar'e 0 froi' au niveau 'u s;st9me 'e fi!hiers
La sauvegar'e 0 !hau' en SQL
La sauvegar'e 0 !hau' en !ontinu
La sauvegar'e au niveau s;st9me 'e fi!hiers permet 'e sauvegar'er une image
!ohrente 'es rpertoires 'e 'onnes lors/ue le !luster est arrBt.
L,utilisation ',outils 'e snapshots pour effe!tuer les sauvegar'es peut a!!lrer
!onsi'rablement les temps 'e sauvegar'e 'es bases 'e 'onnes.
La sauvegar'e SQL permet 'e !rer un fi!hier te+te 'e !omman'es SQL !ontenant le
s!hma et les 'onnes 'e la base 'e 'onnes.
La sauvegar'e 0 !hau' en !ontinu !ombine une sauvegar'e 'u s;st9me 'e fi!hier et un
ar!hivage 'es *ournau+ 'e transa!tions lui tant asso!is. "lle est !ommunment appel
PI"#- Point %n 2ime 1e!over;- soit U restauration 0 un instant 'onn 'ans le temps N en
fran8ais.
"lle !onvient bien au+ bases 'e 'onnes 'e volumes !ons/uents ne pouvant pas Btre
arrBtes.
&$% / 275 http://www.bull-formation.om

Administration PostgreSQL
5 Sauvegar'es SQL
L,utilitaire pg5dump est utilis pour effe!tuer 'es sauvegar'es SQL. %l
permet 'e sauvegar'er :
une base 'e 'onnes
un ou plusieurs ob*ets ',une base 'e 'onnes
Les sauvegar'es !res par pg5dump sont !ohrentes. L,outil utilis pour
la restauration 'es ar!hives est pg5restore.
Les mo'ifi!ations effe!tues alors /ue pg5dump est en !ours 'e fon!tionnement ne sont
pas 'ans le fi!hier 'e rsultat.
pg5dump ne blo/ue pas les autres oprations sur la base lors/u,il fon!tionne.
@anmoins- il pose un verrou U $CC"SS SW$1" N sur !ha/ue table 0 sauvegar'er. %l peut
'on! ; avoir une interfren!e si un utilisateur !her!he 0 a!/urir un verrou e+!lusif sur
une 'es tables sauvegar'es- !omme lors ',une suppression 'e table. Les verrous ne
sont rela!hs /u,0 la fin 'e la sauvegar'e. Par ailleurs- pg5dump 'evant avoir une vision
!ohrente 'e la base 'urant toute la 'ure 'e son e+port- il !re une transa!tion 'e
longue 'ure- 'e t;pe S2#IALIOABL2- empB!hant le re!;!lage 'es enregistrements
'ont il pourrait avoir besoin par va$uum.
Les fi!hiers te+te !rs par pg5dump sont prvus pour Btre lus par le programme ps4l
alors /ue les fi!hiers binaires sont relus par le programme pg5restore.
Les outils pg5dump et pg5restore se !onne!tent !omme 'es !lients PostgreSQL au+
bases 'e 'onnes. %l est 'on! possible 'e sauvegar'er et/ou restaurer 'es bases 0
'istan!e. %l faut nanmoins avoir l,a!!9s 0 !es bases 'e 'onnes !omme pour tout autre
!lient PostgreSQL.
5.( Sauvegar'e ave! pg['ump <(/3?
S;nta+e 'e pg5dump ave! les options les plus !ourantes :
pg_dump [ -t <table> ] [ -Fc ] <base> > <fichier>
pg5dump !rit le rsultat sur la sortie stan'ar'.
&%' / 275 http://www.bull-formation.om

Administration PostgreSQL
L,option 'e format D>$ entraEne l,utilisation 'u plus fle+ible 'es formats /ui permet 0
pg5restore 'e restaurer les tables sle!tivement et 'e ror'onner les 'onnes
!harges et les 'finitions 'es ob*ets. Ce format est !ompress par 'faut.
Par 'faut- le format 'e sortie est le SQL. L,option D>$ permet ',obtenir un fi!hier 'ont
le format est utilisable par pg5restore. Ce format est galement !ompress.
5.3 Sauvegar'e ave! pg['ump <3/3?
Le fi!hier 'e sortie peut Btre !ompress 0 la vole :
pg_dump <base> | gzip > <fichier>
Le fi!hier 'e sortie peut aussi Btre '!oup 0 la vole :
pg_dump <base> | split -b 100m - <prefix_fichier>
%l est fortement re!omman' ',!rire les fi!hiers 'es sauvegar'es sur 'es
'is/ues 'iffrents 'e !eu+ utiliss par la base 'e 'onnes.
5.5 1estauration 'es ar!hives <(/6?
pg5restore est l,outil /ui permet 'e restaurer 'e mani9re sle!tive ou
non les sauvegar'es effe!tues ave! l,outil pg5dump 'ans un format non %
plain te#t '.
S;nta+e pour l,utilisation 'e pg5restore ave! les options les plus
!ourantes :
pg_restore [ -Fc ] [ -d <base_de_donnes> ]
[ -t <table> ] [ <fichier> ]
1estauration paralllise ave! l,option *
#isponible 0 partir 'e la version M.6.
&%& / 275 http://www.bull-formation.om

Administration PostgreSQL
5.6 1estauration 'es ar!hives <3/6?
%l est galement possible 'e restaurer les sauvegar'es SQL < U plain te+t N ?
en utilisant l,outil ps4l :
psql base_de_donnees < fichier_d_entree
5.7 1estauration 'es ar!hives <5/6?
Pour restaurer une base 0 partir ',un fi!hier /ui a t !ompress- utiliser
gunN!p !ombin 0 ps4l :
gunzip -c fichier.gz | psql mabase
Pour restaurer une base 'e 'onnes 0 partir 'e fi!hiers '!oups-
utiliser $at !ombin 0 ps4l :
cat nom_fichier* | psql mabase
5.R 1estauration 'es ar!hives <6/6?
$pr9s la restauration 'es 'onnes- il est re!omman' 'e lan!er ANAL;O2
sur !ha!une 'es bases 'e 'onnes afin /ue l,optimiseur 'e re/uBtes
'ispose 'e statisti/ues utiles. Ce!i peut Btre effe!tu par la !omman'e
SQL /AC00. ANAL;O2 ou l,outil va$uumdb :
vacuumdb -a -z
&%2 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.O =igration 'e 'onnes
%l est possible 'e !ombiner les outils pg5dump et pg5restore ou ps4l
afin 'e migrer ou 'e 'upli/uer une base 'e 'onnes :
pg_dump -h serveur1 base | psql -h serveur2 base
"n !as 'e migration vers une version 'e PostgreSQL plus r!ente- il faut
tou*ours utiliser l,outil pg5dump 'e la version la plus r!ente.
5.M Sauvegar'er/restaurer un !luster
%l est possible 'e sauvegar'er toutes les bases 'u serveur ave! l,outil
pg5dumpall :
pg_dumpall > fichier_de_sortie
Pour restaurer toutes les bases- utiliser l,outil ps4l !omme !e!i :
psql -f fichier_d_entree postgres
pg5dumpall sauvegar'e toutes les bases ',un !luster PostgreSQL en appelant
pg5dump pour !ha/ue base 'e 'onnes.
Le s!ript 'e !omman'es SQL gnr par !ette !omman'e !ontient tous les or'res pour
restaurer l,ensemble 'es bases 'e 'onnes ainsi /ue les or'res 'e !ration 'es ob*ets
globau+ !ommun 0 toutes les bases tels /ue les #*L2S- 0S2#- G#*0P- "ABL2SPAC2 et
les proprits /ui s,appli/uent au+ bases 'e 'onnes 'ans leur ensemble- telles /ue les
'roits ',a!!9s.
pg5dump n,e+porte pas !es ob*ets globau+.
&%! / 275 http://www.bull-formation.om

Administration PostgreSQL
6 Sauvegar'e au niveau s;st9me 'e
fi!hiers
La sauvegar'e au niveau s;st9me 'e fi!hiers !onsiste 0 !opier tous les
fi!hiers utiliss par PostgreSQL pour enregistrer les 'onnes. 2ous les outils
'u s;st9me peuvent Btre utiliss pour effe!tuer les sauvegar'es <tar-
$p!o- rs%n$]?.
"+emple:
$ tar -cf sauvegarde.tar /var/lib/pgsql/data
Cette mtho'e tire pleinement son avantage lors/ue le s;st9me 'e fi!hiers permet
l,utilisation ',outils 'e snapshots. Ce!i permet en effet 'e r'uire fortement
l,interruption 'e servi!e pour la sauvegar'e 'e la base.
6.( Limitations
Le serveur 'e base 'e 'onnes doit Btre arrBt pour obtenir une
sauvegar'e utilisable
%l est impossible 'e sauvegar'er une base parti!uli9re
%l est impossible 'e restaurer une 'onne sparment 'u reste
6.3 %mage 'u s;st9me 'e fi!hiers <(/5?
Certains s;st9mes 'e fi!hiers supportent U nativement N 'e faire 'es
images geles <snapshots? ',un volume <L4=- ZFS- YFS?. Ce!i permet 'e
!opier le !ontenu 'es rpertoires 'e 'onnes 'e PostgreSQL sans arrBter la
base- avant 'e librer l,image gele.
&%" / 275 http://www.bull-formation.om

Administration PostgreSQL
6.5 %mage 'u s;st9me 'e fi!hiers <3/5?
$vantage:
L,arrBt 'u serveur n,est pas n!essaire
6.6 %mage 'u s;st9me 'e fi!hiers <5/5?
%n!onvnients:
Les *ournau+ 'e transa!tion sont obligatoires !ar la base 'e 'onnes
re'marre !omme apr9s un arrBt violent
2ous les fi!hiers 'oivent Btre sur le mBme s;st9me 'e fi!hiers pour
!onserver une !ohren!e au sein 'u snapshot- ou le s;st9me 'e snapshot
'oit Btre !apable 'e '!len!her un snapshot !ohrent 'e l,ensemble 'es
volumes- !e /ue savent faire !ertaines baies 'is/ues <S$@? haut 'e
gamme
6.7 Sauvegar'e ave! rs;n!
"n utilisant rs%n$- il est possible 'e sauvegar'er une gran'e partie 'es
fi!hiers 0 !hau'- puis ',arrBter la base 'e 'onnes et sauvegar'er les
'erniers fi!hiers mo'ifis avant 'e re'marrer la base. L,utilisation 'e
rs%n$ permet 'e r'uire le temps ',interruption 'e servi!e par rapport 0
un autre outil ',ar!hivage 'e t;pe tar ou $p!o.
&%5 / 275 http://www.bull-formation.om

Administration PostgreSQL
7 Sauvegar'es P%21
Prin!ipes
$vantages
Limitations
1e!omman'ations
Sauvegar'e
1estauration
$vertissements
7.( Prsentation 'es YL&.
PostgreSQL maintient 'es *ournau+ 'e transa!tion ave! la mtho'e &AL
<*rite Ahead Log?. %ls '!rivent !ha/ue mo'ifi!ation effe!tue sur les
fi!hiers 'e 'onnes 'es bases
Si le s;st9me s,arrBte brutalement- la base 'e 'onnes peut Btre
restaure pour avoir une !ohren!e 'es 'onnes en U re*ouant N les
entres 'es *ournau+ enregistrs 'epuis le 'ernier point 'e vrifi!ation
Les *ournau+ 'e transa!tion sont sto!Hs 'ans le sousrpertoire pg[+log 'u rpertoire
'es 'onnes 'u !luster._
Cha/ue *ournal 'e transa!tion fait (R =o et est nomm suivant une s/uen!e interne 0
PostgreSQL. Un nombre suffisant 'e *ournau+ est !r puis- les *ournau+ 'evenus
inutiles sont Ure!;!ls N en les renommant.
L,ar!hivage 'e !es *ournau+ ren' possible la re!onstru!tion ',une base 'e 'onnes 0
partir ',une sauvegar'e r!ente et 'e l,appli!ation 'es transa!tions !ontenues 'ans
!es *ournau+ ar!hivs._
&%# / 275 http://www.bull-formation.om

Administration PostgreSQL
7.3 $vantages <(/3?
Sauvegar'e 0 !hau' /ui ne n!essite pas ',interruption 'e servi!e
Pas besoin ',avoir une sauvegar'e parfaitement !ohrente !omme point
'e 'part. 2oute in!ohren!e sera !orrige par la re+!ution 'es
*ournau+
%l est possible ',appli/uer une gran'e s/uen!e 'e *ournau+ !e /ui
permet ',espa!er les sauvegar'es !ompl9tes 'es grosses bases 'e
'onnes
Un s;st9me 'e snapshots n,est 'on! pas n!essaire- on peut se !ontenter ',utiliser 'es
outils !omme tar ou un autre outil ',ar!hivage.
7.5 $vantages <3/3?
%l est possible 'e ne re*ouer /u,une partie 'es *ournau+- !e /ui permet
',obtenir une base 'e 'onnes 0 n,importe /uel temps 'ans le pass
'epuis la 'erni9re sauvegar'e
=tho'e 'e sauvegar'e/restauration /ui o!!asionne le moins 'e perte
'e 'onnes puis/u,elle permet 'e restaurer tout *us/u,au+ 'erni9res
transa!tions loggues 'ans les *ournau+
Ce!i est appel U r!upration 0 un instant t N ou PI"# <_Point %n 2ime 1e!over;_?. "lle
est aussi parfois prsente 'ans le mon'e 'es S.B# !omme U sauvegar'e en !ontinu N-
puis/u,elle permet 'e restaurer la base 0 n,importe /uel point 'ans le temps.
7.6 Limitations
L,utilisation 'es PI"# est une mtho'e:
/ui ne permet pas la restauration ',un sousensemble 'e 'onnes
/ui re/uiert un gran' espa!e 'e sto!Hage
et /ui est plus !omple+e 0 mettre en pla!e /u,un simple dump ou une
sauvegar'e !ompl9te 0 froi'
&%7 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.7 1e!omman'ations
Si vous !hoisisse: !ette mtho'e 'e sauvegar'e- il est fortement
re!omman' 'e sto!Her les *ournau+ 'e transa!tion ar!hivs sparment :
sur un 'is/ue 'iffrent 'e !elui /ui !ontient le !luster PostgreSQL
sur un 'is/ue rseau <N>S- samba?
'ire!tement sur 'es ban'es
7.R Configurer l,ar!hivage
PostgreSQL laisse le soin 0 l,a'ministrateur 'e 'finir la mtho'e
',ar!hivage 'es *ournau+ 'e transa!tion 'ans le fi!hier
postgres4l6$on7. Une simple !omman'e 'e !opie suffit 'ans la plupart
'es !as. La 'ire!tive ar$+!ve5$ommand peut alors Btre positionne
!omme suit :
archive_command = 'cp -n %p /mnt/archives/%f'
archive_command = 'copy "%p" "/mnt/server/archivedir/%f"' # Windows
ave! :
Mp le !hemin vers les segments ar!hivables
M7 le nom 'u *ournal 'e transa!tion
Comme la srie 'e *ournau+ 'e transa!tion en !ours ',ar!hivage !ontient rellement
tout !e /ui se trouve 'ans la base 'e 'onnes- il est prfrable 'e s,assurer /ue les
'onnes ar!hives sont protges 'es autres utilisateurs.
La !omman'e ',ar!hivage 'oit retourner ( en !as 'e russite- sans /uoi le serveur va re
tenter prio'i/uement *us/u,0 !e /ue la !omman'e russisse. "lle 'oit bien ser ne pas
retourner ( en !as ',!he!. #e plus elle 'evrait Btre gnralement !on8ue pour refuser
',!raser tout fi!hier ar!hive '*0 e+istant et prserver l,intgrit 'es ar!hives.
%l peut Btre important 'e surveiller le pro!essus ',ar!hivage notamment lors/u,on
!hoisit 'e faire une sauvegar'e sur ban'e et 'e faire remonter les probl9mes 0 un
oprateur <'is/ue plein- !hangement 'e ban'e]?.
&%$ / 275 http://www.bull-formation.om

Administration PostgreSQL
7.O Sauvegar'e P%21 <(/3?
Pro!'ure 'e sauvegar'e 0 !hau' :
Se !onne!ter 0 la base 'e 'onnes en tant /ue superutilisateur et lan!er
la !omman'e suivante :
SELECT pg_start_backup('label');
Sauvegar'er le rpertoire HPGDA"A <tar- $p ]?
ob label est toute !haEne utilise pour i'entifier 'e fa8on uni/ue l,opration 'e
sauvegar'e.
Un autre param9tre est 'isponible- bien /u,optionnel. Le param9tre fast permet
',in'i/uer si le CW"CVP&%@2 e+!ut par !ette !omman'e 'oit se faire rapi'ement ou
pas. %ls feront 'e toute fa8on le mBme travail- mais le lent le 'iluera suivant
$+e$Epo!nt5$omplet!on5target alors /ue le rapi'e ne tient pas !ompte 'e !ette
variable.
L,e+!ution 'e !ette !omman'e provo/ue un C,2C3P*IN". #ans les versions
antrieures 0 la M.6- !ela peut 'urer au ma+imum la 'ure in'i/ue par
!he!Hpoint[timeout. D partir 'e la M.6- il faut a*outer un argument boolen pour
in'i/uer si on veut /ue le C,2C3P*IN" soit imm'iat ou si on veut /u,il atten'e. Le
!omportement par 'faut est ',atten're- respe!tant ainsi le !omportement 'es versions
antrieures 0 la M.6.
La !omman'e !re aussi un fi!hier 'ans HPGDA"A. Ce fi!hier s,appelle ba$Eup5label
et !ontient 0 peu pr9s !e!i:
guillaume@laptop:~$ cat $PGDATA/backup_label
START WAL LOCATION: 8/DE000020 (file 0000000100000008000000DE)
CHECKPOINT LOCATION: 8/DE000020
START TIME: 2010-01-26 10:49:05 CET
LABEL: backup_guillaume_2010_01-26
Cela in'i/ue le *ournal 'e transa!tion en !ours et l,empla!ement 'u 'ernier
C,2C3P*IN" 'ans !e *ournal.
%l n,est pas n!essaire 'e !opier le sousrpertoire pg59log. 2outefois- il est primor'ial
'e s,assurer /ue la sauvegar'e in!lut tous les fi!hiers 'u !luster <attentions au+ liens
s;mboli/ues 'es tablespa!es ou 'u rpertoire 'es *ournau+ 'e transa!tions?.
&%% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.M Sauvegar'e P%21 <3/3?
$pr9s la sauvegar'e 'es fi!hiers- se !onne!ter 0 la base 'e 'onnes en
tant /ue superutilisateur et lan!er la !omman'e suivante :
SELECT pg_stop_backup();
Une fois /ue les *ournau+ 'e transa!tion utiliss 'urant la sauvegar'e sont ar!hivs- la
sauvegar'e est termine.
La fon!tion pg5stop5ba$Eup renomme le fi!hier ba$Eup5label en
""""""""SSSSSSSSSSSSSSS6********6ba$Eup <les 2 in'i/uant la timeline- les S le
segment? et le 'pla!e 'ans le rpertoire pg59log. %l a*oute aussi /uel/ues
informations 'ans le fi!hier:
guillaume@laptop:~$ cat /opt/postgresql-
8.4/data/pg_xlog/0000000100000008000000DE.00000020.backup
START WAL LOCATION: 8/DE000020 (file 0000000100000008000000DE)
STOP WAL LOCATION: 8/E197940C (file 0000000100000008000000E1)
CHECKPOINT LOCATION: 8/DE000020
START TIME: 2010-01-26 10:49:05 CET
LABEL: backup_guillaume_2010_01-26
STOP TIME: 2010-01-26 10:58:27 CET
Ce fi!hier sera aussi ar!hiv.
2ous les *ournau+ ar!hivs ave! 'es noms numri/uement plus petits ne sont plus
n!essaires pour la r!upration 'e la sauvegar'e 'u s;st9me 'e fi!hiers et peuvent
'on! Btre supprims.
7.L 1estauration P%21 <(/5?
$rrBter le serveur s,il est en !ours ',e+!ution
$r!hiver les fi!hier 'u rpertoire pg59log
"ffa!er tous les fi!hiers et sousrpertoires 'e l,an!ien !luster
PostgreSQL
1estaurer les fi!hiers 'e la base 'e 'onnes 0 partir 'e la 'erni9re
sauvegar'e
Supprimer les fi!hiers 'u sousrpertoire pg59log
2'' / 275 http://www.bull-formation.om

Administration PostgreSQL
Conserver le !ontenu 'u sousrpertoire pg59log 'u rpertoire 'es 'onnes 'ans un
empla!ement temporaire !ar il pourrait !ontenir 'es *ournau+ /ui n,ont pas t ar!hivs
avant l,arrBt 'u serveur.
Si possible !onserver le !ontenu 'u !luster a!tuel <HPG5DA"A?.
$ttention :
1estaurer les 'onnes ave! le bon propritaire et les bons 'roits.
#ans le !as ',utilisation 'e tablespa!es- vrifier /ue les liens s;mboli/ues 'ans
pg5tblsp$C ont t !orre!tement restaurs.
Si le rpertoire pg59log n,a pas t ar!hiv- il faut alors le !rer ainsi /ue le sous
rpertoire pg59logCar$+!ve5status.
7.(F 1estauration P%21 <3/5?
Crer un fi!hier 'e !omman'es 'e r!upration re$over%6$on7 'ans
le rpertoire 'es 'onnes. Ce fi!hier 'oit !ontenir au moins la
!omman'e 'e restauration. "+emple :
restore_command = 'cp -n /nfs1/pitr/%f %p'
%l est possible 'e sp!ifier une 'ate <re$over%5target5t!me? ou un
numro 'e transa!tion <re$over%5target59!d? pour 'limiter la fin
'e la restauration
&ption re$over%5end5$ommand <'isponible 0 partir 'e la M.6?
$ve! :
Mp le !hemin absolu
M7 le nom 'u fi!hier ',ar!hive
La partie !l 'e toute la restauration est la !onfiguration 'u fi!hier 'e !omman'es 'e
r!upration. "n plus 'e !ontenir la !omman'e /ui permet 'e r!uprer les *ournau+ 'e
transa!tion <restore5$ommand?- !e fi!hier permet 'e sp!ifier une limite 'e temps au
'el0 'u/uel PostgreSQL 'oit stopper la restauration.
%l est important /ue la !omman'e renvoie un !o'e 'e sortie :ro si et seulement si elle
a russi. La !omman'e se verra 'eman'er les noms 'es fi!hiers absents 'ans l,ar!hive \
elle 'oit renvo;er une valeur 'iffrente 'e :ro 'ans !e !as.
%l n,e+iste a!tuellement au!un outil pour r!uprer fa!ilement un numro 'e transa!tion
parti!ulier.
Cela permet 'e s!ripter la suppression 'u fi!hier trigger apr9s bas!ule- ou n,importe
2'& / 275 http://www.bull-formation.om

Administration PostgreSQL
/uelle autre a!tion /u,on vou'rait e+!uter 0 la fin 'e la pro!'ure 'e r!upration.
7.(( 1estauration P%21 <5/5?
1elan!er le serveur PostgreSQL. Le postmaster se trouve en mo'e
r!upration et !ommen!e la le!ture 'es *ournau+ 'e transa!tion 'ont il
a besoin
D la fin 'u pro!essus- le posmaster renomme le fi!hier
re$over%6$on7 en re$over%6done
D la fin 'e la restauration il est !onseill 'e vrifier l,tat 'es 'onnes avant 'e
remettre la base 'e 'onnes en pro'u!tion.
7.(3 &util pglesslog
Probl9me 'e la mtho'e PI"# : la pla!e prise sur 'is/ue par les
*ournau+ 'e transa!tions
Solution ( : !ompresser les *ournau+ 0 la vole] simple et ser pour les
'onnes <!ompression non 'estru!tive?. La !ompression peut ne pas Btre
tr9s intressante en terme ',espa!e 'is/ue gagn
Solution 3 : utiliser pglesslog] la mtho'e revient 0 supprimer les pages
!ompl9tes inutiles. .ain en espa!e !ertain- mais !ompression plus
!omple+e- les *ournau+ tant mo'ifis par suppression 'e !ertaines
'onnes inutiles
$ve! un *ournal gnr toutes les !in/ minutes- !ela fait (R =o/7 minutes- soit (L3 =o
par heure- 'on! prati/uement 7 .o par *our.
2'2 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(5 $vertissements
Les oprations sur les in'e+ ha!hs ne sont pas tra!es 'ans les *ournau+
'e transa!tion
@e pas mo'ifier les bases 'e 'onnes mo'9les <template(-
templateK? pen'ant les oprations 'e sauvegar'e
La !ration 'e tablespa$e est tra!e ave! les !hemins absolus. %l est
prfrable 'e faire une nouvelle sauvegar'e apr9s !ha/ue !ration ou
suppression 'e tablespa$e
%l faut alors in'e+er manuellement apr9s la restauration.
D noter /ue les in'e+ G!S" et G!N n,ont plus !e probl9me 'epuis la version M.(.
7.(6 Log Shipping
Probl9me 0 la restauration 'es *ournau+ 'e transa!tion : la lenteur
L,i'e est ',avoir un 'eu+i9me serveur- /ui r!up9re les *ournau+ 'e
transa!tion et les re+!ute imm'iatement
Plusieurs outils e+istent pour grer la restauration via le param9tre
restore5$ommand
"n effet- si la sauvegar'e 'e base 'ate ',une semaine- voire ',un mois- il est n!essaire
'e re*ouer tous les *ournau+ 'e transa!tion 'epuis !ette 'ate. Cela peut pren're un
!ertain temps.
Ce serveur- appel &arm Standb% Server- se !onfigure !omme pour la restauration-
si !e n,est /ue la !omman'e 'e restauration ne se termine *amais.
4ous pouve: !rire votre programme- mais Simon 1iggs a '*0 !rit un mo'ule !ontrib-
'isponible en M.5 et appel pg5standb%. L,/uipe 'e SH;pe a aussi !rit son outil-
walmgr.
2'! / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(7 pg[stan'b;
&util !rit en C par Simon 1iggs
#isponible en mo'ule !ontrib 0 partir 'e la version M.5
@ombreuses options en ligne 'e !omman'e
"+emple:
restore_command = 'pg_standby -d -s 2 -t /tmp/pgsql.trigger.5432
/var/pg_xlog_archives %f %p %r 2>> standby.log'
pg[stan'b; k&P2%&@ ]l $1CW%4"L&C$2%&@ @"Y2X$LF%L" YL&.F%L"P$2W
k1"S2$12X$LF%L"l
$1CW%4"L&C$2%&@ !orrespon' au rpertoire 'e sto!Hage 'es *ournau+ 'e transa!tion
ar!hivs.
@"Y2X$LF%L" est le nom 'u pro!hain *ournal 0 r!uprer.
YL&.F%L"P$2W est l,empla!ement 'es *ournau+ 'e transa!tion.
1"S2$12X$LF%L" est le nom 'u premier *ournal n!essaire 0 la restauration. Les
*ournau+ antrieur 0 !e 'erniers seront alors supprims 'e $1CW%4"L&C$2%&@.
PostgreSQL est !apable 'e fournir !ette information 0 travers la variable `r.
&ptions les plus intressantes:
' pour envo;er 'es informations 'e 'bogage sur st'err.
s 'elai entre 'eu+ vrifi!ations.
t fi!hier[trigger pour arrBter la vrifi!ation.
w 'elai[ma+- 'lai ma+imum avant l,aban'on 'e la r!upration.
7.(R walmgr
&util !rit en P;thon par la so!it SH;pe pour ses besoins propres
Cet outil s,installe sur les 'eu+ serveurs- le maEtre !omme l,es!lave
La !onfiguration 'es serveurs PostgreSQL n,a pas besoin ',Btre mo'ifie
Plusieurs mo'es ',e+!ution: setup- ba!Hup- restore- s;n! et boot
$ttention la 'o!umentation est minimale
2'" / 275 http://www.bull-formation.om

Administration PostgreSQL
La page offi!ielle 'u pro*et se trouve sur le site 'e SH;pe :
http://pgfoun'r;.org/pro*e!ts/sH;tools
7.(O 1e!omman'ations gnrales
Pren're le temps]
2ester rguli0rement les pro!'ures
Surveiller l,impa!t sur les performan!es
Quel /ue soit le mo;en 'e sauvegar'e !hoisi- il est essentiel 'e pren're le temps 'e se
'o!umenter et 'e tester la solution !hoisie afin 'e ne pas avoir 'e surprises lors/u,un
vrai probl9me arrive.
%l est essentiel ',!rire 'es pro!'ures 'e restauration /ui ont t testes et vali'es.
$ttention 0 bien pren're en !onsi'ration une ventuelle 'gra'ation 'e performan!es
'u moteur 'e 'onnes lors 'es oprations 'e sauvegar'es.
2'5 / 275 http://www.bull-formation.om

Administration PostgreSQL
R &utils 'e sauvegar'e e+ternes
%l peut Btre intressant 'e !oupler les sauvegar'es 'es bases 'e 'onnes
<SQL- sauvegar'es 'es fi!hiers? ave! 'es outils 'e sauvegar'e. Ce!i a
plusieurs avantages :
$r!hivage 'es 'onnes sur un serveur tiers
.estion 'es sauvegar'es <rotation 'es sauvegar'es?
Fa!ilit pour la restauration 'es ar!hives
2'# / 275 http://www.bull-formation.om

Administration PostgreSQL
O =atri!e
Simpli!it Coupure 'e
servi!e
1estauration
!opie 0 froi'
facile longue ra'ide
snapshot FS
facile aucune ra'ide
pg['ump
facile aucune lente
rs;n! ^ !opie 0
froi'
mo9en courte ra'ide
P%21
leve aucune mo9en
Xarm Stan'b;
com'le@e aucune instantane
1etrouve: !e tableau 'ans la base 'e !onnaissan!es 'e #alibo :
https://support.'alibo.!om/Hb/matri!e['es[te!hni/ues[sauvegar'es
2'7 / 275 http://www.bull-formation.om

Administration PostgreSQL
M Con!lusion
PostgreSQL propose un gran' nombre 'e solutions pour la sauvegar'e et
la restauration- toutes !ohrentes- la plupart 0 !hau'
PostgreSQL propose mBme 'es solutions 'e rpli!ation grQ!e au Log
S+!pp!ng et Log Stream!ng
M.( Questions
@,hsite: pas- !,est le moment )
2'$ / 275 http://www.bull-formation.om

Administration PostgreSQL
ravau# Prati+ues
2'% / 275 http://www.bull-formation.om

Administration PostgreSQL
( cnon!s
(.( Sauvegar'es SQL
(.(.( Sauvegar'e SQL ',une base
Sauvegar'er la base 'e 'onnes !ave au format !ustom 0 l,ai'e 'e pg5dump 'ans le
fi!hier : J/var/lib/pgs/l/ba!Hups/base[!ave.pg['umpJ.
(.(.3 Sauvegar'e SQL 'e toutes les bases
Sauvegar'er toutes les bases 'e 'onnes 'u !luster PostgreSQL 0 l,ai'e 'e pg5dumpall
'ans le fi!hier J/var/lib/pgs/l/ba!Hups/base[all.pg['ump.g:J.
La sauvegar'e 'oit Btre :ippe.
(.(.5 Sauvegar'e SQL 'e tables
Sauvegar'er la table sto$E 'ans le fi!hier
J/var/lib/pgs/l/ba!Hups/table[sto!H.pg['umpJ au format Iplain te+tJ.
Crer un s!ript /ui sauvegar'e toutes les tables ',une base 'ans 'es fi!hiers spars
nomms table5_nom5table:6pg5dump.
(.3 1estaurations SQL
(.3.( 1estauration ',une base 'e 'onnes
1estaurer la base 'e 'onnes $ave 'ans une nouvelle base 'e 'onnes nomme $ave5'
en utilisant le fi!hier 'e sauvegar'e Ibase[!ave.pg['umpJ. Puis renommer la base 'e
'onnes $ave en $ave5old et la base 'e 'onnes $ave5' en $ave.
(.3.3 1estauration ',une table
D partir 'e la sauvegar'e 'e la partie (.(- restaurer la table sto$E.
(.3.5 =igration 'e 'onnes
Copier les 'onnes 'e la base $ave 'ans une nouvelle base $ave5test.
2&' / 275 http://www.bull-formation.om

Administration PostgreSQL
(.5 Sauvegar'es P%21
(.5.( Sauvegar'e
=ettre en pla!e l,ar!hivage 'es &ALs 'ans J/var/lib/pgs/l/ba!Hups/X$LJ.
Crer la table suivante :
CREATE TABLE dummy (id serial, libelle text);
c!rire un s!ript /ui ins9re une gran'e /uantit 'e 'onnes 'ans !ette table et vrifier
/ue les fi!hiers &AL sont bien gnrs 'ans le rpertoire ',ar!hivage. Laisser le s!ript
s,e+!uter pen'ant la 'ure 'e la sauvegar'e 'e la base 'e 'onnes.
Sauvegar'er la base 'e 'onnes 0 l,ai'e ',un utilitaire ',ar!hivage <tar par e+emple?. D
la fin 'e la sauvegar'e- relever l,i' 'u 'ernier lment insr 'ans la table dumm%.
$tten're /u,un nouveau fi!hier 'e &AL soit engen'r 'ans le rpertoire ',ar!hivage- puis
arrBter l,insertion 'es 'onnes 'ans la table dumm%. <il est aussi possible 'e for!er la
bas!ule ave! sele$t pg5sw!t$+59log<=?
(.5.3 1estauration
1enommer le rpertoire J/var/lib/pgs/l/'ataJ en J/var/lib/pgs/l/'ata.ol'J.
1estaurer la base 'e 'onnes en utilisant la sauvegar'e 0 !hau' et les &ALs.
1!uprer l,i' 'u 'ernier lment insr 'ans la table dumm%. 4rifier /ue !et i' est
suprieur 0 l,i' relev lors 'e la fin 'e la sauvegar'e.
(.6 =ise en pla!e 'u ,,Log Shipping,,
Utiliser un autre PC pour mettre en pla!e le LogS+!pp!ng. $pr9s /uel/ues a!tions sur
le serveur maEtre- arrBter le mo'e 'e restauration sur l,es!lave.
4rifier /ue l,an!ien es!lave a 'es 'onnes 0 *our.
2&& / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Solutions
3.( Sauvegar'es SQL
3.(.( Sauvegar'e SQL ',une base
Sauvegar'er la base 'e 'onnes !ave au format custom 0 l,ai'e 'e pg5dump 'ans le
fi!hier : J/var/lib/pgs/l/ba!Hups/base[!ave.pg['umpJ
Se logguer ave! l,utilisateur postgres- puis e+!uter la !omman'e suivante :
$ pg_dump -Fc cave , /var/lib/pgsql/backups/base_cave.pg_dump
3.(.3 Sauvegar'e SQL 'e toutes les bases
Sauvegar'er toutes les bases 'e 'onnes 'u !luster PostgreSQL 0 l,ai'e 'e pg5dumpall
'ans le fi!hier : J/var/lib/pgs/l/ba!Hups/base[all.pg['ump.g:J
Se logguer ave! l,utilisateur postgres- puis e+!uter la !omman'e suivante :
$ pg_dumpall 5 g8#* , base_all.pg_dump.gz
3.(.5 Sauvegar'e SQL 'e tables
Sauvegar'er la table sto$E 'ans le fi!hier
J/var/lib/pgs/l/ba!Hups/table[sto!H.pg['umpJ :
$ pg_dump -t stock cave , /var/lib/pgsql/backups/table_stock.pg_dump
Crer un s!ript /ui sauvegar'e toutes les tables ',une base 'ans 'es fi!hiers spars
nomms Itable[mnom[tableK.pg['umpJ :
#!%bin%bas(
LIST_TABLES=;psql -U caviste -t -c '\dt' cave 5 a/k '{print }';
4+r _table #' $LIST_TABLES; d+
backup=/var/lib/pgsql/backups/table_$_table.pg_dump
pg_dump -t $_table cave , $backup
d+'
2&2 / 275 http://www.bull-formation.om

Administration PostgreSQL
3.3 1estaurations SQL
3.3.( 1estauration ',une base 'e 'onnes
1estaurer la base 'e 'onnes $ave 'ans une nouvelle base 'e 'onnes nomme $ave5'
en utilisant le fi!hier 'e sauvegar'e base5$ave6pg5dump :
$ createdb -O caviste cave2
$ pg_restore -Fc -d cave2 /var/lib/pgsql/backups/base_cave.pg_dump
1enommer la base 'e 'onnes $ave en $ave5old et la base 'e 'onnes $ave5' en
$ave :
postgres=> ALTER DATABASE cave RENAME TO cave_old;
ALTER DATABASE
postgres=> ALTER DATABASE cave2 RENAME TO cave;
ALTER DATABASE
3.3.3 1estauration ',une table
D partir 'e la sauvegar'e 'e la partie (.(- restaurer la table sto$E :
$ pg_restore -d cave -c -t stock /var/lib/pgsql/backups/base_cave.pg_dump
3.3.5 =igration 'e 'onnes
Copier les 'onnes 'e la base $ave 'ans une nouvelle base $ave5test :
$ createdb -O caviste cave_test
$ pg_dump -Fc cave 5 pg_restore -d cave_test
3.5 Sauvegar'es P%21
3.5.( Sauvegar'e
2outes les oprations 'e sauvegar'e sont e+!utes ave! l,utilisateur postgres.
Lors/u,un autre utilisateur est utilis- !e!i est pr!is e+pli!itement.
Pour mettre en pla!e l,ar!hivage 'es X$Ls 'ans CvarCl!bCpgs4lCba$EupsC&AL-
positionner la variable ar$+!ve5$ommand !omme suit 'ans le fi!hier
CvarCl!bCpgs4lCdataCpostgres4l6$on7 :
ar$+!ve5$ommand ? 1$p SMpS CvarCl!bCpgs4lCba$EupsC&ALCSM7S1
(. Crer le rpertoire CvarCl!bCpgs4lCba$EupsC&AL :
2&! / 275 http://www.bull-formation.om

Administration PostgreSQL
$ mkd#r /var/lib/pgsql/backups/WAL
3. Puis faire relire la !onfiguration 0 PostgreSQL <ave! l,utilisateur root? :
$ /etc/init.d/postgresql reload
5. Crer la table temporaire dumm% :
$ psql -U caviste cave
cave=> CREATE TABLE dummy (id serial, libelle text);
S!ript /ui ins9re une gran'e /uantit 'e 'onnes 'ans la table dumm% :
#!%bin%bas(

/3#( tr.
d+
cat 00_QUERY 5 psql cave
INSERT INTO dummy %libelle&
SELECT CURRENT_TIMESTAMP - %v 55' minutes'&::interval
FROM generate_series%1,1000& AS t%v&
_QUERY
$(* 1
d+'
6. 4rifier /ue les fi!hiers &AL sont bien gnrs 'ans le rpertoire ',ar!hivage :
$ ($ -l /var/lib/pgsql/backups/WAL/
7. #marrer la sauvegar'e :
$ psql postgres
postgres=> SELECT pg_start_backup('backup_YYYY-MM-DD-hh-mm');
R. Sauvegar'er la base 'e 'onnes :
$ tar -cvhzf backups/backup_YYYY-MM-DD-hh-mm.tgz data
O. D la fin 'e la sauvegar'e- relever l,i' 'u 'ernier lment insr 'ans la table dumm% :
$ psql -U caviste cave
cave=> SELECT MAX(id) FROM dummy;
2&" / 275 http://www.bull-formation.om

Administration PostgreSQL
M. $rrBter la sauvegar'e :
$ psql postgres
postgres=> SELECT pg_stop_backup();
L. $tten're /u,un nouveau fi!hier 'e &AL soit gnr 'ans le rpertoire ',ar!hivage- puis
arrBter l,insertion 'es 'onnes 'ans la table dumm%.
3.5.3 1estauration
2outes les oprations 'e restauration sont e+!utes ave! l,utilisateur postgres.
Lors/u,un autre utilisateur est utilis- !e!i est pr!is e+pli!itement.
(. Stopper le postmaster :
$ k#((a(( postmaster
3. 1enommer le rpertoire CvarCl!bCpgs4lCdata en CvarCl!bCpgs4lCdata6old :
$ m1 /var/lib/pgsql/data /var/lib/pgsql/data.old
5. 1estaurer l,a!hive 'e la 'erni9re sauvegar'e :
$ cd /var/lib/pgsql
$ tar xzvf backups/backup_YYYY-MM-DD-hh-mm.tgz
6. "ffa!er les an!iens *ournau+ :
$ rm -f data/pg_xlog/00<
7. Copier les 'erniers fi!hiers 'e logs 'u rpertoire ol' :
$ c* data.old/pg_xlog/00< data/pg_xlog
R. Crer le fi!hier dataCre$over%6$on7 !ontenant les informations suivantes :
restore_command = 'cp /var/lib/pgsql/backups/WAL/"%f" "%p"'
O. 1e'marrer le serveur PostgreSQL <ave! l,utilisateur root? :
$ /etc/init.d/postgresql start
M. 4rifier /ue la restauration est termine :
2&5 / 275 http://www.bull-formation.om

Administration PostgreSQL
$ ($ data/recovery<
&n 'evrait trouver dataCre$over%6done.
L. 1in'e+er les tables 'e la base !ave :
$ psql cave
cave=> REINDEX DATABASE cave;
(F. 4rifier les 'onnes et pren're l,i' 'u 'ernier lment insr 'ans la table dumm% :
$ psql -U caviste cave
cave=> SELECT MAX(id) FROM dummy;
3.6 =ise en pla!e 'u ,,Log Shipping,,
(. =ettre en pla!e l,i'entifi!ation SSW sans mot 'e passe :
$ $. - postgres
$ $$36k=g'
$ $c* ~/.ssh/id_rsa.pub postgres>autreserveur:~/
$ $$3 postgres>pdel0049
%saisir le mot de passe&
$ mkd#r -p ~/.ssh
$ cat ~/id_rsa.pub ,, ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub
$ )#t
3. Crer le rpertoire /ui va !ontenir les *ournau+ ar!hivs :
$ $$3 root>pdel0049
%saisir le mot de passe&
$ mkd#r -p /datas/shipped_logs
$ c3+/' postgres:postgres /datas/shipped_logs
$ c3m+d 700 /datas/shipped_logs
$ )#t
5. Configurer le fi!hier postgres4l6$on7 :
ar$+!ve5$ommand ? 1s$p Mp postgres`autreserveur8CdatasCs+!pped5logsC
M71
ar$+!ve5t!meout ? ](
6. 1e!hargement 'e la !onfiguration :
$ /etc/init.d/postgresql reload
2&# / 275 http://www.bull-formation.om

Administration PostgreSQL
7. Crer la !opie 'e sauvegar'e:
$ $. - postgres
$ psql -c "SELECT pg_start_backup('sauve_1')"
$ tar cvj /datas , /datas/pgdatas.tar.bz2
$ psql -c "SELECT pg_stop_backup()"
R. 1estaurer !ette !opie 'e sauvegar'e sur le serveur es!lave :
$ $. - postgres
$ $c* /datas/pgdatas.tar.bz2 postgres>autreserveur:/datas
$ $$3 postgres>autreserveur
$ cd /
$ tar xvfj /datas/pgdatas.tar.bz2
$ c3+/' -R postgres:postgres /datas/pg<
$ 4#'d /datas/pg< -type f -exec c3m+d 600 '{}' \;
$ 4#'d /datas/pg< -type d -exec c3m+d 700 '{}' \;
O. 1!uprer l,outil pg5standb%
M. Configurer la restauration. Pour !ela- a*outer 'ans le fi!hier re$over%6$on7 la
ligne suivante :
restore5$ommand?1pg5standb% Dd DE '55 Dt CtmpCre$over%stop67!le
CdatasCs+!pped5logs M7 Mp ':: standb%6log1
L. Lan!er le serveur es!lave :
$ pg_ctl start
(F. 4rifier /ue la rpli!ation a bien lieu :
$ ta#( -f /logs/pg_standby.log
((. $rrBter la restauration :
$ t+.c3 /tmp/recoverystop.file
2&7 / 275 http://www.bull-formation.om

Administration PostgreSQL
2&$ / 275 http://www.bull-formation.om

Administration PostgreSQL
PostgreSQL : ;onitoring
2&% / 275 http://www.bull-formation.om

Administration PostgreSQL
( %ntro'u!tion
La visualisation est !ru!iale
3 appro!hes <mo'ules vs. U toutenun N?
1troanal;se <pgFouine / pgSnap?
L,a'ministrateur 'e base 'e 'onne est responsable 'e la mise en pla!e ',un s;st9me 'e
surveillan!e.
Une bonne politi/ue 'e monitoring est la !lef 'e voete ',un s;st9me prenne.
#eu+ philosophies 'e monitoring s,affrontent :
L,appro!he U toutenun N vise 0 utiliser un logi!iel uni/ue <Oabb!9 par e+emple?-
!harg 'e tous les aspe!ts 'u monitoring.
L,appro!he U mo'ulaire N privilgie l,utilisation 'e plusieurs petits programmes-
!ha!un prenant en !harge une tQ!he pr!ise.
"n gnral- on !onsi'9re /ue la se!on'e appro!he est plus a'apte au monitoring ',un
serveur uni/ue. C contrario- l,appro!he U toutenun N se rv9le plus avantageuse 'ans
le !a're 'e la surveillan!e ',un par! informati/ue important.
"n !omplment- 'es outils permettent 'e visualiser l,tat 'e la base a posteriori- soit
en se basant sur les *ournau+ appli!atifs <logs?- soit en s!rutant les tables s;st9mes.
(.( Li!en!e Creative Commons CCBA@CS$
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les
!on'itions suivantes :
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
Cette formation <'iapositives- manuels et travau+ prati/ues? est sous li!en!e CC-BY-NC-
SA.
4ous Btes libres 'e re'istribuer et/ou mo'ifier !ette !ration selon les !on'itions
suivantes :
22' / 275 http://www.bull-formation.om

Administration PostgreSQL
Paternit
Pas ',utilisation !ommer!iale
Partage 'es !on'itions initiales 0 l,i'enti/ue
4ous 'eve: !iter le nom 'e l,auteur original 'e la mani9re in'i/ue par l,auteur 'e
l,Cuvre ou le titulaire 'es 'roits /ui vous !onf9re !ette autorisation <mais pas ',une
mani9re /ui suggrerait /u,ils vous soutiennent ou approuvent votre utilisation 'e
l,Cuvre?.
4ous n,ave: pas le 'roit ',utiliser !ette !ration 0 'es fins !ommer!iales.
Si vous mo'ifie:- transforme: ou a'apte: !ette !ration- vous n,ave: le 'roit 'e
'istribuer la !ration /ui en rsulte /ue sous un !ontrat i'enti/ue 0 !elui!i.
D !ha/ue rutilisation ou 'istribution 'e !ette !ration- vous 'eve: faire apparaEtre
!lairement au publi! les !on'itions !ontra!tuelles 'e sa mise 0 'isposition. La meilleure
mani9re 'e les in'i/uer est un lien vers !ette page web.
Cha!une 'e !es !on'itions peut Btre leve si vous obtene: l,autorisation 'u titulaire 'es
'roits sur !ette Cuvre.
1ien 'ans !e !ontrat ne 'iminue ou ne restreint le 'roit moral 'e l,auteur ou 'es
auteurs.
Le te+te !omplet 'e la li!en!e est 'isponible 0 !ette a'resse:
http://!reative!ommons.org/li!enses/b;n!sa/3.F/fr/legal!o'e
22& / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Plan
Partie ( : Politi/ue 'e suivi
Partie 3 : Statisti/ues
Partie 5 : $nal;se 'es *ournau+ appli!atifs
Partie 6 : 4isualisation
Partie 7 : Surveillan!e
222 / 275 http://www.bull-formation.om

Administration PostgreSQL
5 Partie ( : Politi/ue 'e suivi
$ppele aussi mon!tor!ng.
Pour/uoi G
Qui G
Quels !rit9res G
Quels outils G
Pour+uoi < %l est n!essaire 'e 'finir les ob*e!tifs 'e la surveillan!e : 'te!ter les
probl9mes 'e performan!e- prvenir les pannes- remonter les alertes en !as 'e
probl9me.
Qui < #terminer les a!teurs impli/us 'ans la surveillan!e 'u s;st9me.
Quels crit0res < #terminer les bons in'i!ateurs 'e l,tat 'e sant 'u s;st9me <CPU-
mmoire- a!!9s 'is/ues]?.
Quels outils < Choisir les bons logi!iels parmi le panel 'e solutions.
5.( &b*e!tifs 'u suivi
$mliorer les performan!es
$mliorer l,appli!atif
$nti!iper
Prvenir les in!i'ents
1agir vite en !as 'e crash
%nvestiguer
Lors ',une phase ',optimisation- il est essentiel 'e 'isposer ',outils pour mesurer les
gains 'e performan!e.
La surveillan!e 'u s;st9me permet 'e !orriger 'es erreurs au sein 'u !o'e middle+are
par e+emple en reprant 'es !as 'e mauvaise gestion 'e !onne+ions ou en i'entifiant
les re/uBtes lentes <slo+ ,ueries?.
Un suivi rgulier 'es statisti/ues 'u serveur n notamment la volumtrie et le nombre 'e
!onne+ions n permet 'e prvoir les volutions n!essaires 'u s;st9me : a!hat 'e
22! / 275 http://www.bull-formation.om

Administration PostgreSQL
matriel- a'aptations 'u !o'e appli!atif- !ration ',in'e+- et!]
Les solutions 'e monitoring volues <Nag!os- Oabb!9? permettent 'e surveiller
PostgreSQL et 'e '!len!her 'es alertes <par email- S=S]? 'e mani9re prventive.
Les statisti/ues- les *ournau+ appli!atifs et les graphes sont parti!uli9rement utiles en
!as 'e panne 'u serveur. %ls permettent ',isoler rapi'ement la nature 'u probl9me et
a!!l9rent la rsolution 'es in!i'ents.
PostgreSQL 'ispose ',outils internes <2-PLAIN ANAL;O2? et e+ternes <Pg>ou!ne? pour
anal;ser puis !orriger les erreurs et les !ontreperforman!es.
5.3 Utilisateurs !on!erns
#veloppeur <debug- tuning?
$'ministrateur s;st9me <surveillan!e- /ualit 'e servi!e?
#B$ / "+pert P. <maintenan!e- volutions- rparation?
Le 'veloppeur 'oit pouvoir visualiser l,a!tivit 'e la base 'e 'onnes. %l peut ainsi
!ompren're l,impa!t 'u !o'e appli!atif sur la base. "n outre- il peut Btre amen 0
anal;ser !ertaines re/uBtes SQL afin 'e les optimiser.
2;pi/uement- le 'veloppeur 'oit avoir a!!9s au+ graphes 'e =unin et 0 l,outil
PgFouine.
L,a'ministrateur s;st9me est !harg 'e la /ualit 'u servi!e. Pour garantir la
'isponibilit 'u serveur- il !onfigure et utilise un outil ',alerte tel /ue @agios ou Zabbi+.
L,a'ministrateur 'e la base 'e 'onnes est garant 'es performan!es 'e la base 'e
'onnes. %l anal;se les statisti/ues !ontenues 'ans les tables s;st9mes et peut
galement utiliser PgFouine pour faire un au'it 'es re/uBtes les plus !oeteuses.
22" / 275 http://www.bull-formation.om

Administration PostgreSQL
5.5 %n'i!ateurs 0 surveiller <(/6?
%l est intressant 'e surveiller les in'i!ateurs suivants pour garantir 'e
bonnes performan!es pour le s;st9me :
le nombre 'e !onne+ions \
les entres/sorties sur le 'is/ue \
la !harge 'u CP0 \
l,utilisation 'e la #A. \
les re/uBtes fr/uentes <temps !umul ',e+!ution lev?.
les re/uBtes lentes <temps unitaire ',e+!ution lev?.
5.6 %n'i!ateurs 0 surveiller <3/6?
%n'i!ateurs 0 surveiller pour garantir la 'isponibilit 'u servi!e :
espa!e 'is/ue 'isponible \
utilisation 'es 'is/ues \
visualiser les verrous.
Pour plus ',information !on!ernant la !onsommation ',espa!e 'is/ue- la 'o!umentation
offi!ielle 'onne un ensemble 'e re/uBtes sur le !atalogue s;st9me. 4oir
http://'o!s.postgres/l.fr/!urrent/'isHusage.html
5.7 %n'i!ateurs 0 surveiller <5/6?
%n'i!ateurs 0 surveiller pour les #B$ PostgreSQL :
la volumtrie \
les re/uBtes lentes ou e+!utes tr9s souvent \
le ratio le!ture/!riture \
le ratio cache hit-miss.
225 / 275 http://www.bull-formation.om

Administration PostgreSQL
5.R %n'i!ateurs 0 surveiller <6/6?
%l est intressant 'e mettre en pla!e 'es alertes 'ans les !as suivants :
sura!tivit ou nona!tivit 'u serveur \
seuil ',o!!upation 'u 'is/ue atteint <LF`? \
temps 'e rponse 'u serveur trop long.
5.O &utils internes
PostgreSQL propose un !ertain nombre ',in'i!ateurs :
les tables s;st9me \
les vues s;st9me \
les fon!tions \
les logs ',a!tivit.
PostgreSQL sto!He un ensemble ',informations <mta'onnes 'es s!hmas- informations
sur les tables et les !olonnes- 'onnes 'e suivi interne- et!.? 'ans 'es tables s;st9me
/ui peuvent Btre !onsultes par les a'ministrateurs.
PostgreSQL fournit galement 'es vues !ombinant 'es informations puises 'ans
'iffrentes tables s;st9mes. Ces vues simplifient le suivi 'e l,a!tivit 'e la base.
Une 'es vues les plus utiles pour surveiller l,a!tivit 'es bases 'e 'onnes est
pg5lo$Es. "lle permet 0 l,a'ministrateur s;st9me 'e visualiser 'es informations sur les
verrous restant 'ans le gestionnaire 'es verrous.
PostgreSQL propose un ventail 'e fon!tions prenregistres /ui fa!ilitent la remonte
',informations. Par e+emple- la fon!tion pg5s!Ne5prett%<= est l0 pour 'onner un
affi!hage U humain N <!omme la !omman'e uni+ d7 D+ par e+emple?.
PostgreSQL est !apable 'e tra!er un gran' nombre ',informations /ui peuvent Btre
e+ploites pour surveiller l,a!tivit 'e la base 'e 'onnes.
$ttention toutefois 0 ne pas tra!er trop ',informations en pro'u!tion !ar !e!i pourrait
affe!ter les performan!es gnrales 'u s;st9me.
22# / 275 http://www.bull-formation.om

Administration PostgreSQL
5.M &utils e+ternes
anal;seur : PgFouine \
visualisation : =unin \
alertes : @agios \
visualisation ^ alertes : Zabbi+.
Xin'ows : http://www.mi!rosoft.!om/te!hnet/s;sinternals/
pgFouine est un anal;seur 'e *ournau+ appli!atifs utilis pour pro'uire 'es rapports
'taills 0 partir ',un *ournal 'e PostgreSQL. %l peut ai'er 0 'terminer les re/uBtes 0
optimiser pour amliorer les performan!es 'e l,appli!ation base sur PostgreSQL.
=unin est une appli!ation !lient/serveur 'e mtrologie. "lle re!ueille les informations
sur !ha!une 'es ma!hines 0 surveiller et prsente toutes les informations rapatries
sous forme graphi/ue 'ans une interfa!e web.
@agios est un outil 'e surveillan!e rseau. %l utilise S@=P et permet 'e faire remonter
'es alertes au+ oprateurs.
Zabbi+ est une solution 'e surveillan!e 'e haut niveau /ui offre 'es fon!tionnalits 'e
monitoring- ',alertes et 'e visualisation.
5.L Prre/uis
Pour assurer les tQ!hes 'e suivi 'e la base 'e 'onnes- il faut au
minimum :
Sauvegar'er les *ournau+ appli!atifs \
Colle!ter 'es statisti/ues.
PostgreSQL supporte plusieurs mtho'es pour la *ournalisation 'es messages 'u serveur-
'ont la sortie ',erreur <stderr?- s%slog- eventlog <*ournal 'es vnements
sp!ifi/ue 0 Xin'ows? et $svlog. Par 'faut- seule la sortie stderr est utilise.
PostgreSQL 'ispose ',un !olle!teur 'e statisti/ues /ui fournit 'es rapports ',information
sur l,a!tivit 'u serveur. $!tuellement- le r!uprateur peut !ompter les a!!9s au+
tables et in'e+ 0 la fois en terme 'e blo!s 'is/ue et 'e lignes in'ivi'uelles. Les
statisti/ues sont sto!Hes 'ans 'es tables s;st9mes.
227 / 275 http://www.bull-formation.om

Administration PostgreSQL
6 Partie 3 : Statisti/ues
Sont abor's les points suivants :
!onfiguration \
visualisation 'es statisti/ues \
fon!tions ',a!!9s au+ statisti/ues.
Le r!uprateur 'e statisti/ues 'e PostgreSQL rapporte 'es informations sur l,a!tivit 'u
serveur. %l peut !ompter l,a!!9s au+ tables et in'e+ en terme 'e blo!s 'is/ues et 'e
lignes in'ivi'uelles. %l permet galement 'e 'terminer la !omman'e en !ours
',e+!ution par les pro!essus serveur.
6.( Statisti/ues : !onfiguration
tra$E5a$t!v!t!es
Les param9tres suivants !ontrPlent la /uantit ',informations rellement
envo;es au r!uprateur :
update5pro$ess5t!tle
tra$E5$ounts
tra$E5a$t!v!t!es permet 'e r!uprer les informations ',a!tivit- prin!ipalement
'isponibles 'ans la table Ipg[stat[a!tivit;J.
update5pro$ess5t!tle a!tive la r!upration 'es statisti/ues sur les !omman'es en
!ours ',e+!ution par !ha/ue session. Pour 'es raisons 'e s!urit- !es statisti/ues ne
sont visibles /ue pour les super utilisateurs et pour le propritaire 'e la session.
$n!iennement stats5$ommand5str!ng *us/u,0 la version M.5.
tra$E5$ounts a!tive les statisti/ues ',a!!9s au niveau 'es lignes et 'es blo!s 'is/ues.
Si !ette option est a!tive- les 'onnes pro'uites sont a!!essibles via la famille 'e vues
s;st9me pg5stat et pg5stat!o. $n!iennement stats5blo$E5level et
stats5row5level *us/u,0 la version M.5.
22$ / 275 http://www.bull-formation.om

Administration PostgreSQL
6.3 Statisti/ues : visualisation <(/O?
pg5stat5a$t!v!t%
pg5stat5repl!$at!on
pg5stat5bgwr!ter
pg5stat5database
pg5stat5database5$on7l!$ts
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues :
pg_stat_activity : Statisti/ues sur les pro!essus 'u moteur 'e 'onnes.
Une ligne par pro!essus serveur- affi!hant l,&%# 'e la base 'e 'onnes- le nom 'e la
base- l,%# 'u pro!essus- l,&%# 'e l,utilisateur- son nom- la re/uBte en !ours- le fait /ue le
pro!essus en est attente 'e la libration ',un verrou- le moment ob a 'but la
transa!tion- le moment ob a !ommen! l,e+!ution 'e la re/uBte- le moment ob le
!lient s,est !onne!t- ainsi /ue l,a'resse et le numro 'e port 'u !lient.
La taille ma+imum 'e la re/uBte 'pen' 'e la variable
tra$E5a$t!v!t%54uer%5s!Ne.
pg_stat_replication : Statisti/ues sur les es!laves ',un serveur maEtre
Cette statisti/ue apparaEt ave! la version L.(.
pg_stat_bgwriter :
Une seule ligne 'onnant 'es statisti/ues pour tout le !luster sur l,a!tivit 'u pro!essus
',!riture en tQ!he 'e fon' : nombre 'e points 'e vrifi!ation planifis par PostgreSQL-
nombre 'e points 'e vrifi!ation 'eman's- tampons !rits par les points 'e
vrifi!ation et par les passes 'e netto;age- et le nombre 'e fois ob le pro!essus
',!riture en tQ!he 'e fon' a stopp une passe 'e netto;age par!e /u,il a !rit trop 'e
tampons. La vue in!lut aussi 'es statisti/ues sur les tampons partags: le nombre 'e
tampons !rits par les pro!essus serveur <!,est0'ire par autre !hose /ue le pro!essus
',!riture en tQ!he 'e fon'- et 'on! sus!eptibles ',engen'rer une attente per!eptible
par un utilisateur? et le nombre total 'e tampons allous.
#isponible 0 partir 'e la version M.5.
pg_stat_database : Statisti/ues gnrales sur les bases 'e 'onnes 'u cluster.
Une ligne par base 'e 'onnes- affi!hant l1*ID 'e la base 'e 'onnes- son nom- le
nombre 'e pro!essus serveur a!tifs !onne!ts 0 !ette base- le nombre total 'e
transa!tions vali'es et le nombre 'e !elles /ui ont t annules- le nombre total 'e
blo!s lus par le s;st9me ',e+ploitation <'u 'is/ue ou 'u !a!he s;st9me?- et le nombre
total 'e blo!s lus 'u !a!he PostgreSQL.
22% / 275 http://www.bull-formation.om

Administration PostgreSQL
pg_stat_database_conflicts : Statisti/ues sur les !onflits entre l,appli!ation 'e la
rpli!ation et l,e+!ution 'es re/uBtes en le!ture seule sur les es!laves.
Cette statisti/ue apparaEt ave! la version L.(.
6.5 Statisti/ues : visualisation <3/O?
pg5stat5all5tables
pg5stat5s%s5tables
pg5stat5user5tables
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues :
pg_stat_all_tables : Statisti/ues sur les tables 'e la base !ourante.
Pour !ha/ue table 'ans la base 'e 'onnes en !ours- l,&%# 'e la table- le nom 'u s!hma
et 'e la table- le nombre 'e par!ours s/uentiels raliss- le nombre 'e lignes a!tives
r!upres par !es par!ours s/uentiels- le nombre 'e par!ours ',in'e+ raliss- le
nombre 'e lignes a!tives r!upres par !es par!ours ',in'e+ et le nombre ',insertions-
mises 0 *our et suppressions 'e lignes.
pg_stat_sys_tables : Statisti/ues sur les tables utilisateurs. 2;pe ',informations
i'enti/ues 0 pg5stat5all5tables- mais pour les tables s;st9me uni/uement.
pg_stat_user_tables : Statisti/ues sur les tables utilisateurs. 2;pe ',informations
i'enti/ues 0 pg5stat5all5tables- mais pour les tables utilisateurs uni/uement.
6.6 Statisti/ues : visualisation <5/O?
pg5stat5all5!nde9es
pg5stat5s%s5!nde9es
pg5stat5user5!nde9es
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues :
pg_stat_all_indexes : %nformations gnrales sur l,utilisation 'es in'e+. Pour
!ha/ue in'e+ 'e la base 'e 'onnes en !ours- l1*ID 'e la table et 'e l,in'e+- le nom 'u
s!hma- 'e la table et 'e l,in'e+- le nombre 'e par!ours ',in'e+ initis sur !et in'e+- le
nombre ',entres 'e l,in'e+ renvo;es par !es par!ours ',in'e+- et le nombre 'e lignes
a!tives 'e table r!upres par !es par!ours ',in'e+.
2!' / 275 http://www.bull-formation.om

Administration PostgreSQL
pg_stat_sys_indexes : Statisti/ues sur l,utilisation 'es in'e+ 'es tables s;st9me. Le
t;pe ',informations est i'enti/ue 0 pg5stat5all5!nde9es- mais pour les in'e+ 'es
tables s;st9me uni/uement.
pg_stat_user_indexes : Statisti/ues sur l,utilisation 'es in'e+ 'es tables
utilisateurs. Le t;pe ',informations est i'enti/ue 0 pg5stat5all5!nde9es- mais pour
les in'e+ 'es tables utilisateurs uni/uement.
La !olonne i'+[s!an est parti!uli9rement intressante. Si elle vaut F- !,est
/ue l,in'e+ n,est *amais utilis- 'on! 0 priori un in'e+ inutile <0 !on'ition
/ue 8a ne soit pas un in'e+ uni/ue ou 'e !l primaire?.
6.7 Statisti/ues : visualisation <6/O?
pg5stat!o5all5tables
pg5stat!o5s%s5tables
pg5stat!o5user5tables
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues pour les IC* :
pg_statio_all_tables : Statisti/ues relatives au+ %/& effe!tues pour !ha!une 'es
tables 'e la base !ourante.
Pour !ha/ue table 'e la base 'e 'onnes en !ours <!e!i in!luant les tables "*AS"?-
l1*ID 'e la table- le nom 'u s!hma et 'e la table- le nombre 'e blo!s : 'e table lus 'u
'is/ue ou 'u !a!he s;st9me- 'e table lus 'u !a!he PostgreSQL- ',in'e+ lus 'u 'is/ue ou
'u !a!he s;st9me- ',in'e+ lus 'u !a!he PostgreSQL- et les mBmes statisti/ues pour la
table "*AS" asso!ie 0 la table prin!ipale <si !ette table "*AS" e+iste?.
pg_statio_sys_tables : Statisti/ues relatives au+ %/& effe!tus pour !ha!une 'es
tables s;st9me. Le t;pe ',informations 'isponibles est i'enti/ue 0 la vue
pg5stat!o5all5tables mais pour les tables s;st9me uni/uement.
pg_statio_user_tables : Statisti/ues relatives au+ IC* effe!tues pour !ha!une
'es tables utilisateurs. Le t;pe ',informations 'isponibles est i'enti/ue 0 la vue
pg5stat!o5all5tables mais pour les tables utilisateurs uni/uement.
2!& / 275 http://www.bull-formation.om

Administration PostgreSQL
6.R Statisti/ues : visualisation <7/O?
pg5stat!o5all5!nde9es
pg5stat!o5s%s5!nde9es
pg5stat!o5user5!nde9es
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues pour les IC* :
pg_statio_all_indexes : Statisti/ues relatives au+ IC* effe!tues pour !ha!un 'es
in'e+ 'e la base 'e 'onnes !ourante.
Pour !ha/ue in'e+ 'e la base 'e 'onnes en !ours- l1*ID 'e la table et 'e l,in'e+- le
nom 'u s!hma- 'e la table et 'e l,in'e+- le nombre 'e blo!s lus 'u 'is/ue ou 'u !a!he
'u s;st9me ',e+ploitation- et le nombre 'e blo!s lu 'u !a!he PostgreSQL.
pg_statio_sys_indexes : Statisti/ues relatives au+ IC* effe!tues pour !ha!un 'es
in'e+ 'es tables s;st9me. 2;pe ',information i'enti/ue 0 la vue
pg5stat!o5all5!nde9es mais pour les in'e+ 'es tables s;st9me uni/uement.
pg_statio_user_indexes : Statisti/ues relatives au+ IC* effe!tues pour !ha!un
'es in'e+ 'es tables utilisateurs. 2;pe ',information i'enti/ue 0 la vue
pg5stat!o5all5!nde9es mais pour les in'e+ 'es tables utilisateurs uni/uement.
6.O Statisti/ues : visualisation <R/O?
pg5stat!o5all5se4uen$es
pg5stat!o5s%s5se4uen$es
pg5stat!o5user5se4uen$es
Plusieurs vues pr'finies sont 'isponibles pour affi!her les rsultats 'e la r!upration
'e statisti/ues pour les IC* :
pg_statio_all_sequences : Statisti/ues relatives au+ IC* effe!tues pour !ha!une
'es s/uen!es.
Pour !ha/ue s/uen!e 'e la base 'e 'onnes en !ours- l1*ID 'e la s/uen!e- le nom 'u
s!hma et 'e la s/uen!e- le nombre 'e blo!s lus 'u 'is/ue ou 'u !a!he 'u s;st9me
',e+ploitation- et le nombre 'e blo!s lus 'u !a!he PostgreSQL.
pg_statio_sys_sequences : Statisti/ues relatives au+ IC* effe!tues pour !ha!une
'es s/uen!es s;st9me. 2;pe ',information i'enti/ue 0 la vue
pg5stat!o5all5se4uen$es mais pour les s/uen!es s;st9me.
2!2 / 275 http://www.bull-formation.om

Administration PostgreSQL
pg_statio_user_sequences : Statisti/ues relatives au+ IC* effe!tues pour
!ha!une 'es s/uen!es utilisateurs. 2;pe ',information i'enti/ue 0 la vue
pg5stat!o5all5se4uen$es mais pour les s/uen!es utilisateurs.
6.M Statisti/ues : visualisation <O/O?
pg5stat5user57un$t!ons
#isponible 0 partir 'e la version M.6- pg5stat5user57un$t!ons !ontient 'es
statisti/ues sur les fon!tions utilises.
Une ligne par fon!tion utilise- affi!hant l,&%# 'e la fon!tion- le nom 'u s!hma- le nom
'e la fon!tion- le nombre ',appels 'e la fon!tion- la 'ure ',e+!ution totale <fon!tion
et fon!tions appeles?- la 'ure ',e+!ution 'e la fon!tion seule.
6.L Statisti/ues : visualisation
Les vues ne sont pas 'es U images instantanes N
PGS"A"5S"A"5IN"2#/AL ? 5((ms- par 'faut
%l est important 'e savoir /ue l,information n,est pas mise 0 *our instantanment.
Cha/ue pro!essus serveur in'ivi'uel transmet le nouveau nombre ',a!!9s au niveau 'es
blo!s et 'es lignes au r!uprateur *uste avant l,attente ',une nouvelle !omman'e 'u
!lient.
#e plus- le r!uprateur met luimBme un nouveau rapport une fois par
PGS"A"5S"A"5IN"2#/AL millise!on'es. Cette valeur est 'finie 0 la !ompilation 'e
PostgreSQL.
6.(F Stats : !omman'es
pg5stat5get5db5numba$Eends<=
pg5stat5get5db59a$t5$omm!t<= et
pg5stat5get5db59a$t5rollba$E<=
pg5stat5get5db5blo$Es57et$+ed<= et
pg5stat5get5db5blo$Es5+!t<=
2!! / 275 http://www.bull-formation.om

Administration PostgreSQL
Un gran' nombre 'e fon!tions sont 'isponibles pour a!!'er au+ statisti/ues 'e la base.
Parmi !es fon!tions- on pourra trouver les statisti/ues gnrales 'e la base 'e 'onnes
ave! les fon!tions suivantes :
pg5stat5get5db5numba$Eends : nombre 'e pro!essus a!tifs
pg5stat5get5db59a$t5$omm!t et pg5stat5get5db59a$t5rollba$E : nombre
'e transa!tions vali'es et annules
pg5stat5get5db5blo$Es57et$+ed et pg5stat5get5db5blo$Es5+!t : nombre
'e r!uprations 'e blo!s 'is/ue- et 'e blo!s 'is/ue trouvs 'ans le !a!he.
"+emple 'e re/uBte utilise pour affi!her les P%# et les re/uBtes en !ours pour tous les
pro!essus serveur :
SELECT pg_stat_get_backend_pid(s.backendid) AS procpid,
pg_stat_get_backend_activity(s.backendid) AS current_query FROM (SELECT
pg_stat_get_backend_idset() AS backendid) AS s;
2!" / 275 http://www.bull-formation.om

Administration PostgreSQL
7 Partie 5 : anal;se 'e logs
Configuration 'es tra!es
"+emples
pg>ou!ne
Les alternatives 0 pg>ou!ne
7.( Configuration : ob tra!er G
log5dest!nat!on : st'err- !svlog et s;slog
logg!ng5$olle$tor :
log5d!re$tor%- log57!lename
log57!le5mode
log5rotat!on5age- log5rotat!on5s!Ne-
log5trun$ate5on5rotat!on
s%slog57a$!l!t%- s%slog5!dent
Param9tres 'e !onfiguration relatifs 0 la pro'u!tion 'e *ournau+ appli!atifs :
log5dest!nat!on : st'err et s;slog envoient les logs sur la sortie ',erreur ou s;slog
respe!tivement. !vslog permet ',envo;er les logs en format CS4 sur la sortie ',erreur.
Le logg!ng5$olle$tor permet 'e !apturer les tra!es 'ans log57!lename situ 'ans
log5d!re$tor% ave! une rotation selon les limites ',age et 'e taille
log5rotat!on5age et log5rotat!on5s!Ne. Si l,option
log5trun$ate5on5rotat!on est a!tive- un *ournal appli!atif e+istant ave! le mBme
nom /ue le nouveau *ournal 0 !rer est tron/u au lieu 'e !ontinuer 0 !rire 0 la fin.
log57!le5mode permet 'e pr!iser les 'roits 'u *ournal appli!atif <!e param9tre
apparaEt ave! la version L.(?.
s%slog57a$!l!t% et s%slog5!dent permettent- par ailleurs- 'e !onfiguration 'e
l,utilisation 'e s%slog pour tra!er les informations <si log5dest!nat!on est
positionn 0 s%slog?.
2!5 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.3 Configuration : /uan' tra!er G
$l!ent5m!n5messages- log5m!n5messages
log5error5verbos!t%
log5m!n5error5statement
log5autova$uum5m!n5durat!on
log5m!n5durat!on5statement
s!lent5mode
Ces param9tres sont utiliss pour 'terminer /uan' les informations 'oivent Btre
loggues :
Les param9tres $l!ent5m!n5messages et log5m!n5messages permettent 'e 'finir
le niveau 'e messages minimum 0 partir 'u/uel il faut logguer les informations. Les
valeurs vali'es sont D2B0G5- D2B0G\- D2B0G)- D2B0G'- D2B0GK- IN>*- N*"IC2-
&A#NING- 2##*#- L*G- >A"AL et PANIC.
Le niveau 'e 'tails !rits 'ans les logs pour !ha/ue message ',erreur tra! est !ontrPl
par le param9tre log5error5verbos!t%. Une instru!tion SQL a;ant !aus une erreur
sera enregistre 'ans le *ournal 'es tra!es si sa !riti!it 'passe le seuil 'fini par
log5m!n5error5statement- les valeurs vali'es tant D2B0G5- D2B0G\- D2B0G)-
D2B0G'- D2B0GK- IN>*- N*"IC2- &A#NING- 2##*#- L*G- >A"AL et PANIC.
PostgreSQL peut aussi tra!er les re/uBtes selon leur temps ',e+!ution.
log5autova$uum5m!n5durat!on permet 'e tra!er les a!tions e+!utes par le
pro!essus autova$uum si le temps pass 'passe le seuil in'i/u en millise!on'es.
log5m!n5durat!on5statement permet 'e tra!er les or'res SQL 'ont le temps
',e+!ution 'passe le seuil in'i/u en millise!on'es.
"nfin- le s!lent5mode e+!ute le serveur silen!ieusement. #ans !e mo'e les sorties
stan'ar' et ',erreur sont re'iriges 'ans le fi!hier postmaster6log !r 0 la ra!ine
'u rpertoire 'e 'onnes.
2!# / 275 http://www.bull-formation.om

Administration PostgreSQL
7.5 Configuration : /ue tra!er G
log5$onne$t!ons et log5d!s$onne$t!ons
log5durat!on
log5l!ne5pre7!9
log5statement
log5+ostname
log5$+e$Epo!nts
log5lo$E5wa!ts
log5temp57!les
Les param9tres log5$onne$t!ons et log5d!s$onne$t!ons permettent 'e tra!er les
!onne+ions russies et les '!onne+ions. Si log5durat!on est positionn 0 true- la
'ure ',e+!ution ',une instru!tion satisfaisant log5statement est tra!e.
Une !haEne 'e !ara!t9re peut Btre a*out au 'but 'e !ha!une 'es lignes 'e tra!es-
log5l!ne5pre7!9 permet 'e sp!ifier !ette !haEne /ui peut in!lure 'es *oHers.
log5+ostname permet ',utiliser le nom ',hPte plutPt /ue l,a'resse %P.
"nfin- le param9tre log5statement permet 'e !hoisir le t;pe ',instru!tion 0 tra!er-
les valeurs vali'es tant ddl- mod et all. &n peut aussi tra!er l,a!tivit 'u pro!essus
',!riture en tQ!he 'e fon' ave! log5$+e$Epo!nts- l,attente sur les verrous si une
session atten' un verrou plus /ue deadlo$E5t!meout ave! log5lo$E5wa!ts ou la
!ration 'e fi!hiers temporaires 'ont la taille 'passe le seuil <en Ho? in'i/u par
log5temp57!les.
7.6 Configuration : a!tiver s;slog
$!tiver s%slog 'ans le fi!hier postgres4l6$on7 :
log_destination = 'syslog'
logging_collector = off
silent_mode = on
2!7 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.7 Configuration : a!tiver les tra!es
2ra!er la 'ure 'e !ha/ue re/uBte- 'eu+ possibilits :
#ure et re/uBte- !ha!un sur une ligne :
log_duration = on
log_statement = 'all'
#ure et re/uBte sur la mBme ligne :
log_min_duration_statement = 0
"n a!tivant log5durat!on ave! log5statement 0 all- on tra!e toutes les re/uBtes
ave! leur 'ure- par e+emple :
LOG: statement: select true;
LOG: duration: 43.060 ms
Si on !onfigure log5m!n5durat!on5statement 0 :ro <pour tra!er les re/uBtes /ui
s,e+!utent 'urant plus 'e F ms- par !ons/uent toutes les re/uBtes?- on obtient 'es
tra!es 'e !e t;pe :
LOG: duration: 0.931 ms statement: select true;
7.R Configuration : e+emple
2ra!er les re/uBtes 'ont la 'ure ',e+!ution 'passe une minute :
log_min_duration_statement = 60000
log_duration = off
log_statement = 'none'
2!$ / 275 http://www.bull-formation.om

Administration PostgreSQL
7.O pgFouine : prsentation
pgFouine est un anal;seur 'e *ournau+ appli!atifs utilis pour gnrer 'es
rapports 'taills 0 partir :
',un *ournal appli!atif 'e PostgreSQL \
'es sorties gnres par la !omman'e /AC00. ANAL;O2.
%l peut ai'er 0 'terminer /uelles sont les re/uBtes 0 optimiser pour
amliorer les performan!es 'e l,appli!ation utilisant PostgreSQL.
pgFouine est un pro*et sous li!en!e .PL tr9s a!tif. Le site offi!iel se trouve sur
http://pgfouine.pro*e!ts.postgres/l.org
7.M pgFouine : utilisation
S;nta+e :
pg7ou!ne6p+p D7!le postgres4l6log : anal%se6+tml
4oi!i une liste 'es options les plus utiles:
D7!le _7!le: : fi!hier 0 anal;ser
Dtop _n: : nombre 'e re/uBtes 0 affi!her
D7ormat _7ormat: : format 'e sortie <+tml- +tmlDw!t+Dgrap+s ou te9t?
Dlogt%pe _logt%pe: : t;pe 'e *ournau+ appli!atifs <s%slog ou stderr?
Ddatabase _database: : !hoi+ 'e la base 0 anal;ser.
2!% / 275 http://www.bull-formation.om

Administration PostgreSQL
7.L pgFouine : !opie ',!ran

2"' / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(F pgFouine : !opie ',!ran

7.(( $nal;se 'e re/uBtes : PQ$
PostgreSQL Quer; $nal;ser
Co' en 1ub;- Li!en!e BS#
=oins volu /ue pgFouine
Fon!tionne galement ave! =;SQL
L,avantage 'e PQ$ est sa simplit- mais !,est aussi sa limite )
L,installation peut se faire via 1ub;.ems :
2"& / 275 http://www.bull-formation.om

Administration PostgreSQL
gem install pqa-1.6.gem
"nsuite- on utilise l,outil en ligne 'e !omman'e 'e !ette fa8on :
[tom@hal lib]$ ./pqa.rb -file postgresql.log -normalize -top 5
645 queries (65 unique), longest ran in 0.370524 seconds), parsed in 0.088793 seconds
### Queries by type
SELECTs: 593 (92%)
INSERTs: 51 (8%)
UPDATEs: 1 (0%)
### 5 most frequent queries
61 times: SELECT total FROM forum_group_list_vw WHERE group_forum_id=''
46 times: SELECT plugin_id, plugin_name FROM plugins
46 times: INSERT INTO activity_log (day,hour,group_id) VALUES (0,'','');
40 times: SELECT language_code FROM supported_languages WHERE language_id=''
Plus ',informations sur la page 'u pro*et : http://p/a.pro*e!ts.postgres/l.org/
7.(3 $nal;se 'e re/uBtes : "PQ$
"nterprise PostgreSQL Quer; $nal;ser
Co' en P"1L- Li!en!e .PL
=Bme t;pe 'e rapport /ue PQ$
Bonne gestion 'es logs !ompresss <g:?
"PQ$ est !o' en Perl- il est 'on! tr9s simple 'e le mo'ifier pour a'apter les rapports
',anal;se.
L,utilisation est tr9s simple
./epqa.pl -f=postgresql.log > rapport.html
&n obtient alors un fi!hier W2=L su!!in!t !ontenant le rsultat 'e l,anal;se 'es logs.
Plus ',information sur : http://ep/a.sour!eforge.net
2"2 / 275 http://www.bull-formation.om

Administration PostgreSQL
7.(5 $nal;se 'e re/uBtes : pgsi
PostgreSQL S;stem %mpa!t
Co' en Perl- Li!en!e BS#
=oins volu /ue pgFouine
Cre 'es rapports au format wiHi
L,avantage 'e pgsi est sa simpli!it- mais !,est aussi sa limite )
%l n!essite 'es *ournau+ appli!atifs au format s;slog. Plus e+a!tement- voi!i le format
e+a!t:
YYYY-MM-DDTHH24:MI:SS(-TZ:00)? server postgres[pid]:
Cet outil permet 'e !al!uler la !harge mo;enne pour les re/uBtes. 4oi!i un e+emple 'e
sortie:
Best
1. 2009-01-12T10:11:49-07:00 db1 postgres[4692] -- 4.833 ms
2. 2009-01-12T10:31:19-07:00 db1 postgres[1937] -- 4.849 ms
3. 2009-01-12T09:16:20-07:00 db1 postgres[20294] -- 4.864 ms
4. 2009-01-12T10:16:54-07:00 db1 postgres[20955] -- 4.867 ms
5. 2009-01-12T10:32:16-07:00 db1 postgres[5010] -- 4.871 ms
Worst
1. 2009-01-12T10:00:07-07:00 db1 postgres[2804] -- 2175.650 ms
2. 2009-01-12T09:30:07-07:00 db1 postgres[2804] -- 2090.914 ms
3. 2009-01-12T10:00:18-07:00 db1 postgres[2804] -- 2046.608 ms
4. 2009-01-12T09:30:10-07:00 db1 postgres[2804] -- 1954.604 ms
5. 2009-01-12T11:20:11-07:00 db1 postgres[2804] -- 1788.576 ms
Plus ',informations sur : http://bu!ar'o.org/pgsi/
7.(6 pg[stat[statements
=o'ule !ontrib apparaissant en M.6
Se base sur les re/uBtes en !ours ',e+!ution
Permet 'e !onnaEtre rapi'ement les re/uBtes les plus fr/uentes
Quel/ues param9tres 'e !onfiguration
4oi!i un e+emple 'e re/uBte sur la vue pg5stat5statements :
2"! / 275 http://www.bull-formation.om

Administration PostgreSQL
postgres=# SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
-[ RECORD 1 ]------------------------------------------------------------
userid | 10
dbid | 63781
query | UPDATE branches SET bbalance = bbalance + WHERE bid = ;
calls | 3000
total_time | 20.716706
rows | 3000
-[ RECORD 2 ]------------------------------------------------------------
userid | 10
dbid | 63781
query | UPDATE tellers SET tbalance = tbalance + WHERE tid = ;
calls | 3000
total_time | 17.1107649999999
rows | 3000
pg[stat[statements poss9'e 'es param9tres 'e !onfiguration pour in'i/uer le nombre
ma+imum ',instru!tions tra!es- la sauvegar'e 'es statisti/ues entre !ha/ue 'marrage
'u serveur- et!.
7.(7 $lertes 0 partir 'es *ournau+ appli!atifs
2ail an' =ail
Co' en Perl- Li!en!e BS#
$nal;se en !ontinu les *ournau+ appli!atifs
"nvoie 'es mails lors/u,il 'te!te !ertains !as
L,i'e est 'e laisser !et outil !her!her !ertaines !on'itions 'ans les *ournau+
appli!atifs.
4oi!i un e+emple 'e !onfiguration:
## Fichier de configuration pour le programme tail_n_mail.pl
EMAIL: guillaume.lelarge@dalibo.com
FILE: /var/log/pg_log/postgres-%Y-%m-%d.log
INCLUDE: FATAL:
INCLUDE: PANIC:
EXCLUDE: database ".+" does not exist
EXCLUDE: database "template0" is not currently accepting connections
MAILSUBJECT: HOST Postgres fatal errors (FILE)
"nsuite- il faut !onfigurer le 'mon !ron pour /u,il e+!ute le programme
ta!l5n5ma!l6pl suivant la planifi!ation:
*/5 * * * * perl bin/tail_n_mail.pl bin/tnm/tnm.fatals.config
4oi!i un e+emple 'e mail envo;:
2"" / 275 http://www.bull-formation.om

Administration PostgreSQL
Matches from /var/log/pg_log/postgres-2010-01-01.log: 42
Date: Fri Jan 1 10:34:00 2010
Host: pollo
[1] Between lines 123005 and 147976, occurs 39 times.
First: Jan 1 00:00:01 rojogrande postgres[4306]
Last: Jan 1 10:30:00 rojogrande postgres[16854]
Statement: user=root,db=rojogrande FATAL: password authentication failed for
user "root"
[2] Between lines 147999 and 148213, occurs 2 times.
First: Jan 1 10:31:01 rojogrande postgres[3561]
Last: Jan 1 10:31:10 rojogrande postgres[15312]
Statement: FATAL main: write to worker pipe failed -(9) Bad file descriptor
[3] (from line 152341)
PANIC: could not locate a valid checkpoint record
Plus ',informations sur :
http://bu!ar'o.org/wiHi/2ail[n[mail
2"5 / 275 http://www.bull-formation.om

Administration PostgreSQL
R Partie 6 : visualisation
%l e+iste plusieurs outils pour visualiser les informations !olle!tes sur un
s;st9me :
=unin
Zabbi+
$utres pistes
R.( 4isualisation ave! =unin
=unin est une appli!ation 'e mtrologie !lient/serveur.
Le site offi!iel se trouve sur http://munin.pro*e!ts.linpro.no
%l re!ueille les informations sur !ha!une 'es ma!hines 0 surveiller et prsente toutes les
informations rapatries sous forme graphi/ue 'ans une interfa!e +eb.
=unin est un pro*et 'isponible sous li!en!e .PL !rit en langage Perl.
R.3 $vantages 'e =unin
=unin est un outil:
Simple
"ffi!a!e
1api'e
%l e+iste 'es plugins pour PostgreSQL 'isponibles sur http://www.'alibo.org
2"# / 275 http://www.bull-formation.om

Administration PostgreSQL
R.5 =unin : !opie ',!ran

2"7 / 275 http://www.bull-formation.om

Administration PostgreSQL
R.6 =unin : !opie ',!ran

R.7 4isualisation : autres pistes
Ca!ti : http://!a!ti.net/
@is!a <@etworH %nterfa!e Statisti!s Colle!tion $gent? :
http://nis!a.sour!eforge.net/
&r!a : http://www.or!aweb.!om/
2"$ / 275 http://www.bull-formation.om

Administration PostgreSQL
R.R 4isualisation ave! Zabbi+
Zabbi+ est une solution 'e surveillan!e 'e haut niveau /ui offre 'es
fon!tionnalits 'e monitoring- ',alertes et 'e visualisation.
Zabbi+ est un pro*et 'istribu sous li!en!e .PL !rit en PWP. Le site
offi!iel se trouve sur : http://www.:abbi+.!om
%l e+iste 'es son'es pour PostgreSQL- appels PostB%Y. 4oir
http://www.smartmarmot.!om/pro'u!t/postbi+/ pour les 'tails.
R.O $vantages et in!onvnients 'e Zabbi+
Puissant
=o'ulaire
2"% / 275 http://www.bull-formation.om

Administration PostgreSQL
R.M Zabbi+ : !opie ',!ran

25' / 275 http://www.bull-formation.om

Administration PostgreSQL
R.L Zabbi+ : !opie ',!ran

25& / 275 http://www.bull-formation.om

Administration PostgreSQL
O Partie 7 : surveillan!e
Surveillan!e o!!asionnelle
&utils 'e monitoring
@agios
Zabbi+
O.( Surveillan!e : !omman'es Uni+
top- atop- +top- topas
!otop
Ces !omman'es affi!hent les tQ!hes en !ours ',e+!ution ainsi /ue l,utilisation CP0 et la
mmoire.
$ppu;e: sur la tou!he u puis saisisse: postgres pour /ue les pro!essus soient filtrs
suivant l,utilisateur postgres. $ppu;e: sur la tou!he $ pour voir la !omman'e
!ompl9te au lieu 'u seul nom 'e l,e+!utable <si votre !ran est asse: large?. 4ous aure:
'avantage 'e 'tail sur !ha/ue pro!essus postgres /ue le simple nom 'e !elui!i.
top n,e+iste pas 'ire!tement sur Solaris. L,outil par 'faut sur !e s;st9me est prstat.
$ttention au+ valeurs 'es !olonnes used et 7ree. La mmoire rellement utilise
!orrespon' plutPt 0 la soustra!tion 'e used et 'e bu77ers <!e 'ernier tant le !a!he
'is/ue mmoire 'u no;au?.
Sur 'es s;st9mes Linu+ 'e no;au 3.R.3F ou plus- on peut aussi installer et utiliser iotop-
/ui permet ',obtenir un affi!hage voisin 'e !elui 'e top- mais 'taillant les entres
sorties 'e !ha/ue pro!essus.
4oi!i un e+emple ',utilisation '1!otop :
Total DISK READ: 40.86 K/s | Total DISK WRITE: 10.35 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
428 be/3 root 0.00 B/s 804.56 B/s 0.00 % 0.00 % [kjournald]
4761 be/4 guillaum 0.00 B/s 804.56 B/s 0.00 % 0.00 % postgres: logger process
4763 be/4 guillaum 0.00 B/s 3.81 M/s 0.00 % 0.00 % postgres: writer process
4764 be/4 guillaum 0.00 B/s 103.71 K/s 0.00 % 0.00 % postgres: wal writer process
4766 be/4 guillaum 0.00 B/s 12.57 K/s 0.00 % 0.00 % postgres: stats collector process
895 be/3 root 0.00 B/s 20.43 K/s 0.00 % 0.00 % [kjournald]
252 / 275 http://www.bull-formation.om

Administration PostgreSQL
1044 be/3 root 0.00 B/s 39.29 K/s 0.00 % 0.00 % [kjournald]
1351 be/4 guillaum 804.56 B/s 13.93 M/s 0.00 % 0.00 % postgres: guillaume b1 [local]
INSERT
O.3 Surveillan!e : !omman'es Uni+
ps au9 Y grep apostgres : $ffi!he la liste 'es pro!essus e+!uts
par l,utilisateur postgres.
Premier e+emple 'u rsultat 'e la !omman'e ps ave! un PostgreSQL M.6:
guillaume@laptop:~$ ps xfo args | grep [p]ostgres
/opt/postgresql-8.4/bin/postgres
\_ postgres: logger process
\_ postgres: writer process
\_ postgres: wal writer process
\_ postgres: autovacuum launcher process
\_ postgres: stats collector process
\_ postgres: guillaume b1 [local] idle
\_ postgres: guillaume b2 ::1(48283) idle
#eu+i9me e+emple:
guillaume@laptop:/opt/postgresql-8.4/data$ ps aux | grep [p]ostgres
1000 4779 0.0 0.1 35952 3524 pts/4 S 10:40 0:01 /opt/postgresql-
8.4/bin/postgres
1000 4780 0.0 0.0 8284 1048 ? Ss 10:40 0:00 postgres: logger process
1000 4782 0.0 1.2 36084 25936 ? Ss 10:40 0:01 postgres: writer process
1000 4783 0.0 0.0 35952 1316 ? Ss 10:40 0:01 postgres: wal writer process
1000 4784 0.0 0.1 36804 2080 ? Ss 10:40 0:04 postgres: autovacuum launcher
process
1000 4785 0.0 0.0 9112 1708 ? Ss 10:40 0:10 postgres: stats collector
process
1000 21187 0.0 0.1 36672 2456 ? Ss 14:17 0:00 postgres: guillaume b1 [local]
idle
1000 21220 0.0 0.1 36488 2216 ? Ss 14:17 0:00 postgres: guillaume
b2 ::1(48283) idle
4oi!i le !ontenu 'e !ha/ue !olonne pour !e 'eu+i9me e+emple:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
2roisi9me e+emple:
guillaume@laptop:~$ ps -e -o pid,ppid,wchan:60,cmd | grep [p]ost
15641 1 poll_schedule_timeout /opt/postgresql-8.4/bin/postgres
15642 15641 poll_schedule_timeout postgres: logger process
15644 15641 poll_schedule_timeout postgres: writer process
15645 15641 poll_schedule_timeout postgres: wal writer process
25! / 275 http://www.bull-formation.om

Administration PostgreSQL
15646 15641 poll_schedule_timeout postgres: autovacuum launcher process
15647 15641 poll_schedule_timeout postgres: archiver process last was
0000000100000008000000DE.00000020.backup
15648 15641 poll_schedule_timeout postgres: stats collector process
O.5 Surveillan!e : !omman'es Uni+
!ostat XDE KZ
vmstat XKZ
s%sstat
!ostat affi!he 'es statisti/ues sur l,utilisation CPU et les %/&- l,option DE affi!he 'es
valeurs en Vo/s au lieu 'e blo!s/s. L,option D9 permet ',avoir plus ',informations-
!omme par e+emple les !olonnes awa!t <temps mo;en ',attente et ',e+!ution 'e la
!omman'e? et sv$tm <temps mo;en ',e+!ution 'e la !omman'e?. %l est
parti!uli9rement important ',avoir 'es !hiffres similaires !ar !ela in'i/ue peu 'e
laten!e. Le nombre en fin 'e !omman'e est l,intervalle 'e rafrai!hissement en
se!on'es.
vmstat affi!he 'es informations sur les pro!essus- la mmoire- la pagination- les blo!s
',entressorties- les interruptions et l,a!tivit 'u pro!esseur. 4oi!i un e+emple :
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 79024 180476 144716 922560 0 1 53 67 48 219 11 3 84 2
0 0 79024 172640 144728 930828 0 0 0 576 1013 1570 8 3 88 0
2 0 79024 171556 144732 931960 0 0 4 488 987 1176 5 3 91 0
0 1 79024 127388 144792 976372 0 0 28 21300 1230 1516 29 8 46 17
1 0 79024 80608 144840 1022652 0 0 20 19056 1270 1331 30 9 42 19
0 2 79120 57364 144812 1044996 0 96 24 26268 1007 1100 50 9 22 20
0 0 79120 54752 144828 1047192 0 0 0 6076 954 1159 7 3 81 8
0 0 79120 54760 144828 1047264 0 0 0 488 857 1044 4 4 92 0
1 0 79120 54652 144836 1047264 0 0 0 50008 870 1217 4 5 88 3
0 0 79120 57272 144840 1049388 0 0 4 500 881 1415 8 3 87 1
"nfin- le pa!Hage s%sstat permet 'e r!uprer un gran' nombre ',informations. L,outil
p!dstat permet mBme 'e r!uprer !es informations- mais pour un seul pro!essus.
Pour !ela- il faut avoir le no;au Linu+ 3.R.3F ou suprieurs ainsi /ue la version O.(.7 'e
s%sstat.
25" / 275 http://www.bull-formation.om

Administration PostgreSQL
O.6 Surveillan!e : !omman'es Uni+
7ree
!p$s et !p$rm
dstat
La !omman'e 7ree affi!he la /uantit 'e mmoire utilis ou 'isponible. 2;pi/uement
on utilise la !omman'e ave! les options suivantes :
free -ms 5
Lors/u,un programme utilisant 'es %PC <%nter Processus .ommunication- ou segments 'e
mmoire partage ? ne se termine par !orre!tement- il peut arriver /ue les segments
!res ne soient pas supprimes. $fin 'e maintenir un tat !ohrent- on 'ispose 'e
'eu+ !omman'es : la premi9re !p$s permet 'e !onnaEtre l,tat !ourant et les
i'entifi!ateurs /ue l,on peut utiliser !omme arguments 'e la 'eu+i9me <!prm? /ui sert 0
supprimer 'es %PC.
#stat est un utilitaire !rit en p;thon /ui fournit statisti/ues et 'onnes sur l,utilisation
',un s;st9me et peut rempla!e avantageusement 0 lui seul vmstat- !ostat- netstat-
n7sstat et !7stat. "n effet- #stat 'passe les limitations 'e !es outils et a*oute
/uel/ues fon!tions supplmentaires- plus 'e !ompteurs et 'e fle+ibilit. #stat est 'on!
tr9s utile pour monitorer 'es s;st9mes ou les 'bugger- /u,ils soient 'e tests- 'e
pro'u!tion ou 'e /ualifi!ation <ben!hmarHing?.
#stat est prvu au 'part pour fournir une sortie U humanrea'able N en stan'ar' et en
temps rel. %l est 'sormais !omplt ',une sortie CS4 /ui permet 'e fournir 'es fi!hiers
0 anal;ser 'ans votre tableur favori et 'e gnrer 'es graphi/ues.
O.7 Surveillan!e : !omman'es Xin53
tasEl!st
&util Per7orman$es 'es outils ',a'ministration
Pro$ess .on!tor
Pro$ess 29plorer
I'esHtop heapsJ
L,outil en ligne 'e !omman'e tasEl!st permet 'e r!up9rer la liste 'es pro!essus en
!ours ',e+!ution ave! /uel/ues informations supplmentaires !omme le P%#-
255 / 275 http://www.bull-formation.om

Administration PostgreSQL
l,utilisateur- l,utilisation 'e la mmoire- le temps pro!esseur- et!. &n peut lui in'i/uer
'es filtres- par e+emple- la !omman'e suivante permet 'e ne r!uprer /ue les
pro!essus postgres.e+e :
tasklist /v /fi "imagename eq postgres.exe"
L,outil Per7orman$es- 'isponible 'ans les outils ',a'ministration- est tr9s !omplet sur
les informations r!uprables. L,i!Pne b permet ',a*outer un !ompteur. Parmi les
!ompteurs intressants se trouvent les le!tures et !ritures 'is/ues- le temps
pro!esseur <'u s;st9me !omplet?- le nombre 'e pages lues en mmoire- et!. Ce!i est
faisable sur le s;st9me !omplet mais aussi sur un pro!essus parti!ulier.
Pro!ess =onitor est un outil 'e surveillan!e avan! pour Xin'ows. %l affi!he en temps
rel l,utilisation 'u s;st9me 'e fi!hiers- 'e la base 'e registre et 'e l,a!tivit 'es
pro!essus. %l !ombine les fon!tionnalits 'e 'eu+ an!iens outils- File=on et 1egmon-
tout en a*outant un gran' nombre 'e fon!tionnalits <filtrage- proprits 'es
vnements et 'es pro!essus- et!?. Pro!ess "+plorer permet ',affi!her les a!!9s au+
fi!hiers <#LL et autres? par pro!essus.
#ans !ertains !as ',utilisation- !ertaines versions 'e PostgreSQL peuvent !onsommer
l,ensemble 'es blo!s mmoires <U 'esHtop heaps N? allous par Xin'ows pour un servi!e
',environ 67 !onne+ions. "n !as 'e !rashs 'u serveur- il est important 'e surveiller la
!onsommation 'e !es 'esHtop heaps.
Plus ',informations sur le bug : http://ar!hives.postgres/l.org/pgs/lpat!hes/3FFO
(F/msgFF(O(.php
Les outils sont e+pli/us i!i:
http://blogs.ms'n.!om/nt'ebugging/ar!hive/3FFO/F(/F6/'esHtopheap
overview.asp+
"t tl!hargeables i!i:
http://blogs.ms'n.!om/nt'ebugging/ar!hive/3FFR/(3/(7/gettingrea';forwin'ows
'ebugging.asp+
O.R Surveillan!e : pg[lo!Hs
2able s;st9me /ui permet 'e :
visualiser les verrous \
i'entifier une sour!e 'e !ontention \
anal;ser les effets 'es verrous sur les performan!es.
25# / 275 http://www.bull-formation.om

Administration PostgreSQL
O.O Surveillan!e : 'is/ues
La table pg5$lass !ontient les 'onnes relatives 0 la taille 'es tables
et 'es in'e+.
Les fon!tions pg5relat!on5s!Ne et pg5database5s!Ne fournissent
aussi la taille 'es relations et bases 'e 'onnes.
4oi!i /uel/ues e+emples :
$ffi!hage 'u nombre 'e pages <MHo? utilises pour !ha!une 'es relations :
SELECT relname, relpages
FROM pg_class
ORDER B7 relpages DESC;
$ffi!hage 'e la taille ',une base 'e 'onnes <en o!tets? :
SELECT pg_database_size('my_base');
pg_database_size
------------------
287437448
O.M pgsnap : prsentation
P.Snap est un outil permettant 'e gnrer un rapport !omplet sur la
base 'e 'onnes anal;se.
L,outil va !rer un ensemble 'e pages W2=L lisibles apr9s !oup ave! tout
navigateur internet.
2out le !ontenu 'es !atalogues s;st9mes est r!upr- ainsi /ue la
!onfiguration- /uel/ues 'onnes s;st9mes- et!.
P.Snap est un pro*et a!tif propos par #alibo. %l est sous li!en!e BS#. Le site offi!iel se
trouve sur http://pgsnap.pro*e!ts.postgres/l.org.
257 / 275 http://www.bull-formation.om

Administration PostgreSQL
O.L pgsnap : utilisation
S;nta+e :
pgsnap6p+p Xopt!onsZ nom5base
Les options les plus utiles:
Da : pour 'isposer ',un rapport pour !ha/ue base 'e 'onnes 'u serveur
Do : pour sp!ifier le nom 'u rpertoire !ontenant le rapport
DS : pour ne pas r!uprer ',informations sur les !atalogues s;st9mes
toutes les options 'e !onne+ions <i'enti/ues au+ autres outils
PostgreSQL?
O.(F pgsnap : !opie ',!ran

25$ / 275 http://www.bull-formation.om

Administration PostgreSQL
O.(( pgsnap : !opie ',!ran

O.(3 @agios
Site offi!iel : http://www.nagios.org/
Plugins pour PostgreSQL : http://nagiosplugins.pro*e!ts.postgres/l.org/
Plugin alternatif : http://bu!ar'o.org/!he!H[postgres/
Centreon- une interfa!e volue pour @agios :
http://www.!entreon.!om/
O.(5 @agios : avantages
$ust9re
"ffi!a!e
#o!ument
"+trBmement robuste
25% / 275 http://www.bull-formation.om

Administration PostgreSQL
O.(6 @agios : !opie ',!ran

2#' / 275 http://www.bull-formation.om

Administration PostgreSQL
O.(7 @agios : !opie ',!ran

O.(R Pnp6@agios
Plugin 'e visualisation pour @agios
Fa!ilement intgrable 'ans l,%W= 'e @agios
la !olle!te est effe!tue par les agents @agios
1etrouve: Pnp6@agios sur le site : http://www.pnp6nagios.org
Copie ',!ran :
2#& / 275 http://www.bull-formation.om

Administration PostgreSQL
O.(O Surveillan!e ave! =onit
Surveillan!e et gestion 'e pro!essus
#te!tion 'e 'faillan!e et e+!ution ',a!tion selon le !onte+te
=onit est un outil 'e surveillan!e et 'e gestion 'e pro!essus- !apable 'e 'te!ter une
'faillan!e et ',e+!uter 'es a!tions pertinentes en fon!tion 'es erreurs et 'es
'iffrentes situations.
&n peut par e+emple utiliser monit pour surveiller les pro!essus PostgreSQL et tenter
2#2 / 275 http://www.bull-formation.om

Administration PostgreSQL
plusieurs relan!es 'u servi!e en !as ',arrBt inopin. =onit est 'istribu sous li!en!e
.PL- !rit en C.
Le site offi!iel se trouve sur : http://mmonit.!om
O.(M Surveillan!e ave! =onit
"+emple 'e s!ript:
check process postgresql with pidfile /opt/postgres/data/postmaster.pid
group database
start program = "/etc/init.d/postgresql start"
stop program = "/etc/init.d/postgresql stop"
if failed unixsocket /tmp/.s.PGSQL.5432 protocol pgsql then restart
if failed unixsocket /tmp/.s.PGSQL.5432 protocol pgsql then alert
if failed host localhost port 5432 protocol pgsql then restart
if failed host localhost port 5432 protocol pgsql then alert
if 5 restarts within 5 cycles then timeout
&n peut fa!ilement 'finir 'es s!ripts monit pour PotsgreSQL /ui surveille /ue le so!Het
Uni+ est a!!essible. "n !as ',in'isponibilit- monit peut tenter 'e relan!er le serveur 0 7
reprises.
Plus ',information sur : http://mmonit.!om/wiHi/=onit/PostgreSQL
O.(L $vantages et in!onvnients 'e =onit
Simple et fle+ible
1a!tions automati/ues en !as 'e panne
Possibilit 'e gestion 'istribue ave! m/monit
Attention au+ effets 'e bor's
La parti!ularit 'e monit par rapport 0 ',autres solutions similaires <Zabbi+- @agios?
rsi'e 'ans le fait /u,il est !apable 'e '!len!her 'es a!tions pour tenter 'e rtablir un
servi!e interrompu- !omme par e+emple relan!er un serveur $pa!he s,il ne rpon' plus
ou vi'er la file ',attente ',un serveur Postfi+ en !as ',engorgement.
m/monit est un s;st9me 'e gestion 0 'istan!e 'e multiples instan!es monit. C,est aussi
un serveur 0 /ui les instan!es monit envoient 'es informations histori/ues et
statisti/ues.
=onit est tr9s prati/ue et tr9s puissant. =ais s,il est mal !onfigur- il peut '!len!her
'es a!tions automati/ues /ui peuvent avoir un effet ngatif sur une situation '*0
2#! / 275 http://www.bull-formation.om

Administration PostgreSQL
!riti/ue. @otamment si le test 'e surveillan!e est mal 'fini- monit peut 'ans !ertains
!as stopper le servi!e sans /ue !e soit n!essaire : C utiliser avec prcaution !
O.3F =onit : !opie ',!ran

2#" / 275 http://www.bull-formation.om

Administration PostgreSQL
O.3( =onit : !opie ',!ran

O.33 Surveillan!e : ',autres pistes
Zen&SS : http://www.:enoss.!om
&pen@=S : http://www.opennms.org
Wobbit : http://hobbitmon.sour!eforge.net/
2#5 / 275 http://www.bull-formation.om

Administration PostgreSQL
M Con!lusion
=unin et @agios forment un !ouple simple- stable et !omplet
Zabbi+ est une solution intgrale intressante
pgFouine est un outil in'ispensable pour optimiser et/ou 'bugguer
'es re/uBtes
M.( Questions
@,hsite: pas- !,est le moment )
2## / 275 http://www.bull-formation.om

Administration PostgreSQL
ravau# Prati+ues
2#7 / 275 http://www.bull-formation.om

Administration PostgreSQL
( cnon!s
(.( =unin
%nstaller le serveur mun!n sur votre poste
%nstaller le !lient mun!n sur votre poste
Configurer le serveur mun!n pour /ue seul l,a!!9s lo!al soit autoris
%nstaller les plugins PostgreSQL
2ester l,a!!9s au+ rapports
Crer un plugin pour mun!n /ui renvoie l,tat 'es sto!Hs et l,a!tiver.
(.3 pgFouine
%nstaller pg7ou!ne
Configurer PostgreSQL pour /u,il enregistre les tra!es 'ans le bon format <nous allons
utiliser s%slog pour le 2P?
Configurer s%slog pour renvo;er les tra!es 'ans le fi!hier CvarClogCpgs4l
Utiliser pg7ou!ne pour gnrer 'es rapports
(.5 P.Snap
%nstaller pgsnap 'ans votre rpertoire personnel
"+!uter pgsnap sur la base cave en pr!isant !omme rpertoire 'u rapport
rapport/cave
Comment trouver la plus grosse table 'e la base !ave G
Comment !onnaEtre le ratio 'es le!tures mmoire/'is/ue G
Comment trouver les re/uBtes /ui ont permis 'e r!uprer !ette information G
2#$ / 275 http://www.bull-formation.om

Administration PostgreSQL
3 Corre!tions
3.( =unin
3.(.( %nstaller le serveur munin sur votre poste
3.(.(.( #pen'an!es
%l est n!essaire ',avoir les pa/uets suivants sur le s;st9me:
perlDNetDServer
perlDDate.an!p
perlD,".LD"emplate
perlDrrdtool
perlDNetDServer
rrdtool
4ous pouve: les installer ave! apt!tude sous #ebian- %um sous Fe'ora ou en!ore
urpm! sous =an'riva.
3.(.(.3 %nstallation
2l!harger munin sur http://munin.pro*e!ts.linpro.no
Les pa/uets rpm pour r+el\ peuvent Btre utiliss :
wget http://ovh.dl.sourceforge.net/sourceforge/munin/munin-1.2.4-8rhel4.noarch.rpm
puis installer le pa/uet 0 l,ai'e 'e l,outil rpm :
rpm -ivh munin-1.2.4-8rhel4.noarch.rpm
@anmoins- utilise: plutPt le gestionnaire 'e pa/uets 'e votre 'istribution.
3.(.3 %nstaller le !lient munin sur votre poste
3.(.3.( #pen'an!es
%l est n!essaire ',installer le pa/uet suivant sur le s;st9me :
2#% / 275 http://www.bull-formation.om

Administration PostgreSQL
s%sstat
3.(.3.3 %nstallation
Sur !ha!un 'es !lients 0 monitorer- il est n!essaire ',installer munin0node. munin0node
peut Btre tl!harg sur http://munin.pro*e!ts.linpro.no
Les pa/uets rpm pour r+el\ peuvent Btre utiliss :
wget http://ovh.dl.sourceforge.net/sourceforge/munin/munin-node-1.2.4-8rhel4.noarch.rpm
puis installer le pa/uet 0 l,ai'e 'e l,outil rpm :
rpm -ivh munin-node-1.2.4-8rhel4.noarch.rpm
@anmoins- utilise: plutPt le gestionnaire 'e pa/uets 'e votre 'istribution.
3.(.5 Configurer le serveur munin pour /ue seul l,a!!9s lo!al soit
autoris
%l faut mo'ifier le fi!hier Cet$Cmun!nCmun!nDnode6$on7 pour /ue le serveur mun!n
puisse a!!'er 0 !ha!un 'es noeu's. C,est galement 'ans !e fi!hier /u,on 'termine
pour un noeu' 'onn les plugins 0 utiliser.
(. Positionner le nom 'u noeu' !orre!tement si !e n,est pas !orre!tement retourn par
la !omman'e +ostname :
host_name host.domaine
3. $utoriser le serveur munin 0 a!!'er au noeu' :
allow ^192\.168\.0\.1$
5. $!tiver le servi!e muninno'e :
chkconfig --level 2 munin-node on
chkconfig --level 3 munin-node on
chkconfig --level 4 munin-node on
chkconfig --level 5 munin-node on
3.(.6 %nstaller les plugins PostgreSQL
(. 2l!harger le plugin sur http://www.'alibo.org :
27' / 275 http://www.bull-formation.om

Administration PostgreSQL
wget http://pgfoundry.org/frs/download.php/2096/muninpgplugins-0.2.2.tar.gz
3. "+traire l,ar!hive 'ans un rpertoire temporaire :
tar xzvf muninpgplugins-0.2.2.tar.gz
5. Copier les plugins 'ans le rpertoire CusrCs+areCmun!nCplug!ns :
cd munin-plugins-postgresql
cp db_* /usr/share/munin/plugins/
6. Faire un lien 'e !ha!un 'es plugins 'ans le rpertoire Cet$Cmun!nCplug!ns :
cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/db_cache_hit_miss_ratio .
ln -s /usr/share/munin/plugins/db_cluster_occupancy .
ln -s /usr/share/munin/plugins/db_connexions .
ln -s /usr/share/munin/plugins/db_connexions_each .
ln -s /usr/share/munin/plugins/db_size_each .
7. $*outer au fi!hier 'e !onfiguration in Cet$Cmun!nCplug!nD$on76dCmun!nDnode
les lignes suivantes :
[db_*]
user root
R. 4rifier les plugins : e+!uter !ha!un 'es plugins.
O. 1e'marrer le servi!e mun!nDnode :
/etc/init.d/munin-node restart
3.(.7 Cration 'u plugin munin
#!%bin%bas(

#-# famil'.postgresql
#-# capabilities.autoconf

# /f run &it( t(e 0autoconf0-parameter1 give our opinion on &et(er &e
# s(ould be run on t(is s'stem or not) $(is is optional1 and onl' used b'
# munin-config) /n t(e case of t(is plugin1 &e s(ould most probabl'
# al&a's be included)

#4 ! "" = "autoconf" "; t3'
c3+ =$
)#t 0
27& / 275 http://www.bull-formation.om

Administration PostgreSQL
4#

#4 ! "" = "config" "; t3'
# $(e title of t(e grap(
c3+ 'graph_title Stocks'

# #rguments to 0rrdtool grap(0) /n t(is case1 tell it t(at t(e
# lo&er limit of t(e grap( is ','
c3+ 'graph_args -l 0 --base 1000'

# $(e 2-a*is label
c3+ 'graph_vlabel nombre de bouteilles'

# !rap( categor') "efaults to 'ot(er'
c3+ 'graph_category user'

# $(e fields) 0label0 is used in t(e legend) 0label0 is t(e onl'
# required subfield)
c3+ 'user_stocks.label stock de bouteilles'
c3+ 'user_stocks.type GAUGE'

# $(is one is purel' to add an e*planation to t(e &eb page
c3+ "graph_info Etat du stock de bouteilles"

# Last1 if run &it( t(e 0config0-parameter1 quit (ere 3don't
# displa' an' data4
)#t 0
4#

NUMBER=;psql -U caviste -t -c "select sum(nombre) from stock" cave;

# do t(e 5ob
c3+ "user_stocks.value $NUMBER"
3.(.R %nstallation 'u plugin
(. Copier le plugin 'ans le rpertoire CusrCs+areCmun!nCplug!ns :
cp user_stocks /usr/share/munin/plugins/
3. Faire un lien vers !ha/ue plugin 'ans le rpertoire Cet$Cmun!nCplug!ns :
cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/user_stocks .
5. $*outer au fi!hier 'e !onfiguration 'ans le rpertoire Cet$Cmun!nCplug!nD
$on76dCmun!nDnode les lignes suivantes :
[user_*]
user root
6. 1e'marrer le servi!e mun!nDnode :
/etc/init.d/munin-node restart
272 / 275 http://www.bull-formation.om

Administration PostgreSQL
3.3 pgFouine
3.3.( %nstaller pgfouine
Pour les s;st9mes Uni+ utilisant 'es pa/uets 1P=- vous pouve: tl!harger le pa/uet
pgFouine sur pgfoundry :
wget http://pgfoundry.org/frs/download.php/2179/pgfouine-1.1-1.noarch.rpm
puis installer le pa/uet 0 l,ai'e 'e l,outil rpm :
rpm -ivh pgfouine-1.1-1.noarch.rpm
Pour les autres- le mieu+ est 'e r!uprer le pa/uet 'es sour!es :
wget http://pgfoundry.org/frs/download.php/2178/pgfouine-1.1.tar.gz
3.3.3 Configurer les tra!es 'e PostgreSQL
=o'ifier les 'ire!tives suivantes 'ans le fi!hier postgres4l6$on7 afin 'e logguer les
informations ave! s%slog :
log_destination = 'syslog'
redirect_stderr = off
silent_mode = on
log_min_duration_statement = 0
log_duration = off
log_statement = 'none'
log_line_prefix = 'user=%u,db=%d'
lc_messages = 'C'
1e'marrer PostgreSQL :
/etc/init.d/postgresql restart
3.3.5 Configurer s;slog
=ettre 0 *our le fi!hier Cet$Cs%slog6$on7 afin 'e logguer :
local0.* -/var/log/pgsql
27! / 275 http://www.bull-formation.om

Administration PostgreSQL
*.info;mail.none;;news.none;authpriv.none;local0.none -/var/log/messages
1e'marrer s%slogd :
/etc/init.d/syslog restart
3.3.6 Utiliser pgfouine pour gnrer 'es rapports
Pour gnrer 'es rapports ave! le fi!hier CvarClogCpgs4l :
pgfouine.php -file /var/log/pgsql > /var/www/html/rapport.html
Pour gnrer un rapport sur un va$uum- re'iriger la sortie 'u va$uum vers un fi!hier :
vacuumdb -avfz > vacuumdb.res 2>&1
Puis utiliser l,outil pg7ou!ne5va$uum6p+p !omme suit :
pgfouine_vacuum.php -file vacuumdb.res > /var/www/html/rapport_vacuum.html
3.5 P.Snap
3.5.( %nstaller pgsnap
#eu+ pa/uets sont 0 installer:
php7pgs/l- pour le pilote PostgreSQL 'e PWP
php7!li pour la version !lient 'e PWP
2l!harger pgsnap sur pgfoundry :
wget http://pgfoundry.org/frs/download.php/1825/pgsnap-0.4.0.tar.gz
puis '!ompresser le pa/uet 0 l,ai'e 'e l,outil tar :
tar xvfz pgsnap-0.4.0.tar.gz
27" / 275 http://www.bull-formation.om

Administration PostgreSQL
3.5.3 "+!uter pgsnap
Pour gnrer un rapport sur la base 'e 'onnes !ave 'ans le rpertoire rapport/cave :
pgsnap.php -o rapport_cave cave
Pour visualiser le rapport :
konqueror rapport_cave/index.html
3.5.5 #ivers
Le rapport 2able Si:e .raph <onglet #atabase &b*e!ts? 'onne un graphi/ue permettant
'e trouver rapi'ement la plus grosse table 'e la base 'u rapport.
Le ratio se trouve 'ans le rapport Ca!he Wit 1atio 'e l,onglet Statisti!s. %l est affi!h
pour !ha/ue base 'e 'onnes.
Le bouton U Show SQL Comman's) N 'onne !ette information pour tous les rapports.
275 / 275 http://www.bull-formation.om

You might also like