bacula et postgresql, optimisation et retour d'expérience · 07/11/2009 pgday 4 présentation...
TRANSCRIPT
![Page 1: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/1.jpg)
Bacula et PostgreSQL, optimisation et retour d'expérience
Eric Bollengier / Marc Cousin
![Page 2: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/2.jpg)
PGDay07/11/2009 2
Plan 1/2
Présentation Bacula
Présentation
Historique
Architecture
Le catalogue des sauvegardes
Schéma simplifié du catalogue
Problématiques
Code d'insertion original
Pourquoi cela ne fonctionne pas sous PostgreSQL
![Page 3: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/3.jpg)
PGDay07/11/2009 3
Plan 2/2
Solutions proposées
Procédures stockées
Solution dite « Mode Batch »
Situation actuelle
Quelques chiffres sympas
Performances sur la restauration
Pourquoi préférer PostgreSQL ?
![Page 4: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/4.jpg)
PGDay07/11/2009 4
Présentation
Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows.
Projet initial :
Sauvegarde du Palm au Mainframe
Fonctions “Enterprise”
Relecture des données pour une période de 30 ans (si materiel adéquat)
Scalable
Licence libre (GPL v2) - FSFE
![Page 5: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/5.jpg)
PGDay07/11/2009 5
Historique 1/2
Bacula = Backup + Dracula
Janvier 2000 – Démarrage du Projet – Kern Sibbald
14 Avril 2002 – 1er version sur Source Forge (version 1.16)
29 Juin 2006 – Version 1.38.11
Janvier 2007 – Version 2.0.0 ←
Aout 2007 – Version 2.2.0
Aout 2008 – Version 2.4.0
Avril 2009 – Version 3.0.0 (actuellement 3.0.3)
+ de 1 million de téléchargements (toutes versions)
![Page 6: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/6.jpg)
PGDay07/11/2009 6
Historique 2/2
Catalogue SQL
État de l'art en 2002 : catalogue spécialisé
Nombreuses critiques sur l'utilisation de SQL
Mysql, SQLite puis PostgreSQL
Une connexion SQL pour l'ensemble des threads
![Page 7: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/7.jpg)
PGDay07/11/2009 7
Architecture
Chaque élément peut se trouver sur un serveur différent
![Page 8: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/8.jpg)
PGDay07/11/2009 8
Schéma simplifié du catalogue
![Page 9: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/9.jpg)
PGDay07/11/2009 9
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
![Page 10: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/10.jpg)
PGDay07/11/2009 10
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
File
(id, jobid, index, filenameid, pathid, stat(), checksum)
(1 tuple par fichier sauvegardé)
![Page 11: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/11.jpg)
PGDay07/11/2009 11
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
File
(id, jobid, index, filenameid, pathid, stat(), checksum)
(1 tuple par fichier sauvegardé)Path
(Nom du répertoire)
![Page 12: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/12.jpg)
PGDay07/11/2009 12
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
File
(id, jobid, index, filenameid, pathid, stat(), checksum)
(1 tuple par fichier sauvegardé)Path
(Nom du répertoire)
Filename(Nom des fichiers)
![Page 13: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/13.jpg)
PGDay07/11/2009 13
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
File
(id, jobid, index, filenameid, pathid, stat(), checksum)
(1 tuple par fichier sauvegardé)Path
(Nom du répertoire)
Filename(Nom des fichiers)
Gain de place
![Page 14: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/14.jpg)
PGDay07/11/2009 14
Le catalogue des sauvegardes
Job (id, nom, date, client, ...) (1 tuple par sauvegarde)
File
(id, jobid, index, filenameid, pathid, stat(), checksum)
(1 tuple par fichier sauvegardé)Path
(Nom du répertoire)
Filename(Nom des fichiers)
Pas de clef étrangèredéclarée
![Page 15: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/15.jpg)
PGDay07/11/2009 15
Procédure historique
![Page 16: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/16.jpg)
PGDay07/11/2009 16
/etc/passwd Index Lstat Checksum
Ancienne procédure 1/6
Lock de « la » connexion SQLpour toute la procédure
Fichier
![Page 17: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/17.jpg)
PGDay07/11/2009 17
/etc/passwd Index Lstat Checksum
Ancienne procédure 2/6
Filename
Cherche « passwd » dans la table Filename
![Page 18: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/18.jpg)
PGDay07/11/2009 18
/etc/passwd Index Lstat Checksum
Ancienne procédure 3/6
Filename
Cherche « passwd » dans la table Filename
Si absent, insert
![Page 19: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/19.jpg)
PGDay07/11/2009 19
/etc/passwd Index Lstat Checksum
Ancienne procédure 4/6
Filename
Cherche « passwd » dans la table Filename
Si absent, insert
Path
Cherche « /etc/ » dans la table Path
![Page 20: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/20.jpg)
PGDay07/11/2009 20
/etc/passwd Index Lstat Checksum
Ancienne procédure 5/6
Filename
Cherche « passwd » dans la table Filename
Si absent, insert
Path
Cherche « /etc/ » dans la table Path
Si absent, insert
![Page 21: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/21.jpg)
PGDay07/11/2009 21
/etc/passwd Index Lstat Checksum
Ancienne procédure 6/6
Filename
Cherche « passwd » dans la table Filename
Si absent, insert
Path
Cherche « /etc/ » dans la table Path
Si absent, insert
FileInsert (PathId, FilenameId, Index, Lstat, Checksum)
![Page 22: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/22.jpg)
PGDay07/11/2009 22
PostgreSQL est lent !
Une transaction par opération (autocommit!)
Une seule session à la base
Temps d'aller et retour entre le director et la base pour chaque opération
Jusqu'à 5 requêtes pour chaque fichier
Reparsing de chaque requête
Perfs acceptables pour MyIsam et SQLite 2, pas pour PostgreSQL, InnoDB, SQLite 3
![Page 23: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/23.jpg)
PGDay07/11/2009 23
Première tentative d'optimisation
Communauté => fsync = off
Solution «instinctive» pour un DBA : procédure stockée ! Réduit les problèmes de dialogue entre SGBD et director, et pas de parsing
Gain : X2, peu intrusif au niveau du code
Rejeté : propriétaire à Postgres, ne s'attaque qu'à une partie des problèmes
![Page 24: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/24.jpg)
PGDay07/11/2009 24
Procédure actuelle« Mode Batch »
![Page 25: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/25.jpg)
PGDay07/11/2009 25
Insertion « Batch » 1/5
/etc/passwd Index Lstat ChecksumFichier
![Page 26: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/26.jpg)
PGDay07/11/2009 26
Insertion « Batch » 2/5
/etc/passwd Index Lstat Checksum
Temporary Batch Table
(une par session)
insert dans une table temporaireVia une connexion dédiée + COPY sous Postgres
![Page 27: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/27.jpg)
PGDay07/11/2009 27
Insertion « Batch » 3/5
Temporary Batch table
Path
Insertion des nouveauxrépertoires
Backup terminé, ou bien limite atteinte.
BeginLock de la tableInsertionCommit (unlock)
![Page 28: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/28.jpg)
PGDay07/11/2009 28
Insertion « Batch » 4/5
Temporary Batch table
Filename
Insertion des nouveauxnoms de fichier
BeginLock de la tableInsertionCommit (unlock)
![Page 29: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/29.jpg)
PGDay07/11/2009 29
Insertion « Batch » 5/5
Temporary Batch table
Path Filename
File Insertion des fichiers(avec jointure sur Path et Filename)Pas de verrouillage
![Page 30: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/30.jpg)
PGDay07/11/2009 30
Et ça marche ?
En production :
X 10
![Page 31: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/31.jpg)
PGDay07/11/2009 31
En production…
File :
1,1 milliard de tuples
Heap : 150 Go
Index : PK : 30 Go, (jobid, pathid, filenameid) : 50 G
Filename :
100 millions de tuples
Heap : 7Go
Index : 10 Go
Path :
23 millions de tuples
Heap : 3 Go
Index : 3 Go
![Page 32: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/32.jpg)
PGDay07/11/2009 32
En production…
![Page 33: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/33.jpg)
PGDay07/11/2009 33
En production…
Côté sauvegardes :
Chaque dimanche :
50 millions de fichiers, 10 To, 373 jobs
Week-end entier :
73 millions de fichiers, 18 To, 670 jobs
Chaque semaine :
120 millions de fichiers, 43 To, 1850 jobs
En ligne dans le système de sauvegardes : 292To/1.1 milliard de fichiers
![Page 34: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/34.jpg)
PGDay07/11/2009 34
<troll>Comparaison entre moteur</troll>
0 5 10 15 20 25 30 35 40 45 50
0
50
100
150
200
250
300
350
400
450
500
Backup timing with new accurate code
45 jobs of 1.5M files (2 in //)
3.1.x isamNew psqlNew innodbNew sqlite3
Backup number
Tim
e (s
ec)
![Page 35: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/35.jpg)
PGDay07/11/2009 35
Et la restauration dans tout ça ?
Vitesse Sauvegarde Temps Restauration
![Page 36: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/36.jpg)
PGDay07/11/2009 36
Et la restauration dans tout ça ?
File75M tuples
FileSystem
Sélection des fichiers : 1.5M fichiers sur 50 jobs ~ 60s
Ecriture du disque (reiserfs)
+
=
~ 5mins
![Page 37: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/37.jpg)
PGDay07/11/2009 37
Sélection des fichiers pour la restauration
SELECT Path.Path, Filename.Name, Temp.FileIndex, Temp.JobId, Temp.LStat FROM (
SELECT DISTINCT ON (FilenameId, PathId) StartTime, JobId, FileId, FileIndex, PathId, FilenameId, LStat FROM File JOIN Job USING (JobId) WHERE JobId IN (1,2,3,4) ORDER BY FilenameId, PathId, StartTime DESC
) AS Temp JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) JOIN Path ON (Path.PathId = Temp.PathId) WHERE Temp.FileIndex > 0 ORDER BY Temp.JobId, Temp.FileIndex ASC
![Page 38: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/38.jpg)
PGDay07/11/2009 38
Pourquoi préférer PostgreSQL ?
Administration « maîtrisée »
Efficacité sur purges
COPY
Stabilité de PostgreSQL
![Page 39: Bacula et PostgreSQL, optimisation et retour d'expérience · 07/11/2009 PGDay 4 Présentation Bacula : solution de sauvegarde réseau *BSD, Linux, Mac OS X, Unix, Windows. Projet](https://reader031.vdocuments.mx/reader031/viewer/2022022705/5bd8c66909d3f26a098c7363/html5/thumbnails/39.jpg)
PGDay07/11/2009 39
Contact et Questions
Marc [email protected]
Eric [email protected]
PS : Sur youtube, rechercher :'faroult sql practice' (merci à lui)