Wenn Du einen mysqldump im Speicher zippen möchtest, zum Beispiel weil er unkomprimiert zu groß ist, dann kannst Du Dich des folgenden einfachen Tricks bedienen:
Mein Problemszenario ist folgendes:
- Zabbix-Server hat eine 34 GB große db.
- jede Nacht wird per cron ein unkomprimierter dump der Zabbix-db mit dem Befehl mysqldump erzeugt.
Die Platte gerät dabei in akute Atemnot und Zabbix meldet ein Problem, weil die Platte über 90% Füllstand gerät. - kurz darauf kommt logrotate vorbei und zippt den dump.
Zabbix erkennt das und schickt ein OK, weil der Füllstand der Platte wieder unter 90% gesunken ist.
Um zu vermeiden, dass der Plattenfüllstand so schwankt und dass die täglichen Alarme kommen, habe ich den mysqldump-Befehl einfach durch ´ne Pipe gejagt. Dabei wird der Dump sofort gezippt. Das erzeugt zwar temporär hohe CPU-Auslastung durch das Komprimieren, führt aber (noch) nicht zu neuen Zabbix-Alarmen :-).
Hier zur allgemeinen Belustigung ein Screenshot des Zabbix-Graphen, der die Auslastung der Platte wiederspiegelt:

Die alte mysqldump Syntax war:
/usr/bin/mysqldump --all-databases -u root --password="RootPWHierRein" > /pfad/zum/Speicherort/all_databases.sql
Die neue mysqldump Syntax sieht wie folgt aus:
/usr/bin/mysqldump --all-databases -u root --password="RootPWHierRein" | gzip > /pfad/zum/Speicherort/all_databases.sql.gz
Es gäbe auch die Möglichkeit, eine andere Kompression einzusetzen, wie zum Beispiel bzip2 . Allerdings habe ich mich von Quellen im Internet davon überzeugen lassen, dass bzip2 5-6 mal so lange zum Komprimieren benötigt, dafür aber in meinem Fall nur eine Verkleinerung der Dateigröße um 20% erzielt. Der Befehl wird aber automatisiert per cron aufgerufen und soll schnellstmöglich durchlaufen und möglichst wenig CPU verbrauchen, um bestimmt keine Zabbix Trigger auszulösen!
Die Änderung in logrotate:
Die Änderung muss ich natürlich auch in logrotate vorhalten, jetzt um den gzip-Teil erleichtert:

Ob die logrotate Änderung funktioniert, teilt mir der folgende Befehl mit (f für force):
logrotate -f /etc/logrotate.d/mysqldump
dabei werden die mit dem geänderten Befehl zum Dump der mysql erzeugten Files mit dem Muster *.sql.gz zwangsweise rotiert.
Mit dieser simplen Vorgehensweise konnte das teilweise ernste (Platte könnte volllaufen!) und teilweise lästige Problem elegant und effektiv aus der Welt geschafft werden.