2020.02.04以前、自前で趣味で構築して社内向けに公開したGitLabサーバですが、気がついたら利用者が増えていました。なると万が一に備える必要が出てきます。今回はギットラボのバックアップについて書きます。うGitLabサーバについて(おさらい)GitLabサーバを構築した時の記録この記事のベースとなるGitLabサーバを構築した時の手順を記録したものです。GitLabを自分のパソコンや自前のサーバで動かしてみる最近のシステム開発プロジェクトのバージョン管理は、すっかりGitになりましたね。今どき、CVSやSVNを使っている現場は少なくなってきているのではないでしょうか。私は40代、バリバリPGしていた頃はCVSでした。GitLabサーバを構築しました。前回は私のこっそり練習の場を作りたかったので、とりあえず動かすことを優先したため、いろいろ適当でした。社内で開発資材の管理をGitLabをやろうというタイムリーな話が出てきたの...blackbird-blog.com2020.01.19万が一というのは、例えばサーバが故障してGitLabにコミットされたファイルが消失してしまった場合に、使っていた人たちが積み上げた資産がまるごと消失してしまうわけです。これは「ごめん」では済みませんね。いう時にSaaSのマネージドGitLabは有料で月々お金取られますが、面倒なこと考えなくてよいからお手軽でいいですね。自前で構築すると月々無料な分、頑張らないと行けないところもあります。自前構築組はどうするか。答えは自分でGitLabのバックアップをする!この記事ではGitLabのバックアップ(退避)とリストア(復元)のやり方について紹介します。2環境Docker版のGitLabを使っていますので、Docker版じゃない場合は適宜読み替えてください。GitLabは2つ使います。一つはバックアップ対象のGitLab。一つはバックアップしたデータをリストアするGitLab。GitLabのバージョン確認バックアップ元とリストア先のGitLabはバージョンは同じである必要がありますリストア先のGitLabはバックアップ元のGitlabとマイナーバージョンも含めてすべて完全一致のものを用意してください。思って試したのですが、ダメでした。GitLabのバージョンは確認して、両環境のGitLabのバージョンが同じか確認しておいてください。Docker版GitLabのバージョンを確認する方法Docker版GitLabのバージョンを確認する方法Dockerコンテナ版じゃない方は、目次1.2のGitLabのバージョン確認だけ実施すればよいと思います(たぶん)GitLabのコンテナにアクセスGitLabコン...blackbird-blog.com2020.02.01バージョンが違った場合バージョンが一致していた場合は、ここは読み飛ばしてください。ちなみに私の時は、こんな感じでズレてました。今回新しく予備のGitLabサーバを作ったのですが、前に作った時よりバージョンが新しくなってしまいました。バックアップ元:12.1.6リストア先:12.5.4バージョンが異なる場合、バックアップはできますが、それをリストアすることができません。そのため、どちらかのGitLabのバージョンを変更しなければなりません。バックアップ対象のGitLabのバージョンを変更するより、リストア先のGitLabのバージョンをバックアップ元に合わせるのが良いでしょう。GitLabのバージョンを変更これはDocker版なら簡単です。コンテナが動いている場合は停止します。その後、リストア先のGitLabのコンテナとイメージを削除します。gitlab/gitlab-ce実行するとこのようなメッセージが表示されるかも知れませんが問題ありません。sha256:5af34018b59d494ac62c1d23c1309c319e8db892ff2b8cd7791a8a491add9f2eDockerリポジトリからバージョンを指定して取得これが私が使っているdocker-compose.yamlファイルですが、imageの部分を見ると、latestになっていますので、常に最新版を取得するようになっていました。これだと、イメージを取得するタイミングが変わるとバージョンが変わってしまいます。'/docker/gitlab/data:/var/opt/gitlab'GitLabのバージョンを指定して、バックアップ元と同じバージョンのイメージを取り直すようにdocker-compose.yamlを修正します。Hubhub.docker.com書き換えたら保存して、docker-composeします。-dバージョンの指定がうまくいくと、このような感じで指定したバージョンのGitLabのイメージを取得が始まり、取得でき次第、GitLabが起動します。complete(省略)GitLabが起動したら、先程のバージョン確認方法で念の為、確認してください。バージョン合わせを実施した方はお疲れさまでした。次からバックアップ本編です。私はそもそもバージョン合わせる必要がことすら知らなかったので、ちょっと大変でした...スポンサーリンクバックアップ・リストアバックアップ方法バックアップ元のGitLabコンテナへ接続バックアップするデータの取得は、gitlab-rakeコマンドを実行するだけです。GitLabのコンテナに接続します。docker-compose.yamlでコンテナ名「gitlab01」で定義しているので、その前で接続しています。psでコンテナIDがわかるのでそれを指定します。/bin/bashroot@localhost:/#GitLabのバックアップコマンド実行GitLabのコンテナに接続できたら、GitLabのバックアップコマンドを実行します。実行するといろいろ表示されますが、ここでは割愛します。done.と表示されればバックアップ完了です。作成されたバックアップファイルを確認しましょう。/var/opt/gitlab/backupsの下にtarファイルが生成されます。うんうん、無事にできてますね。バックアップ側での作業は完了です。cpコマンドでGitLabのコンテナの外に出して置いてください。スポンサーリンクリストア方法バックアップファイルの配置バックアップファイルの配置場所は、バックアップ時にtarファイルが出力された場所と同じです。