Dockerコンテナ の gitlab で バックアップ ファイル から 復元 を行う

今回は Dockerコンテナ で稼働している gitlab に対して バックアップ ファイル から 復元 を行ってみます。

前回、前々回とgitlabのバックアップを行うための準備を行っていきました。

Dockerコンテナ の gitlab で バックアップ ファイル を 作成 する

Dockerコンテナ の gitlab で バックアップ ファイル から 復元準備 を行う

復元する

バックアップファイルを取得

バックアップファイルは前回お伝えしたように、以下のフォルダに格納されています。

ホスト側:.\gitlab\data

コンテナ側:/var/opt/gitlab

PS D:\dockers\files\gitlab> ls .\gitlab\data\backups\


    ディレクトリ: D:\dockers\files\gitlab\gitlab\data\backups


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/08/03     20:33         307200 1627990380_2021_08_03_14.1.0-ee_gitlab_backup.tar

これをどこか安全な場所(私はデスクトップ!)に取り出しておきます。

Dockerコンテナ再構築

ここでおもむろにDockerコンテナをdocker-compose down -v で破棄します。

次にdocker-compose.ymlファイルと同じフォルダに存在するgitlabフォルダ(Dockerコンテナのディレクトリとマッピングしていたフォルダ)を完全削除します。

再度docker-composeでサービスを起動します。(docker-compose up -d)

しばらく待ちます・・・。

リストアコマンドで復元

しばらくすると、docker-composeファイルと同じフォルダに、再びgitlabフォルダが出現します。
※ホストがLinuxの場合は自身で作成し、パーミッションをちゃんとしておかないとコンテナが正常に起動できないかもしれません。

http://git.ik-genety.com/ にアクセスしてみましょう。

ちゃんと起動したようですね。

ファイルを配備

大事にとっておいたバックアップファイルを .\gitlab\data\backups\配下に持っていきます。

 

以下のコマンドを実行して復元開始です!

docker-compose exec gitlab gitlab-rake gitlab:backup:restore

すると、いくつかの質問が表示されます。
すべてyesで回答します。

途中Errorなんて不吉な表示もされますがキニシナイデ。

Unpacking backup ... done
Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations

Before restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? yes

Removing all tables. Press `Ctrl-C` within 5 seconds to abort
2021-08-05 11:42:11 +0000 -- Cleaning the database ...
2021-08-05 11:42:26 +0000 -- done
2021-08-05 11:42:26 +0000 -- Restoring database ...
Restoring PostgreSQL database gitlabhq_production ... ERROR:  must be owner of extension pg_trgm
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension pg_trgm
・
・
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
[DONE]
2021-08-05 11:43:06 +0000 -- done
2021-08-05 11:43:06 +0000 -- Restoring repositories ...
 * gitlab-instance-ddc5e3a0.wiki (@groups/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki) ...
 * gitlab-instance-ddc5e3a0.wiki (@groups/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki) ... [DONE]
 * gitlab-instance-ddc5e3a0/Monitoring (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b) ...
 * gitlab-instance-ddc5e3a0/Monitoring (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b) ... [DONE]
 * gitlab-instance-ddc5e3a0/Monitoring.wiki (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki) ...
 * gitlab-instance-ddc5e3a0/Monitoring.wiki (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki) ... [DONE]
 * gitlab-instance-ddc5e3a0/Monitoring.design (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design) ...
 * gitlab-instance-ddc5e3a0/Monitoring.design (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design) ... [DONE]
2021-08-05 11:43:07 +0000 -- done
2021-08-05 11:43:07 +0000 -- Restoring uploads ...
2021-08-05 11:43:07 +0000 -- done
2021-08-05 11:43:07 +0000 -- Restoring builds ...
2021-08-05 11:43:07 +0000 -- done
2021-08-05 11:43:07 +0000 -- Restoring artifacts ...
2021-08-05 11:43:07 +0000 -- done
2021-08-05 11:43:07 +0000 -- Restoring pages ...
2021-08-05 11:43:07 +0000 -- done
2021-08-05 11:43:07 +0000 -- Restoring lfs objects ...
2021-08-05 11:43:07 +0000 -- done
This task will now rebuild the authorized_keys file.
You will lose any data stored in the authorized_keys file.
Do you want to continue (yes/no)? yes

Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need to restore these files manually.
Restore task is done.
PS D:\dockers\files\gitlab>

次に以下のコマンドでgitlabのサービスを再起動します(コンテナ再起動ではありません)

docker-compose exec gitlab gitlab-ctl restart

以下の表示されれば再起動処理に突入しています。

ok: run: alertmanager: (pid 3622) 1s
ok: run: gitaly: (pid 3636) 0s
ok: run: gitlab-exporter: (pid 3665) 0s
ok: run: gitlab-workhorse: (pid 3667) 0s
ok: run: grafana: (pid 3679) 1s
ok: run: logrotate: (pid 3694) 0s
ok: run: nginx: (pid 3704) 1s
ok: run: postgres-exporter: (pid 3792) 0s
ok: run: postgresql: (pid 3806) 1s
ok: run: prometheus: (pid 3815) 0s
ok: run: puma: (pid 3835) 0s
ok: run: redis: (pid 3840) 1s
ok: run: redis-exporter: (pid 3846) 0s
ok: run: sidekiq: (pid 3856) 0s
ok: run: sshd: (pid 3864) 0s

確認

数分後、再度アクセスしてみましょう。

管理者権限でログインしてみます。

見事にHogeHogeプロジェクトが消えていますね!!!

 

最後に

って・・・・Dockerコンテナ再構築した時点でもHogeHogeはなくなっているので今回の復元検証は失敗ですね(笑

もっと適当なデータを登録して復元確認すべきでしたね😅

今日はここまで!