Wenn Sie den Gitlab-Support fragen, wie ein 3-TB-Backup für ein lokales Gitlab erstellt werden soll, verwenden Sie unser Tool , das einen Tarball erstellt.
Das scheint mir auf allen Ebenen falsch zu sein. Dieser Tarball enthält den Postgres-Dump, Docker-Images, Repo-Daten, GIT-LFS usw. Config und so weiter. Das Sichern von TB statischer Daten zusammen mit KB sehr dynamischen Daten funktioniert nicht richtig. Und dann kommt die Frage: Wir wollen jede Stunde ein Backup machen.
Frage
Ich würde wirklich gerne von anderen erfahren, wie sie es machen, um ein konsistentes Backup zu erhalten.
ZFS unter Linux wäre in Ordnung für mich, wenn das Teil der Lösung ist.
If your GitLab server contains a lot of Git repository data you may find the GitLab backup script to be too slow. In this case you can consider using filesystem snapshots as part of your backup strategy.
Ich kann jedoch nicht aus Erfahrung sprechen. Aber ich muss vielleicht bald so etwasAntworten:
Für eine so kurze Zeit zwischen Sicherungen (1 Stunde) sollten Sie sich am besten auf Snapshots und
send/recv
Support auf Dateisystemebene verlassen .Wenn die Verwendung von ZoL in Ihrer Umgebung kein Problem darstellt, empfehle ich dringend, es zu verwenden. ZFS ist ein sehr robustes Dateisystem und Sie werden alle Extras (z. B. Komprimierung), die es bietet, wirklich mögen. In Verbindung mit
sanoid/syncoid
kann dies eine sehr starke Sicherungsstrategie darstellen. Der Hauptnachteil ist, dass es nicht im Mainline-Kernel enthalten ist, so dass Sie es separat installieren / aktualisieren müssen.Alternativ können Sie BTRFS verwenden, wenn Sie sich wirklich auf Mainline-Inhalte beschränken möchten. Aber seien Sie sicher, seine (vielen) Nachteile und Pita zu verstehen .
Schließlich ist eine alternative Lösung zu verwenden ,
lvmthin
regelmäßige Backups zu nehmen (zB: mitsnapper
), auf Tools von Drittanbietern angewiesen (zBbdsync
,blocksync
usw.) zu kopieren / Schiff Deltas nur.Ein anderer Ansatz wäre, zwei replizierte Maschinen (über
DRBD
) zu haben , über die Sie unabhängige Snapshots erstellenlvmthin
.quelle
Ich würde überprüfen, was Sie sichern und möglicherweise einen "Multi-Path" -Ansatz verwenden. Sie können beispielsweise die Git-Repositorys sichern, indem Sie ständig Git-Pulls auf einem Sicherungsserver ausführen. Das würde nur das Diff kopieren und Ihnen eine zweite Kopie aller Git-Repositorys hinterlassen. Vermutlich konnten Sie mit der API neue Repos erkennen.
Und verwenden Sie die "eingebauten" Sicherungsverfahren, um die Probleme usw. zu sichern. Ich bezweifle, dass die 3 TB aus diesem Teil stammen, sodass Sie sehr oft Sicherungen mit sehr geringen Kosten durchführen können. Sie können die PostgreSQL-Datenbank auch mit einem Warm-Standby mit Replikation einrichten.
Möglicherweise stammen Ihre 3 TB aus Container-Images in der Docker-Registrierung. Müssen Sie diese sichern? Wenn ja, dann könnte es einen besseren Ansatz dafür geben.
Grundsätzlich würde ich empfehlen, sich genau anzuschauen, was Ihre Sicherung ausmacht, und die Daten in verschiedenen Teilen zu sichern.
Sogar das Backup-Tool von GitLab bietet Optionen zum Ein- und Ausschließen bestimmter Teile des Systems, z. B. der Docker-Registrierung.
quelle
git push --force
wird entweder die Backups brechen oder den Verlauf von ihnen löschen, je nachdem, wie es implementiert ist.