GitLab のバックアップは簡単でコマンドを叩くだけです。
GitLabのバックアップの取り方
https://docs.gitlab.com/ee/raketasks/backup_restore.html
に書いてあるとおり、
1 |
sudo gitlab-rake gitlab:backup:create |
を実行すると /var/opt/gitlab/backups/
に次のようなファイル名で作成されます。
1 |
1496023938_2017_05_29_gitlab_backup.tar |
GitLabのバックアップ設定
例えばバックアップは7日間だけ維持したいということであれば、 /etc/gitlab/gitlab.rb
を編集して次のようにします。単位は秒なので、60*60*24*7
とします。
1 |
gitlab_rails['backup_keep_time'] = 604800 |
編集後sudo gitlab-ctl reconfigure
を実行すると反映されます。reconfigureを実行する際、/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
を手動で編集している場合、上書きされますのでご注意下さい。
GitLabのバックアップを毎日自動実行する
cron で定期的に実行すれば、バックアップが先ほどの/var/opt/gitlab/backups/
ディレクトリに作成されます。cronで毎日午前2時に設定する例をあげておきます。
1 |
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 |
すると、指定したディレクトリ(規定ではtmp/backups/
) に次のように作成されます。古いファイルは先ほどの設定により自動で廃棄されます。
1 2 3 4 5 6 7 |
1496163626_2017_05_31_gitlab_backup.tar 1496250028_2017_06_01_gitlab_backup.tar 1496336427_2017_06_02_gitlab_backup.tar 1496422826_2017_06_03_gitlab_backup.tar 1496509227_2017_06_04_gitlab_backup.tar 1496595626_2017_06_05_gitlab_backup.tar 1496682027_2017_06_06_gitlab_backup.tar |
バックアップを別サーバーに複製する
サーバー1つだけのバックアップではBCP的に不安ですので、このディレクトリごと他のサーバーと同期すると良いと思います。AWS s3などのクラウドにもバックアップ可能です。
弊社では社内のWindows Serverにタスクスケジューラーからwinscpを使用して同期しています。synchronize local -delete
のようにするとリモートのディレクトリと同じ構成になり、リモートのサーバーで消されたファイルはローカルから同様に消してくれるので、良い感じになります。
s3 などにバックアップする場合の注意点は、先ほどの backup_keep_time
は有効にならないので、s3のライフサイクルポリシーで管理すると良いです。
まとめ
GitLabを社内サーバーにインストールして使用している方は、サーバーの障害などで使用出来なくなると困るので、バックアップを是非取るようにしましょう。