19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitLabのバックアップとリストア

Posted at

今回はGitLabのデータ移行について投稿…を考えていたのですが、操作を間違えてGitLabのデータを吹っ飛ばしてしまいました…
なので次からはデータの復旧が出来るように今回はGitLabのバックアップとリストアを試してみたいと思います。

GitLabのバックアップ

まずは現在のGitLabのプロジェクトとグループを確認します。
今まで使用していたプロジェクトとグループが消えてしまったので、急遽テスト用のプロジェクトとグループを作成しました。
Git_01.png
Git_02.png
この状態でバックアップを実施します。
バックアップを行うにはGitLabサーバーで以下のコマンドを実行します。

gitlab-rake gitlab:backup:create

バックアップが完了すると、Backup task is done.と表示されます。
バックアップファイルの格納先はgitlab.rbファイル内のgitlab_rails['backup_path']の行に記載されています。
万一に備えてバックアップファイルを退避します。

cat /etc/gitlab/gitlab.rb | grep backup_path #バックアップ先のパスを確認する
# バックアップ先のパスがデフォルトのままだった場合
ll /var/opt/gitlab/backups #バックアップファイル名を確認する 
cp /var/opt/gitlab/backups/<バックアップファイル名> <バックアップファイルの退避場所>

実はこれだけではバックアップとしては不完全です。
なぜなら先程のバックアップ取得コマンドは/etc/gitlab配下のファイルはバックアップ対象に含まれないからです。
/etc/gitlab配下にはGitLabの設定ファイルと認証関連のファイルが格納されています。
こちらは直接ディレクトリごとコピーします。

cp -ap /etc/gitlab <バックアップファイルの退避場所>

以上でバックアップは完了です。

リストアテスト前の準備

リストアを実行する前に、リストア前と後の変化を確認するためにプロジェクトとグループを一旦削除します。
管理者エリアへ移動し、プロジェクトの右側にある「削除」ボタンをクリックします。
Git_03.png
すると削除の確認画面が表示されますので、指示どおりプロジェクト名を入力し、「プロジェクトの削除」をクリックします。
Git_04.png
同様にグループの削除も実施します。
Git_05.png
プロジェクトとグループの削除が完了しました。
現在のプロジェクト画面の状態は以下の通りです。
デフォルトで存在しているプロジェクトは念の為残しています。
Git_06.png
グループも同様です。
デフォルトのグループしか残されていません。
Git_07.png

GitLabリストア

リストア前の準備が完了しましたので、リストアを実施します。
まずはGitLabのサービスの中から、unicornsidekiqのみ停止します。

gitlab-ctl status #もしも全サービスが「down」になっていれば先に「gitlab-ctl start」を実行する
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status #sidekiqが「down」になっていればOK(unicornは表示されませんでした)

サービスを停止したら、次はリストアの実行です。
以下のコマンドを実行します。
なお、ここで指定する引数である<バックアップファイル名のGitLabバージョンまでを指定>の箇所は、例えばバックアップファイル名が1234567890_2021_02_07_13.8.3_gitlab_backup.tarの場合は1234567890_2021_02_07_13.8.3となります。

gitlab-rake gitlab:backup:restore <バックアップファイル名のGitLabバージョンまでを指定>
# 正常に完了したら以下のコマンドでサービス再起動する
gitlab-ctl restart

リストアがエラーなく完了し、サービス再起動も正常に完了したらリストア自体は終了です。
必要に応じて以下の正常性確認コマンドを実行し、リストア後の状態に問題が無いことを確認します。
判断基準は実行中に「error」のようなメッセージが表示されていなければ恐らく問題無いかと。

gitlab-rake gitlab:check SANITIZE=true

リストア後の確認

リストアが無事完了したので、GitLabのweb画面でプロジェクトとグループの存在確認を行います。
GitLabのログイン画面にアクセスし、ログインします。
Git_08.png
ログインするとプロジェクトの画面が表示されます。
以下の通り先程削除したプロジェクトが表示されています。
続いてグループの画面へ移動します。
Git_09.png
グループも同様に先程削除したグループが存在しています。
これでリストアが正常に出来ていた事が確認できました。
Git_10.png

以上で今回の実験?は終了です。
次回こそはもう少し技術的な投稿を行います…

19
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?