Ich habe cron so konfiguriert, dass pg_dump täglich nach folgender Regel aufgerufen wird:
# xyz database backups:
00 01 * * * root umask 077 && pg_dump --user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz
Grundsätzlich funktioniert es. Die Datenbank wächst relativ schnell und exponentiell (der Exponent ist jedoch nicht sehr groß). Derzeit benötigt der komprimierte Speicherauszug etwa 160 MB. Wenn die Datenbank gesichert wird, beginnt das System zu crawlen. Der Lastdurchschnitt, den ich mit dem top
Befehl gesehen habe, war ungefähr 200, 200, 180
. Grundsätzlich reagiert der Server kaum.
Die erste Frage ist, wie festgestellt werden kann, wo der Engpass liegt. Wird die schlechte Leistung durch schwere E / A-Vorgänge verursacht? Wird es durch Probleme beim Sperren von Tabellen verursacht? Vielleicht ist es ein Speicherproblem? Die Ausgabe des pg_dump
Befehls wird an den gzip
Befehl weitergeleitet. Ist es sequentiell, dh der gesamte Speicherauszug wird im Speicher abgelegt (Austauschproblem?) Und dann komprimiert oder gleichzeitig (dh gzip komprimiert das, was es erhält, und wartet auf mehr)? Kann es durch einen anderen Faktor verursacht werden?
Die zweite Frage ist, wie der Dumpingvorgang für die Hauptfunktionen des Systems weniger aufdringlich gemacht werden kann. Soweit ich weiß, kann der Speicherauszug aufgrund der Datenbankintegrität nicht zu lange dauern. Es gibt Tabellenschreibsperren usw. Was kann ich tun, um die Probleme zu begrenzen (oder zu verzögern, wenn man das Datenbankwachstum berücksichtigt)?
Die dritte Frage : Ist es bereits Zeit, sich über erweiterte Datenbankkonfigurationen zu informieren? Das System funktioniert einwandfrei, wenn keine Datenbanksicherungen durchgeführt werden, aber möglicherweise ist das Problem mit dem Datenbankspeicherauszug ein erstes Symptom für eingehende Probleme?
quelle
pg_dump
100% CPU und es war von gzip. Die Angabepg_dump --compress=0
löste es für mich unter Ubuntu 16.04. Backups waren auch danach super schnell. Achten Sie auf die GZIP-Komprimierung in Containern. möglicherweise nicht das tun, was Sie erwarten.Ich empfehle Ihnen, sich die kontinuierliche Archivierung von postgresql anzuschauen. Hier sind die Vorteile gegenüber der Verwendung von pg_dump:
Es gibt jedoch einige Nachteile (die in den meisten Fällen kein Problem darstellen können):
quelle