GitLab Community Edition 14.5.1をバックアップ
最終更新日:2022/08/21 | 公開日:2021/12/14
目次
概要
GitLab Community Edition 14.5.1をインストールして利用していましたが、 別のサーバへ環境を引っ越すことにしたので、移行のためにGitLabのバックアップを取得しました。 その時に実行した手順です。
<注意点>
- バージョン12.1以前と12.2以降でバックアップコマンドが異なります。本手順は12.2以降のコマンドを使用しています。
- 本バックアップを使ってリストアできるのはバックアップしたGitLabと厳格に同じバージョン同じエディション(CE/EE)が前提となります。
- Linuxのファイルシステム上に保持されている設定ファイルなどはバックアップの対象にならないため、個別にバックアップする必要があります。
- gitlab-ce-14.5.1-ce.0.el8.aarch64.rpm
- postfix-3.5.8-1.el8.aarch64.rpm
構成
サーバ構成
OS
AlmaLinux release 8.4 (Electric Cheetah) aarch64
インストール済み主要パッケージ
手順
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