Bacula mit MySQL extrem langsam

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 08.08.2014 16:14:06

Hallo,

erstmal ein Hallo an alle. Ich benutze Wheezy mit Proxmox als Hypervisor für meine VM's welche ebenfalls unter KVM mit Wheezy laufen. Vor kurzem hab ich Bacula eingerichtet, da es mir mehrfach empfohlen wurde und es auch einen sehr guten Eindruck macht. Leider hab ich aber ein Problem, welches ich bisher nicht lösen konnte.

Die ersten Jobs die Bacula ausgeführt hat, sind zwar schön durchgelaufen, allerdings haben sie EWIG gebraucht. Ich begab mich also auf Fehlersuche. Nach vielem vielem lesen und testen der Übertragungsraten mit netcat kam ich dann zu dem Schluss, dass es nicht an der Übertragung liegen kann. Die VMs sind mit in einem privaten Netz mit dem Hypervisor auf dem der Bacula Director läuft verbunden, die Übertragungsraten sind mit dem paravitualisierten Netzwerkadapter nahezu bei der Geschwindigkeit von einem normalen Kopiervorgang zwischen zwei Paritionen.

Der Hypervisor hat nur ein RAID1, wesshalb ich zuerst vermutete, dass einfach die Platte nicht schneller ist. Dem war aber nicht so, ich schaffe bei einem Transfer per netcat durchaus Übertragungsraten von an die 100MB/s. Bacula kommt gerade mal auf 0,5-3MB/s.

Also hab ich mal das Attribut Spooling eingeschalten und siehe da:

Ohne Attribut Spooling

Code: Alles auswählen

JobId 17: Job write elapsed time = 00:13:24, Transfer rate = 1.585 M Bytes/second
Mit Attribut Spooling

Code: Alles auswählen

JobId 7: Job write elapsed time = 00:03:40, Transfer rate = 38.55 M Bytes/second
Die Transferrate ist drastisch gestiegen. Der Transfer ist in ein paar Minuten durch, aber das despooling dauert und dauert und dauert.

Also hab ich das MySQL Log sowie das Slow-Log eingeschalten und siehe da, Bacula braucht ewig für die Inserts in die batch Tabelle. Das sind gerade mal zwischen 3-20 queries pro Sekunde.

Ich meine die hier:

Code: Alles auswählen

INSERT INTO batch VALUES (203,7,'/home/syscp/webs/samberun/webalizer/haranni-ak11.de/','usage.png','P0C DDXP IGk B A A A ln BAA I BT5IXr BSBljB BTnHbX A A C','bfurdLgmHTESmxupdKe2Iw',0)
Wenn er damit durch ist dropt er den Batch table wieder.

Die ganze Bacula Datenbank also den Catalog hab ich mit mysqldump gedumpt und dann wieder importiert, dafür braucht er gerade mal kanpp ne Minute, also daran kann es eigentlich nicht liegen. Es muss wirklich an den "insert into batch" inserts liegen.

So jetzt die große Frage, wieso ist das so langsam? Braucht MySQL für diese Inserts so lange oder schickt der Bacula-Director sie so langsam?

Nach den Inserts macht er ein:

Code: Alles auswählen

                    39 Query     LOCK TABLES Path write, batch write, Path as p write
32588                    39 Query     INSERT INTO Path (Path) SELECT a.Path FROM (SELECT DISTINCT Path FROM batch) AS a WHERE NOT EXISTS (SELECT Path FROM Path AS p WHERE p.Path = a.Path)
32589                    39 Query     UNLOCK TABLES
32590                    39 Query     LOCK TABLES Filename write, batch write, Filename as f write
32591                    39 Query     INSERT INTO Filename (Name) SELECT a.Name FROM (SELECT DISTINCT Name FROM batch) AS a WHERE NOT EXISTS (SELECT Name FROM Filename AS f WHERE f.Name = a.Name)
32592                    39 Query     UNLOCK TABLES
32593                    39 Query     INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5, DeltaSeq) SELECT batch.FileIndex, batch.JobId, Path.PathId, Filename.FilenameId,batch.LStat, batch.MD5, batch.DeltaSeq FROM batch JOIN Path ON (batch.Path = Path.Path      ) JOIN Filename ON (batch.Name = Filename.Name)
32594 140808 15:45:27    39 Query     DROP TABLE batch
Das geht binnen EINER Sekunde.

Hat jemand eine Idee, wie ich das weiter debuggen könnte? Ich will nicht das ganze Bacula-Ding auseinander nehmen um zu sehen, wie schnell er die MySQL Commands schickt oder die Datenbank.

Ich benutz Bacula und MySQL so wie es in den Repos ganz offiziell enthalten ist, nix selbst compiltes.

Danke euch für die Mühe!
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Colttt
Beiträge: 2986
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von Colttt » 08.08.2014 19:06:05

Wie sah denn dein netcat Befehl aus? Und was ist wenn du mittels Bacula wieder etwas herstellst? Ist es dann auch langsam?

Wie sieht denn die Auslastung des Servers bzw von MySQL (mytop installieren) aus?
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 08.08.2014 21:02:16

Auf Empfangsseite:
netcat -l -p 9102 > test.tar
(stehend im laufwerk in das auch die backups kommen)

Auf der Sender-Seite:
tar -cvf - test/ | netcat <DirectorIP> 9102

Aber ist auch egal, da wie gesagt auch der Bacula File Transfer sehr schnell ist, seitdem ich das Attribute Spooling eingeschalten habe. Wie gesagt mein Problem ist ja nicht, dass der Transfer ansich langsam ist, sondern nur dass das die INSERT INTO batch .... ewig brauchen.

Restore Jobs sind schnell, wie es sein soll.

Die mytop ausgabe, kann ich nicht so richtig deuten:

Code: Alles auswählen

MySQL on localhost (5.5.38-0+wheezy1-log)               up 0+03:25:21 [21:01:02]
 Queries: 25.0    qps:    0 Slow:     0.0         Se/In/Up/De(%):    220/00/00/00
              qps now:    0 Slow qps: 0.0  Threads:    3 (   2/   0) 00/00/00/00
 Key Efficiency: 100.0%  Bps in/out:   0.0/  8.8   Now in/out:   8.4/ 1.7k

        Id      User         Host/IP         DB      Time    Cmd Query or State
        --      ----         -------         --      ----    --- --------------
        44    bacula localhost:42776     bacula         0  Query INSERT INTO batch VALUES (4734,12,'/path','index.html','P0C DijN IGk B Cc7 Cc7 A f BAA I BT5Ifd BTl+0+ BTryQH A
        48      root       localhost     bacula         0  Query show full processlist
        43    bacula localhost:42773     bacula       249  Sleep
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 10.08.2014 23:38:25

So, ein test mit sqlite ist entgegen meinen Erwartungen sehr viel schneller verlaufen. Das despooling der Attribute in die sqlite Datenbank war binnen Sekunden abgeschlossen. Es kann doch nicht sein, das sqlite wesentlich schneller ist, als mysql, ich rede ja nicht von ein paar Sekunden differenz. Wenn sqlite mit der Aufgabe nach ein paar Sekunden fertig ist und MySQL benötigt dafür STUNDEN, dann muss ja was falsch laufen?

Ich kann mir nur eine totale fehlkonfiguration meines mysql's vorstellen oder einen bug im Paket bacula-director-mysql.

Das ist meine my.conf: http://pastebin.com/raw.php?i=qLFVtmRq
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von hec_tech » 11.08.2014 13:45:38

Moment mal ist die Datenbank innodb oder myisam?

Zu MySQL und Bacula kann ich nichts sagen aber ich würde dir sowieso raten auf BareOS zu wechseln. Ist mehr oder weniger der freie Bacula Nachfolger und stellt auch Debian Pakete bereit.

Die Konfig ist mehr oder weniger Ident und diverse Geschwindigkeitsoptimierungen sind da drinnen die Bacula nicht zugelassen hat.

Bei Datenbanken habe ich mit Postgres wesentlich bessere Erfahrungen gemacht. Ist aber immer alles eine Frage der Konfiguration bzw Tunings.

Ich weiß jetzt nicht wie groß deine DB ist aber versuch mal mit den Werten herumzuspielen:

Code: Alles auswählen

table_cache              = 35000
tmp_table_size                  = 1500M
max_heap_table_size        = 1500M
key_buffer                        = 500M

Colttt
Beiträge: 2986
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von Colttt » 11.08.2014 18:58:18

Bareos +1

Zudem probiert es mit PostgreSQL wenn dann auch schneller geht einfach mal nen bugreport erstellen..
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 13.08.2014 10:00:58

hec_tech hat geschrieben:Moment mal ist die Datenbank innodb oder myisam?

Zu MySQL und Bacula kann ich nichts sagen aber ich würde dir sowieso raten auf BareOS zu wechseln. Ist mehr oder weniger der freie Bacula Nachfolger und stellt auch Debian Pakete bereit.

Die Konfig ist mehr oder weniger Ident und diverse Geschwindigkeitsoptimierungen sind da drinnen die Bacula nicht zugelassen hat.

Bei Datenbanken habe ich mit Postgres wesentlich bessere Erfahrungen gemacht. Ist aber immer alles eine Frage der Konfiguration bzw Tunings.

Ich weiß jetzt nicht wie groß deine DB ist aber versuch mal mit den Werten herumzuspielen:

Code: Alles auswählen

table_cache              = 35000
tmp_table_size                  = 1500M
max_heap_table_size        = 1500M
key_buffer                        = 500M
Meine Datenbank hat aktuell ungefähr 100-150MB mehr auf keinen Fall.

Bareos hab ich mir auch schon angeschaut und überlegt es zu installieren, schreibt man das nicht Bareos statt BareOS (ist ja kein OS)?
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Colttt
Beiträge: 2986
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von Colttt » 13.08.2014 10:03:03

war bestimmt nen tipfehler :)
Debian-Nutzer :D

ZABBIX Certified Specialist

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von hec_tech » 13.08.2014 14:14:29

Ja wobei der Name ja wirklich dazu einladet ;)

Ok dann setz die Werte runter die brauchst du dann nicht in der Größe.

jenzuslongus
Beiträge: 15
Registriert: 27.10.2014 21:59:15
Lizenz eigener Beiträge: MIT Lizenz

Re: Bacula mit MySQL extrem langsam

Beitrag von jenzuslongus » 27.10.2014 22:18:10

Hallo zusammen,

ich klinke mich mal ein, weil ich wissen wollte, ob es Fortschritte mit mysql und bacula gibt. Bei mir tritt dasselbe Probleme auf wie bei aPollO2k11, ich habe es bisher auch nicht in den Griff bekommen.
Momentan ist es mal wieder so weit, dass seit Stunden die Attribute despoolt werden.

Code: Alles auswählen

27-Oct 13:20 boromir-sd JobId 7129: Sending spooled attrs to the Director. Despooling 622,804,647 bytes ...
Die ganze Prozedur hat jetzt bis 21:55 Uhr gedauert. Habt ihr eine Lösung gefunden?

Vielen Dank für Eure Hilfe

jenzuslongus
Beiträge: 15
Registriert: 27.10.2014 21:59:15
Lizenz eigener Beiträge: MIT Lizenz

Re: Bacula mit MySQL extrem langsam

Beitrag von jenzuslongus » 30.01.2015 15:33:24

Ich habe eine Lösung gefunden. Bei mir waren die MySQL-Tabellen von bacula alle von Typ MyISAM, Die habe ich alle nach InnoDB umgewandelt:

Code: Alles auswählen

mysql> ALTER TABLE `File` ENGINE=InnoDB;
Danach dauerte das De-Spooling nur noch 20 Minuten. Ich hoffe, dass das bei euch auch hilft.

Code: Alles auswählen

25-Jan 23:17 boromir-sd JobId 7500: Sending spooled attrs to the Director. Despooling 751,192,462 bytes ...
25-Jan 23:34 boromir-dir JobId 7500: Bacula boromir-dir 5.2.6 (21Feb12):
Viele Grüße, Jens

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 28.09.2015 17:22:15

Danke für die Info. Ich werde es demnächst einmal ausprobieren. Ich hab jetzt seit einer weile alles mit SQLite am laufen, da meine Datenbank nicht so groß ist. Aber mir wäre es generell lieber wenn es in MySQL laufen würde.
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Benutzeravatar
foolio
Beiträge: 25
Registriert: 13.05.2008 14:27:41
Wohnort: Berlin
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von foolio » 29.09.2015 18:20:21

SQLite 8O
Ich empfehle für Bacula und den Kollegen Bareos auf jeden Fall PostgreSQL. Funktioniert auch in größeren Umgebungen fix.
C'est tres oink!

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 29.09.2015 19:25:17

Was spricht bei einem 3 Rechner System gegen SQLite? Ausser das es SQLite ist?

Klar in größeren Umgebungen würde ich immer auf MySQL und PostreSQL zurückgreifen, aber es kommt doch auch sehr auf das Szenario an. Ich hab jedenfalls seit fast 1 Jahr keine Probleme.
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Benutzeravatar
gehrke
Beiträge: 151
Registriert: 02.01.2015 09:15:41

Re: Bacula mit MySQL extrem langsam

Beitrag von gehrke » 08.01.2016 07:53:42

Mal eine Frage zum Verständnis: Nach meinen Informationen wird 'Spooling' ausschließlich dazu verwendet, den Datenfluss zu einem Bandlaufwerk möglichst konstant zu halten, um langwierige Stop-Start-Prozesse auf diesem Laufwerk zu vermeiden.

Demnach dürfte dieses Feature für Scenarien mit einem festplatten-basierten Storage bedeutungslos bzw. sogar schädlich sein, oder?
TNX
http://www.youtube.com/watch?v=PpUrMk3g_og (Angriff auf die Freiheit von Ilija Trojanow / Juli Zeh) - let’s encrypt

Benutzeravatar
aPollO2k11
Beiträge: 19
Registriert: 08.08.2014 15:37:04
Wohnort: Stuttgart

Re: Bacula mit MySQL extrem langsam

Beitrag von aPollO2k11 » 08.01.2016 12:05:43

gehrke hat geschrieben:Mal eine Frage zum Verständnis: Nach meinen Informationen wird 'Spooling' ausschließlich dazu verwendet, den Datenfluss zu einem Bandlaufwerk möglichst konstant zu halten, um langwierige Stop-Start-Prozesse auf diesem Laufwerk zu vermeiden.

Demnach dürfte dieses Feature für Scenarien mit einem festplatten-basierten Storage bedeutungslos bzw. sogar schädlich sein, oder?
TNX
Ich hatte es auch ohne spooling versucht, da war das Backup aber ziemlich langsam, was warscheinlich an dem lahmen MySQL lag. Ich hab es mit SQLite und PostgreSQL nicht noch einmal ohne Spooling versucht. Wieso sollte es "schädlich" sein? Die Datei-Attribute werden halt erst einmal "gesammelt" und dann mit einem rutsch in den Katalog gespeichert statt ständig zwischen Sicherung der Datei und schreiben der Attribute hin und her zu springen.
Das Wissen über das Mögliche wächst exponential zum Wissen darüber, wie man das Mögliche möglich macht. - aPollO2k11 ;)

Benutzeravatar
gehrke
Beiträge: 151
Registriert: 02.01.2015 09:15:41

Re: Bacula mit MySQL extrem langsam

Beitrag von gehrke » 08.01.2016 18:26:30

gehrke hat geschrieben:Mal eine Frage zum Verständnis: Nach meinen Informationen wird 'Spooling' ausschließlich dazu verwendet, den Datenfluss zu einem Bandlaufwerk möglichst konstant zu halten, um langwierige Stop-Start-Prozesse auf diesem Laufwerk zu vermeiden.
Die Frage war ernst gemeint - es ging mir nicht darum, jemanden zu kritisieren. Vielleicht gibt es ja Seiteneffekte, die ich nicht kenne...

Bin noch nicht so sattelfest mit bacula und habe das Thema nachgelesen (weil ich ebenfalls Performance-Probleme habe). Im gleichnamigen Buch von Philipp Storz taucht das Thema Data Spooling tatsächlich nur im Kontext von 'Tapelibrary' auf und wird nur mit den Eigenheiten von Bandlaufwerken begründet.
aPollO2k11 hat geschrieben:
gehrke hat geschrieben:Demnach dürfte dieses Feature für Scenarien mit einem festplatten-basierten Storage bedeutungslos bzw. sogar schädlich sein, oder?
Wieso sollte es "schädlich" sein?
Wenn es im Falle von Disk-Storage nutzlos ist, dann erhöht es sinnlos die Komplexität. Der Autor weißt auch explizit darauf hin, dass das Spool-Verzeichnis selbst aus dem Backup excluded werden muss, andernfalls drohen Endlosschleifen.
http://www.youtube.com/watch?v=PpUrMk3g_og (Angriff auf die Freiheit von Ilija Trojanow / Juli Zeh) - let’s encrypt

Benutzeravatar
heisenberg
Beiträge: 3548
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Bacula mit MySQL extrem langsam

Beitrag von heisenberg » 08.01.2016 20:54:48

Das hat mich auch neugierig gemacht, warum das bacula mit MySQL so langsam ist. Ich würde mich wundern wenn's an mysql liegt. Ich habe eher den Verdacht, dass bacula das Laden der Daten in mysql so erledigt, dass dies nicht auf schnellstmögliche Weise passiert. Auch Wenn das ein paar Millionen Records sind, darf das nicht so lange dauern.

Bzgl. der Vorschläge hier statt MySQL lieber Postgres zu verwenden, habe ich von den Schreibern hier keinerlei Gründe dafür gelesen.

Allerdings sind auf der Seite von Bacula Benchmarkergebnisse zu sehen, die Postgres und MySQL einander gegenüberstellen. Postfix wird dort als ca. 6 Mal schneller dargestellt. Könnte sich also durchaus lohnen.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von hec_tech » 08.01.2016 21:15:56

Eventuell ist die Datenbankanbindung schlecht umgesetzt für MySQL müsste man sich mal anschaun wäre hier interessant bareos mit bacula zu vergleichen.

Wobei ich gelesen habe dass im bareos da irgend ein Patch drinnen ist der die Geschwindigkeit massiv erhöht eventuell hat der auch damit zu tun.

Benutzeravatar
gehrke
Beiträge: 151
Registriert: 02.01.2015 09:15:41

Re: Bacula mit MySQL extrem langsam

Beitrag von gehrke » 08.01.2016 21:47:46

Wobei doch in der Datenbank (welche auch immer) eigentlich nur die Meta-Daten (AKA Catalog) geschrieben werden. In meinem konkreten Fall bin ich mir ziemlich sicher, dass die Performance der Datenbank im Vergleich zum Lesen, Entschlüsseln, Transport, Verschlüsseln und Speichern der Daten im TB-Bereich überhaupt nicht ins Gewicht fällt. Aber ich kann mich ja irren, deshalb frage ich...
http://www.youtube.com/watch?v=PpUrMk3g_og (Angriff auf die Freiheit von Ilija Trojanow / Juli Zeh) - let’s encrypt

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Bacula mit MySQL extrem langsam

Beitrag von hec_tech » 10.01.2016 12:32:34

Da habe ich ganz andere Erfahrungen zwar nicht mit Bacula/Bareos aber mit BackupExec und NetApp.
Da geht es um ein paar hundert TB und wir sehen extreme Unterschiede zwischen den Jobs je nach Anzahl der Files von denen die Metadaten geholt werden müssen.
Die Jobs haben hier bei der Geschwindkeit Unterschiede vom Faktor 10 also hängt es definitiv mit den Metadaten und der Geschwindigkeit zusammen.

Für ein Backup von ein paar großen Files macht es nicht viel Unterschied aber bei vielen kleinen Dateien wird es leider extrem. Oft braucht man auch mehrere Tape Drives um langsame und schnelle Jobs zu trennen.
Wird aber alles erst ab einer gewissen Größe und Laufzeit der Jobs notwendig.

Antworten