gitlab的備份比較簡單,咱們直接使用gitlab自己提供的命令進行備份便可。git
gitlab提供的備份命令爲gitlab-rake,備份命令使用以下:shell
gitlab-rake gitlab:backup:create
該命令會備份gitlab倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。數據庫
備份完成後備份文件會出如今/var/opt/gitlab/backups/
vim
固然備份的位置能夠更換,使用以下命令:服務器
vim /etc/gitlab/gitlab.rb
修改上圖backup_path
的值便可,以後使用gitlab-ctl reconfigure
使得配置生效ide
ps:備份文件的名稱中1537261122_2018_09_18_9.2.5是這次備份的編號。該編號咱們會在後續恢復gitlab數據使用到。gitlab
若是要使gitlab自動進行備份的話,咱們能夠經過crontab命令來實現自動備份。強烈建議使用系統crontab命令,而不是用戶crontab。3d
以實現天天凌晨4點進行一次自動備份爲例,系統的crontab配置以下:rest
vim /etc/crontab
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
code
而後重啓crontab服務,以下:
systemctl restart crond
隨着時間的推移gitlab備份文件愈來愈多,服務器的磁盤空間也不夠大。
此時咱們就要刪除部分舊的備份文件,gitlab也提供了刪除舊的備份文件功能。該功能在gitlab的配置文件中,進行配置便可。
在此以保留7天以前的備份文件爲例,以下:
vim /etc/gitlab/gitlab.rb
gitlab_rails[‘backup_keep_time’] = 604800
其中backup_keep_time是以秒爲單位進行計算的,而後執行命令gitlab-ctl reconfigure
便可。
要驗證gitlab備份的有效性,咱們能夠把該備份文件複製到已經安裝好gitlab服務器的/var/opt/gitlab/backups/目錄下。而後進行數據恢復,最後訪問並查看其數據完整性便可。
經過gitlab備份文件能夠恢復gitlab全部的信息,包括倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。
ps:新服務器上的gitlab的版本號必須與建立備份時的gitlab版本號相同。
gitlab數據恢復比較簡單,具體步驟以下:
在gitlab服務器上中止相關數據鏈接服務,命令以下:
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
如今咱們要從1537261122_2018_09_18_9.2.5這個備份編號中,恢復數據,命令以下:
gitlab-rake gitlab:backup:restore BACKUP=1537261122_2018_09_18_9.2.5
若是出現多個done的信息,說明整個gitlab數據就已經正常恢復完畢。
恢復完畢之後,咱們如今來啓動gitlab,使用如下命令:
gitlab-ctl start
強烈建議:重啓該新服務器。