Ich habe bislang bzip2 für die Komprimierung meiner mariadb-backup-Dateien (und pg_basebackup) genutzt, weil es effizient, aber nicht unbedingt das schnellste Tool ist.
So sieht es in Kern meines Backupskript aus:
/usr/bin/mariabackup --defaults-extra-file=/root/.my.cnf --backup --stream=xbstream | bzip2 -c > $BACKUPDIR/mariadb-backup-$(date -Iminutes).xbstream.bz2
Das funktionierte bislang problemlos, hat aber seine Zeit gebraucht. Die Eckwerte: Die Datenbank - und mariabackup/xbstream) sind etwa 145 GB groß, komprimiert etwa 9 GB, was schon mal nicht schlecht ist. Dauer:
mariabackup.service: Consumed 3h 39min 5.226s CPU time.
Das war mir ein wenig lange, was 3,5 h Dauerlast. Also habe ich nach Alternativen gesucht, z.B. pbzip (paralleles bzip) oder xz mit Threading. Ich bin aber dann auf zstandard gekommen.
Der erste Versuch schlug fehl, ich hatte irgendwo gelesen:
zstd -22 --ultra --long
Das dauert viel zu lange, nach über 3 Stunden habe ich das abgebrochen.
Neuer Versuch, diesmal ohne die wahnwitzigen Werte und multithreading, wegen der Sicherheit 50% der Kerne:
/usr/bin/mariadb-backup --defaults-extra-file=/root/.my.cnf --backup --stream=xbstream | zstd -T3 > $BACKUPDIR/mariadb-backup-$(date -Iminutes).xbstream.zst
Das Ergebnis ist beeindruckend.
1.) mariabackup.service: Consumed 10min 20.343s CPU time, 5.5G memory peak.
10 Minuten statt 3h40!
2.) Die Dateigröße: 8,0 GB statt 8,9 GB!
Kurzum: Nur 90% des Platz von bzip2, und 22x(!) mal schneller. Die Frage wer gewonnen hat sollte sich damit erledigt haben :-)