OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

GitLab Community Edition 14.5.1をバックアップ

カテゴリ:OSSセットアップ | ソフトウェア:GitLab | タグ:
最終更新日:2022/08/21 | 公開日:2021/12/14

目次

概要

 GitLab Community Edition 14.5.1をインストールして利用していましたが、 別のサーバへ環境を引っ越すことにしたので、移行のためにGitLabのバックアップを取得しました。 その時に実行した手順です。

<注意点>

  • バージョン12.1以前と12.2以降でバックアップコマンドが異なります。本手順は12.2以降のコマンドを使用しています。
  • 本バックアップを使ってリストアできるのはバックアップしたGitLabと厳格に同じバージョン同じエディション(CE/EE)が前提となります。
  • Linuxのファイルシステム上に保持されている設定ファイルなどはバックアップの対象にならないため、個別にバックアップする必要があります。
  • 構成

    サーバ構成

    OS

    AlmaLinux release 8.4 (Electric Cheetah) aarch64

    インストール済み主要パッケージ

    • gitlab-ce-14.5.1-ce.0.el8.aarch64.rpm
    • postfix-3.5.8-1.el8.aarch64.rpm

    手順

    GitLabのデータのバックアップ

    バックアップ

     GitLabが提供しているバックアップコマンドを実行します。 バックアップ実行時はGitLabの停止は行っていません。 内部的にPostgreSQLの論理バックアップを取得しているようなので停止するとバップアップは実行できないと思います。

    # gitlab-backup create
    2021-12-03 02:25:25 +0900 -- Dumping database ...
    Dumping PostgreSQL database gitlabhq_production ... [DONE]
    2021-12-03 02:25:47 +0900 -- done
    2021-12-03 02:25:47 +0900 -- Dumping repositories ...
    time="2021-12-02T17:25:50.249Z" level=info msg="started create" command=create gl_project_path=gitlab-instance-a71a8d64/Monitoring relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git storage_name=default
    time="2021-12-02T17:25:50.597Z" level=warning msg="skipped create" command=create error="manager: repository empty: repository skipped" gl_project_path=gitlab-instance-a71a8d64/Monitoring relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git storage_name=default
    time="2021-12-02T17:25:50.891Z" level=info msg="started create" command=create gl_project_path=gitlab-instance-a71a8d64/Monitoring.wiki relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git storage_name=default
    time="2021-12-02T17:25:50.904Z" level=info msg="started create" command=create gl_project_path=gitlab-instance-a71a8d64/Monitoring relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design.git storage_name=default
    time="2021-12-02T17:25:50.916Z" level=warning msg="skipped create" command=create error="manager: repository empty: repository skipped" gl_project_path=gitlab-instance-a71a8d64/Monitoring relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design.git storage_name=default
    time="2021-12-02T17:25:50.916Z" level=info msg="started create" command=create gl_project_path=homedev/trial-project relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git storage_name=default
    time="2021-12-02T17:25:50.926Z" level=warning msg="skipped create" command=create error="manager: repository empty: repository skipped" gl_project_path=gitlab-instance-a71a8d64/Monitoring.wiki relative_path=@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git storage_name=default
    time="2021-12-02T17:25:50.928Z" level=info msg="started create" command=create gl_project_path=homedev/trial-project.wiki relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki.git storage_name=default
    time="2021-12-02T17:25:51.022Z" level=warning msg="skipped create" command=create error="manager: repository empty: repository skipped" gl_project_path=homedev/trial-project.wiki relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki.git storage_name=default
    time="2021-12-02T17:25:51.022Z" level=info msg="started create" command=create gl_project_path=homedev/trial-project relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.design.git storage_name=default
    time="2021-12-02T17:25:51.028Z" level=warning msg="skipped create" command=create error="manager: repository empty: repository skipped" gl_project_path=homedev/trial-project relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.design.git storage_name=default
    time="2021-12-02T17:25:51.164Z" level=info msg="completed create" command=create gl_project_path=homedev/trial-project relative_path=@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git storage_name=default
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping uploads ...
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping builds ...
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping artifacts ...
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping pages ...
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping lfs objects ...
    2021-12-03 02:25:51 +0900 -- done
    2021-12-03 02:25:51 +0900 -- Dumping container registry images ...
    2021-12-03 02:25:51 +0900 -- [DISABLED]
    Creating backup archive: 1638465951_2021_12_03_14.5.1_gitlab_backup.tar ... done
    Uploading backup archive to remote storage  ... skipped
    Deleting tmp directories ... done
    done
    done
    done
    done
    done
    done
    done
    Deleting old backups ... skipping
    Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
    and are not included in this backup. You will need these files to restore a backup.
    Please back them up manually.
    Backup task is done.
    

    バックアップファイルの確認

     バックアップされたデータは /var/opt/gitlab/backups/ ディレクトリ内にtar形式でアーカイブされて保存されます。 1バックアップ1ファイルです。バックアップするごとにtarファイルが追加されていきます。 ファイル名にはバックアップを実行した日付だけでなくunixtimeが含まれますので、 同じ日に複数回バックアップを実行した場合でもファイル名が重複することはありません。

    【バックアップファイル名】
     <unixtime>_<年>_<月>_<日>_<GitLabバージョン>_gitlab_backup.tar

    # ls -l /var/opt/gitlab/backups/
    total 1272
    -rw------- 1 git git 430080 Dec  1 02:06 1638291986_2021_12_01_14.3.3_gitlab_backup.tar
    -rw------- 1 git git 409600 Dec  2 06:45 1638395149_2021_12_02_14.3.3_gitlab_backup.tar
    -rw------- 1 git git 460800 Dec  3 02:25 1638465951_2021_12_03_14.5.1_gitlab_backup.tar ←今回のバックアップで作成されたファイル
    

    GitLabの設定ファイルのバックアップ

    バックアップ対象

     バックアップコマンドでデータのバックアップは行われますが、バックアップ対象に GitLabの設定ファイルは含まれていません。 設定ファイルについては個別にバックアップを取得する必要があります。 GitLabの設定ファイルは /etc/gitlab/ ディレクトリ内にありますので、cpコマンドやrsyncコマンドなどで任意の場所にバックアップします。

    # ls -l /etc/gitlab/
    total 392
    drwx------ 2 root root     53 Dec  2 06:45 config_backup
    -rw------- 1 root root 125584 Oct 17 11:10 gitlab.rb ←バックアップ対象
    -rw------- 1 root root 125561 Oct 17 02:13 gitlab.rb.bk20211017
    -rw------- 1 root root 125561 Oct 17 02:45 gitlab.rb.bk20211017a
    -rw------- 1 root root  19103 Dec  2 06:55 gitlab-secrets.json ←バックアップ対象
    drwxr-xr-x 2 root root      6 Oct 17 02:19 trusted-certs
    

    参考にしたサイト