Inhaltsverzeichnis
GitLab ArchLinux - Restore
GitLab ist ein, in der Community Edition unter einer MIT-Lizenz zur Verfügung gestelltes System, zur Verwaltung von Git-Repositorys im Browser, was den unentgeltlichen Betrieb auf einem eigenen Server ermöglicht.
Beschreibung | Externer Link |
---|---|
Homepage | https://gitlab.com/ |
Dokumentation | https://docs.gitlab.com/ |
Versionsvergleich | https://about.gitlab.com/install/ce-or-ee/ |
Installation | https://wiki.archlinux.org/title/PostgreSQL https://wiki.archlinux.org/title/Redis https://wiki.archlinux.org/title/GitLab |
Restore Dokumentation | https://docs.gitlab.com/ee/administration/backup_restore/restore_gitlab.html |
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Vorwort
Als grobe Richtlinie gilt:
Wenn eine Architektur mit weniger als 100 GB Daten Verwendung findet, sind die nachfolgenden drei Schritte für ein erfolgreiches Restore ausreichend:
- Restore-Befehl ausführen.
- Objektspeicher wiederherstellen, falls zutreffend.
- Manuelles einspielen der gesicherten Konfigurationsdateien.
Welche Daten müssen wiederhergestellt werden?
- PostgreSQL-Datenbanken
- Git-Repositories
- Blobs
- Container-Registrierung
- Konfigurationsdateien
- Es sollten Sicherungskopien des Konfigurationsverzeichnisses wiederhergestellt werden. Zumindest muss ein Backup von nachfolgenden Dateien manuell wiederhergestellt werden:
/etc/webapps/gitlab/gitlab.yml
/etc/webapps/gitlab/secrets.yml
/etc/webapps/gitlab/secret
/etc/webapps/gitlab-shell/secret
- oder am besten von den beiden nachfolgenden Verzeichnissen:
/etc/webapps/gitlab
/etc/webapps/gitlab-shell
- Andere Daten
Voraussetzungen
Als Voraussetzung für die hier, nachfolgend durchgeführtes Backup von GitLab Version 16.x ist:
- Lauffähige Installation von GitLab
- Siehe auch den internen Link: GitLab ArchLinux
- Siehe auch den internen Link: GitLab ArchLinux - LDAP-Konfiguration
- Ein erstelltes Backup der gleichen Version von GitLab
- siehe auch den internen Link: GitLab ArchLinux - Backup
GitLab: Dienste/Daemons stoppen
Nachdem GitLab wahrscheinlich bereits lauffähig gestartet wurde, ist es erforderlich GitLab zu stoppen.
Da ein systemd-Target - hier in diesem Fall gitlab.target
nicht einfach gestoppt werden kann, ist es sinnvoll sich den Inhalt von gitlab.target
mit nachfolgendem Befehl anzeigen zu lassen:
# systemctl cat gitlab.target # /usr/lib/systemd/system/gitlab.target [Unit] Description=GitLab - Self Hosted Git Management Requires=gitlab-puma.service gitlab-workhorse.service Wants=gitlab-sidekiq.service gitlab-backup.timer gitlab-gitaly.service gitlab-mailroom.service [Install] WantedBy=multi-user.target
Hier sind alle Dienste/Daemons welche ebenfalls mittels systemd gestartet werden aus dem gitlab.target
in den Bereichen
Requires
Wants
aufgelistet
Diese können dann mit nachfolgendem Befehl gestoppt werden:
# systemctl stop gitlab-puma.service gitlab-workhorse.service gitlab-sidekiq.service gitlab-backup.timer gitlab-gitaly.service gitlab-mailroom.service
GitLab: Restore-Befehl
Nachfolgende Befehle führen ein Restore aus einem Backup von GitLab durch.
Eine Auflistung mittels des Backup-Befehls erstellten Backup-Datei, kann mit nachfolgendem Befehl durchgeführt werden und sollte eine Datei in etwa wie die nachfolgende zum Vorschein bringen:
# ls -l /var/lib/gitlab/backups total 644 -rw------- 1 gitlab gitlab 174080 Mar 23 07:59 1711175567_2024_03_23_16.9.2_gitlab_backup_manual.tar -rw------- 1 gitlab gitlab 481280 Mar 23 07:32 1711175567_2024_03_23_16.9.2_gitlab_backup.tar
ACHTUNG - Hier ist die vom Backup-Befehl erstellte Datei zu berücksichtigen!
Damit alle Daten wiederhergestellt werden, ist es jedoch erforderlich, das der Dienst/Daemon
gitlab-gitaly.service
läuft, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl start gitlab-gitaly.service
ACHTUNG - Der Dienst/Daemon
gitlab-gitaly.service
muss zwingend gestartet sein !!!
Mit nachfolgendem Befehl muss zwingend in das Verzeichnis /usr/share/webapps/gitlab
gewechselt werden:
# cd /usr/share/webapps/gitlab
Der nachfolgende Befehl, führt dann den Restore von GitLab aus:
# sudo -u gitlab $(cat environment | xargs) bundle exec rake gitlab:backup:restore RAILS_ENV=production BACKUP=1711175567_2024_03_23_16.9.2
ACHTUNG -
- keine Angabe des Pfades zur Sicherungsdatei
- keine Angabe von
_gitlab_backup.tar
!!!
# sudo -u gitlab $(cat environment | xargs) bundle exec rake gitlab:backup:restore RAILS_ENV=production BACKUP=1711175567_2024_03_23_16.9.2 2024-03-23 16:27:29 +0100 -- Unpacking backup ... 2024-03-23 16:27:29 +0100 -- Unpacking backup ... done 2024-03-23 16:27:29 +0100 -- Restoring database ... 2024-03-23 16:27:29 +0100 -- Be sure to stop Puma, Sidekiq, and any other process that connects to the database before proceeding. For Omnibus installs, see the following link for more information: https://gitlab.tachtler.net/help/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations Before restoring the database, we will remove all existing tables to avoid future upgrade problems. Be aware that if you have custom tables in the GitLab database these tables and all data will be removed. Do you want to continue (yes/no)? yes Removing all tables. Press `Ctrl-C` within 5 seconds to abort 2024-03-23 16:27:39 +0100 -- Cleaning the database ... 2024-03-23 16:27:41 +0100 -- done Restoring PostgreSQL database gitlabhq_production ... SET SET SET SET SET set_config ------------ (1 row) SET SET SET SET ALTER TABLE ... DROP TRIGGER ... DROP INDEX ... ALTER TABLE ... DROP SEQUENCE DROP TABLE ... DROP FUNCTION ... DROP TABLE ... CREATE SCHEMA ALTER SCHEMA COMMENT CREATE SCHEMA ALTER SCHEMA COMMENT CREATE EXTENSION COMMENT CREATE EXTENSION COMMENT CREATE FUNCTION ALTER FUNCTION CREATE FUNCTION ALTER FUNCTION CREATE FUNCTION ALTER FUNCTION SET SET ... CREATE TABLE ALTER TABLE CREATE FUNCTION ... CREATE SEQUENCE ALTER SEQUENCE ALTER SEQUENCE ... COPY 0 COPY 16 COPY 0 ... setval -------- 1 (1 row) ... ALTER TABLE ... CREATE INDEX ... ALTER INDEX ... CREATE TRIGGER ... ALTER TABLE [DONE] Source backup for the database ci doesn't exist. Skipping the task 2024-03-23 16:27:55 +0100 -- Restoring database ... done 2024-03-23 16:27:55 +0100 -- Restoring repositories ... 2024-03-23 16:27:55 +0100 -- Restoring repositories ... done 2024-03-23 16:27:55 +0100 -- Restoring uploads ... 2024-03-23 16:27:55 +0100 -- Restoring uploads ... done 2024-03-23 16:27:55 +0100 -- Restoring builds ... 2024-03-23 16:27:55 +0100 -- Restoring builds ... done 2024-03-23 16:27:55 +0100 -- Restoring artifacts ... 2024-03-23 16:27:55 +0100 -- Restoring artifacts ... done 2024-03-23 16:27:55 +0100 -- Restoring pages ... 2024-03-23 16:27:55 +0100 -- Restoring pages ... done 2024-03-23 16:27:55 +0100 -- Restoring lfs objects ... 2024-03-23 16:27:55 +0100 -- Restoring lfs objects ... done 2024-03-23 16:27:55 +0100 -- Restoring terraform states ... 2024-03-23 16:27:55 +0100 -- Restoring terraform states ... done 2024-03-23 16:27:55 +0100 -- Restoring packages ... 2024-03-23 16:27:55 +0100 -- Restoring packages ... done 2024-03-23 16:27:55 +0100 -- Restoring ci secure files ... 2024-03-23 16:27:55 +0100 -- Restoring ci secure files ... done This task will now rebuild the authorized_keys file. You will lose any data stored in the authorized_keys file. Do you want to continue (yes/no)? yes 2024-03-23 16:28:04 +0100 -- Deleting tar staging files ... 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/backup_information.yml 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/db 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/uploads.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/builds.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/artifacts.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/pages.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/lfs.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/terraform_state.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/packages.tar.gz 2024-03-23 16:28:04 +0100 -- Cleaning up /var/lib/gitlab/backups/ci_secure_files.tar.gz 2024-03-23 16:28:04 +0100 -- Deleting tar staging files ... done 2024-03-23 16:28:04 +0100 -- Deleting backups/tmp ... 2024-03-23 16:28:04 +0100 -- Deleting backups/tmp ... done 2024-03-23 16:28:04 +0100 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data and are not included in this backup. You will need to restore these files manually. 2024-03-23 16:28:04 +0100 -- Restore task is done. 2024-03-23 16:28:04 +0100 -- Deleting backup and restore PID file ... done
HINWEIS - Die nachfolgende Warnung, kann ignoriert werden, da dies nur für eine Omnibus Installation relevant ist!
2024-03-23 16:28:04 +0100 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data and are not included in this backup. You will need to restore these files manually.
GitLab: Dienste/Daemons starten
Mit nachfolgendem Befehl wird GitLab wieder gestartet.
Dieser systemd-Start beinhaltet auch den Start alle anderen benötigten Komponenten bzw. Dienste/Daemons von GitLab.
# systemctl start gitlab.target
Eine Überprüfung, ob der Start des Ziel/Target erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:
● gitlab.target - GitLab - Self Hosted Git Management Loaded: loaded (/usr/lib/systemd/system/gitlab.target; enabled; preset: disabled) Active: active since Fri 2024-03-22 09:34:35 CET; 30min ago Mar 22 09:34:35 server systemd[1]: Reached target GitLab - Self Hosted Git Management.