ラージビッグバナー(970x90)

Linux

【GitLab】バックアップとリストア手順の覚書(保存版)

投稿日:

ビッグバナー(piglog)728px

オンプレで手軽にGit環境を用意できるGitLabですが、ちゃんとバックアップとってますか?

構築したはいいけどバックアップが取れてなくて、ハードウェアが故障してバックアップとって無いことが発覚(泣)・・・なんてことにならないように、バックアップとりましょー!!

ということでバックアップとリストアについてまとめておきます。

バックアップについて

基本的に公式に説明がある通りですが、ひとつずつ説明をば。

GitLabのバックアップは、gitlab-rake というコマンド一発でリポジトリもユーザデータなども(アップロードした画像データなども含めて)取ってくれます。

が、取得したバックアップデータをリストアすることができるのは、全く同じバージョンのGitLabだけです。異なるバージョンのGitLabにはリストアできません。

ということは必然的に設定ファイルも同じである設定ファイルもバックアップしておく必要があるということです。

これらを踏まえて、リポジトリやDBのデータと設定ファイルの2種類のバックアップを取得しておきます。

リポジトリやDBのバックアップ

GitLab に用意されているバックアップコマンドとしては以下となります。先の説明の通り、これには設定ファイルは含まれません。

↑のコマンドで生成されるバックアップファイル名は以下のようになります。頭の10桁はUNIX時間です。

1528815659_2018_06_13_gitlab_backup.tar

 

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

公式にもある通り、/etc/gitlab 配下をまるっと取得しておきます。

ファイル名の形式を合わせておくと後でわかりやすいですので、同じように頭の10桁はUNIX時間となるようにしておきます。

生成されるファイル名は以下のようになります。

1528815601_2018_06_13_etc_gitlab.tar.gz

 

手動で毎日実行するわけにもいかないので、スクリプトを書くとしたら以下。3日分くらい残しておけばよいでしょう。それ以前のデータは削除します。

cronで夜間に実行するようにしておきましょう。先程記載した2つのバックアップファイルが取得されます。

 

リストアについて

同じバージョンのGitLabを用意するところまではできている前提で進めます。

まだの人は以下の記事を参考に構築してください。

GitLab を日本語化してGmailからメール通知する!

社内で使うためのGitLab環境を構築したときのメモです。 GitLabって日本語に対応してないんですよね。純日本人にはちょっととっつきにくいというか、みんなで使おうよっていって建てても英語だとみんな ...

続きを見る

プロセスの停止

まず、アプリケーション側のプロセスを停止します。以下2つのみ停止し他ののプロセスは起動させておきます。

 

停止していることを確認します。

行頭が down となっていれば停止しています。動いている場合は、 run と表示されます。

 

バックアップデータの確認

リストアするバックアップデータを確認します。Gitlabのバックアップ設定ファイルのバックアップのふたつが必要です。

 

設定ファイルのリストア

既存設定ファイルのバックアップをとります。

バックアップアーカイブを展開して、所定の場所に移動します。

 

Gitlabバックアップのリストア

リストアコマンド構文は以下です。

$TIMESTAMP はGitlabのバックアップファイルのタイムスタンプ箇所です。

ではリストアします。

はじかれてしまいました。

理由としては、設定ファイル(/etc/gitlab/gitlab.rb)に記載されたバックアップディレクトリ(/var/opt/gitlab/backups)にバックアップデータがないと読み込んでくれません。また、ファイル名が「_gitlab_backup.tar」で終わる必要もあるようですが、公式のコマンドでバックアップを取得していれば問題ないです。

バックアップデータを指定のディレクトリにコピーします。デフォルトであれば以下でOK!

再度、リストアコマンドを実行します。

authorized_keysを残しておく必要がある場合は、退避しておきましょう。

以下のコマンドでチェックします。

Webブラウザから接続できるようになっているはずです。

設定ファイル(/etc/gitlab/gitlab.rb)に指定したURLが変わる場合は、"external_url"の指定を修正します。

無事にリストアできたら、redmineとの連携する場合は以下をどうぞ。

GitLabとRedmineが別サーバの場合の連携設定Part1

GitLabとRedmineが別のサーバとして構成されているときにリポジトリを連携する手順を紹介します。 SVN(Subversion)とRedmineを連携するときは、Redmineの設定でSubv ...

続きを見る

↓↓↓ 素人でもよくわかるGit入門書です

pig-log_ディスプレイ横長

リンクユニット(レスポンシブ)

-Linux
-, ,

Copyright© ぴぐろぐ , 2024 All Rights Reserved.