GITLAB – バックアップ&リストアしてみる!

CE or EE

Community Edition or Enterprise Edition
https://about.gitlab.com/install/ce-or-ee/
EEはライセンス入れなければトライアル期間後はCEと同じです。
普通に使う分にはCEで問題ないので。

機能比較 CE – EE
https://about.gitlab.com/pricing/self-managed/feature-comparison/
EEは機能豊富ですね^^
企業利用の場合EE利用の可能性は十分にあると思います。

VPSサーバー WebARENAのindigoを試してみるべく
GITLABをついでに移行してみました。

Backing up and restoring GitLab
https://docs.gitlab.com/ce/raketasks/backup_restore.html

sudo gitlab-backup create

これだけで、バックアップ作成できるようです。
versionが違うので

gitlab-rake gitlab:backup:create

でした。

Dumping database ... 

Dumping PostgreSQL database gitlabhq_production ... pg_dump: [archiver (db)] connection to database "gitlabhq_production" failed: FATAL:  remaining connection slots are reserved for non-replication superuser connections

[FAILED]

rake aborted!

Backup::Error: Backup failed

失敗・・・

/etc/gitlab/gitlab.rb
postgresql['max_connections'] = 50

15にしていたので50にしてみた!

# gitlab-ctl reconfigure
# gitlab-ctl restart
Creating backup archive: 1575362746_2019_12_03_11.4.0-ce_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

OKでした^^

/var/opt/gitlab/backups/1575362746_2019_12_03_11.4.0-ce_gitlab_backup.tar

というファイルができていました。これは、別バージョンのgitlabに入れることはできるのでしょうか・・・?

このファイルを別サーバーへrsyncしました。
/var/opt/gitlab/backupsに。

gitlabを停止、遅い・・・

# gitlab-ctl stop
ok: down: alertmanager: 130s, normally up
ok: down: gitaly: 6s, normally up
ok: down: gitlab-exporter: 7s, normally up
ok: down: gitlab-workhorse: 9s, normally up
ok: down: logrotate: 7s, normally up
ok: down: nginx: 8s, normally up
ok: down: node-exporter: 7s, normally up
ok: down: postgres-exporter: 7s, normally up
ok: down: postgresql: 6s, normally up
ok: down: prometheus: 6s, normally up
ok: down: redis: 5s, normally up
ok: down: redis-exporter: 5s, normally up
ok: down: registry: 5s, normally up
ok: down: sidekiq: 4s, normally up
ok: down: unicorn: 3s, normally up
# gitlab-rake gitlab:backup:restore
Unpacking backup ... done
GitLab version mismatch:
  Your current GitLab version (12.5.3-ce) differs from the GitLab version in the backup!
  Please switch to the following version and try again:
  version: 11.4.0-ce

バージョンが違うとだめでした。元のサーバーを12.5.3にアップデートできるかな

https://docs.gitlab.com/omnibus/update/README.html

# yum install gitlab-ce
更新: gitlab-ce   12.5.3-ce.0.el6 

失敗したので・・・バージョン指定してみる

https://docs.gitlab.com/ce/policy/maintenance.html#upgrade-recommendations
11.3.4 -> 12.5.8 の場合。
11.3.4 -> 11.11.8 -> 12.0.9 -> 12.5.8
* 11.11.8 is the last version in version 11
のように段階的にと。

# yum --showduplicates list gitlab-ce
gitlab-ce.x86_64   11.11.8-ce.0.el6  gitlab_gitlab-ce 
gitlab-ce.x86_64   12.5.3-ce.0.el6  gitlab_gitlab-ce 

とりあえず、 11.4 -> 11.11.8を

# yum install gitlab-ce-11.11.8-ce.0.el6

また、エラー・・・
 $ sudo touch /etc/gitlab/skip-auto-reconfigure
をしてみろと
無事成功しました。

gitlab-ctl reconfigure したらめちゃくちゃなにやら実行され・・・

# gitlab-ctl reconfigure
...
Running handlers complete
Chef Client finished, 129/812 resources updated in 02 minutes 47 seconds
gitlab Reconfigured!
# gitlab-ctl restart

502 なので・・・

unicorn['worker_timeout'] = 60
###! Minimum worker_processes is 2 at this moment
###! See https://gitlab.com/gitlab-org/gitlab-ce/issues/18771
unicorn['worker_processes'] = 2

こんな感じにしてまたreconfigure & restart
またエラーでしたが・・・nginxをrestartしたら戻りました。

次は、12.0.9にアップデート。

# sudo gitlab-ctl stop
# yum install gitlab-ce-12.0.9-ce.0.el6

  Verifying               : gitlab-ce-12.0.9-ce.0.el6.x86_64                                                                                                                                        1/2 
  Verifying               : gitlab-ce-11.11.8-ce.0.el6.x86_64                                                                                                                                       2/2 

更新:
  gitlab-ce.x86_64 0:12.0.9-ce.0.el6                                                                                                                                                                    

完了しました!

更新は成功ですが、また502なので
reconfigure , restart ,nginx restart
しました。

さて、次は、12.5.3です。

# gitlab-ctl stop
# yum install gitlab-ce-12.5.3-ce.0.el6

無事完了。またreconfigure,restart
restartでタイムアウトするので・・・やりなおしたり
なにか 502 に最初なりますね・・・待っていると大丈夫みたいです・・・

# gitlab-ctl reconfigure 
...
Running handlers complete
Chef Client finished, 70/773 resources updated in 03 minutes 25 seconds
gitlab Reconfigured!
# gitlab-ctl restart
timeout: run: unicorn: (pid 23444) 309s
# gitlab-ctl restart
ok: run: unicorn: (pid 26195) 0s
# service nginx restart


なんとか動作したので、バックアップ作成!

# gitlab-rake gitlab:backup:create
2019-12-08 13:13:27 +0900 -- Dumping database ... 
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2019-12-08 13:13:31 +0900 -- done
2019-12-08 13:13:31 +0900 -- Dumping repositories ...
 * j/twitter-simple-list-view ... [DONE]
[DONE] Wiki
 * j/musico ... [DONE]
[SKIPPED] Wiki
 * j/docs ... [DONE]
[DONE] Wiki
 * j/system-centos-7 ... [DONE]
[SKIPPED] Wiki
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping uploads ... 
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping builds ... 
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping artifacts ... 
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping pages ... 
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping lfs objects ... 
2019-12-08 13:13:37 +0900 -- done
2019-12-08 13:13:37 +0900 -- Dumping container registry images ... 
2019-12-08 13:13:37 +0900 -- [DISABLED]
Creating backup archive: 1575778417_2019_12_08_12.5.3-ce_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を置いて

# gitlab-ctl start 
# gitlab-rake gitlab:backup:restore
Unpacking backup ... done
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

resistory.tarがないとか・・・エラーに。。。

しかし、gitのデータとテキストデータは問題なかったので起動してみました。。。

ひとまず問題なく起動しました!

ブラウザからも外部からのgit更新もOKを確認してひとまずOKとしました。

ちょっと別の話で、空のサーバーにgitlabを入れるとnginxなどがgitlab支配下で実行されるので、nginxを自分で後からいれたらそれを無効にしたりと一手間かかりました。どちらにしてもnginxの設定などは必要ですが。

コメントを残す

メールアドレスが公開されることはありません。

お気軽にコメントいただけると嬉しいです!
質問や気になる商品・サービスなどについてなんでも!
名前はハンドルネーム、emailも仮で適当な文字を入力いただければ問題ありません。