1. 定期執行完整備份
使用GitLab內置的gitlab-rake
命令創建全量備份,覆蓋代碼庫、數據庫、用戶/組權限、CI/CD配置等所有關鍵數據。默認備份文件存儲在/var/opt/gitlab/backups
目錄,可通過修改/etc/gitlab/gitlab.rb
中的gitlab_rails['backup_path']
參數自定義路徑(修改后需運行sudo gitlab-ctl reconfigure
使配置生效)。備份命令示例:sudo gitlab-rake gitlab:backup:create
。
2. 配置自動備份策略
通過Debian系統的crontab
設置定時任務,實現每日自動備份(如凌晨2點執行)。示例crontab條目:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
。自動備份可避免人為遺漏,確保數據持續保護。
3. 嚴格管理備份文件
/etc/gitlab/gitlab.rb
配置備份保留時間(如gitlab_rails['backup_keep_time'] = 604800
表示保留7天),或使用find
命令定期清理過期備份(示例:find /var/opt/gitlab/backups -type f -mtime +30 -exec rm -rf {} \;
)。chmod 600 /var/opt/gitlab/backups/*
),并考慮加密存儲或傳輸至異地/云存儲。4. 備份前停止關鍵服務
為確保數據一致性,備份前需停止GitLab的寫入服務(如unicorn
、sidekiq
),避免備份過程中數據修改導致不一致。命令示例:sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq
。
5. 定期測試備份可恢復性
每月至少執行一次恢復測試,驗證備份文件的完整性?;謴筒襟E:停止服務→將備份文件復制到備份目錄→運行sudo gitlab-rake gitlab:backup:restore BACKUP=備份編號
(備份編號為文件名中的時間戳)→啟動服務并檢查數據(如通過Web界面確認項目是否存在)。
6. 版本一致性保障
恢復時需使用與備份時相同或更高版本的GitLab,避免版本不兼容導致數據損壞。升級GitLab前需先備份現有數據,并參考官方升級文檔逐步操作。
7. 配置文件與敏感信息安全備份
除數據備份外,需單獨備份/etc/gitlab/gitlab.rb
(配置文件,含加密密鑰、證書路徑等)和/etc/gitlab/gitlab-secrets.json
(敏感信息,如數據庫密碼、OAuth密鑰)。使用gitlab-ctl backup-etc
命令備份配置文件,存儲至安全位置。