gitlab備份和恢復
一、gitlab倉庫備份
過程如下
1.1、備份命令
gitlab-rake gitlab:backup:create
該命令會備份gitlab倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息
備份完成后,備份文件會出現在路徑:/var/opt/gitlab/backups/
ps:備份文件的名稱中1571721802是此次備份的編號,該編號我們會在后續恢復gitlab數據使用到。
1.2、修改備份的路徑(不需修改可以不看):
編輯gitlab.rb文件中backup_path的值即可,然后使用gitlab-ctl reconfigure命令使配置生效。
vim /etc/gitlab/gitlab.rb gitlab-ctl reconfigure
1.3、定時備份gitlab
我們使用crontab來實現自動備份。
crontab用法參考:https://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/
ps:這里強烈建議在root賬戶下進行操作。
下面,以實現每天凌晨4點進行一次自動備份為例:
1.3.1、修改系統的crontab配置如下:
vim /etc/crontab 0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
1.3.2、然后重啟crontab服務:
systemctl crond restart //ps:centos 6 找不到systemctl,可以使用 service。 service crond restart
剛開始對這個定時備份持懷疑態度,所以寫了一個每隔一分鐘備份一次的配置(把上面的04都改成*即可),然后驗證了這樣配置是ok的。
- root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
接著記得把配置修改回每天凌晨4點執行一次。
1.4、保留部分備份文件
隨著時間的推移,gitlab備份的文件會越來越多,服務器的磁盤空間會不夠。
此時我們就要刪除部分舊的備份文件,gitlab也提供了刪除舊的備份文件功能。該功能在gitlab的配置文件中,進行配置即可。
在此以保留7天之前的備份文件為例,如下:
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 604800
其中backup_keep_time是以秒為單位進行計算的,然后使用gitlab-ctl reconfigure命令使配置生效。
二、gitlab倉庫恢復
要驗證gitlab備份的有效性,我們可以把該備份文件復制到已安裝好gitlab的服務器上,路徑為/var/opt/gitlab/backups/,然后進行數據恢復,最后訪問并查看數據完整性即可。
通過gitlab備份文件可以恢復gitlab所有的信息,包括倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。
ps****:新服務器上的gitlab的版本號必須與創建備份時的gitlab版本號相同。
附查看當前gitlab版本號命令
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
gitlab數據恢復的具體步驟如下:
2.1停止相關數據連接服務
在gitlab服務器上停止相關數據連接服務,命令如下:
gitlab-ctl stop unicorngitlab-ctl stop sidekiq
2.2恢復gitlab倉庫
先將之前備份的文件拷貝到以下路徑
cd /var/opt/gitlab/backups/
rz
ll -h
現在我們要從1571721802這個備份編號中,恢復數據,命令如下:
gitlab-rake gitlab:backup:restore BACKUP=1571721802
期間會看到很多[DONE],最后輸入一個yes。
2.3啟動gitlab
恢復完畢以后,我們現在來啟動gitlab,使用以下命令:
sudo gitlab-ctl start
強烈建議:重啟該新服務器
2.4驗證恢復后的gitlab完整性
訪問gitlab地址,發現之前備份的都恢復了。