🛠 GitLab 備份恢復與配置遷移詳盡教程(實戰版)
🧱 一、環境準備
1.1 檢查版本一致性
恢復目標機 GitLab 版本必須與備份文件所用版本一致或兼容(推薦相同版本)
查看當前 GitLab 版本:
sudo gitlab-rake gitlab:env:info | grep "GitLab version"
或者更直接:
sudo cat /opt/gitlab/version-manifest.txt | grep "gitlab-ce"
1.2 停止關鍵服務
在執行恢復前,必須停止連接數據庫的服務:
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
也可以一口氣停止所有:
sudo gitlab-ctl stop
📦 二、備份數據與配置
2.1 備份 GitLab 數據庫
sudo gitlab-backup create
默認會生成在 /var/opt/gitlab/backups/
目錄下,文件名如:
1750765308_2025_06_24_16.7.6_gitlab_backup.tar
2.2 打包配置文件
sudo tar -cf gitlab_conf.tar /etc/gitlab
輸出提示:
tar: Removing leading `/' from member names
? 正常提示。表示打包時去掉絕對路徑前綴,防止覆蓋系統路徑。
🧳 三、遷移備份文件到目標主機(可選)
# 從源服務器復制到目標
scp /var/opt/gitlab/backups/1750765308_2025_06_24_16.7.6_gitlab_backup.tar root@target-host:/var/opt/gitlab/backups/# 同樣遷移配置
scp gitlab_conf.tar root@target-host:~/
目標主機:
sudo tar -xf gitlab_conf.tar -C /
然后:
sudo gitlab-ctl reconfigure
🔄 四、執行 GitLab 數據恢復
sudo gitlab-backup restore BACKUP=1750765308_2025_06_24_16.7.6
會提示:
Be sure to stop Puma, Sidekiq... Do you want to continue (yes/no)?
輸入:
yes
隨后會嘗試清空數據庫并導入數據。
?? 五、常見問題與解決方案
5.1 PostgreSQL 擴展權限錯誤
恢復時報錯:
ERROR: must be owner of extension pg_trgm
ERROR: must be owner of extension btree_gist
解決方法一(推薦):
使用超級用戶 gitlab-psql
登錄,并刪除這兩個擴展:
sudo gitlab-psql-- 刪除可能存在的擴展
DROP EXTENSION IF EXISTS pg_trgm;
DROP EXTENSION IF EXISTS btree_gist;
\q
然后重新執行恢復命令。
解決方法二(若 PostgreSQL >= 9.3):
ALTER EXTENSION pg_trgm OWNER TO gitlab;
但你遇到的報錯說明 PostgreSQL 版本較低(如 9.1),不支持該語法。
5.2 logrotate
報錯無法 reconfigure
恢復后執行:
sudo gitlab-ctl reconfigure
報錯如下:
runit_service[logrotate] ...
timeout: down: /opt/gitlab/service/logrotate/log: 0s, normally up, want up
處理方式:
手動清理 logrotate 服務文件并重啟:
sudo sv stop /opt/gitlab/service/logrotate
sudo rm -rf /opt/gitlab/service/logrotate
sudo gitlab-ctl reconfigure
如果還有問題,也可禁用 logrotate 服務(不推薦長期停用)或查看:
less /opt/gitlab/embedded/cookbooks/cache/cinc-stacktrace.out
? 六、恢復后驗證步驟
6.1 啟動 GitLab 服務
sudo gitlab-ctl start
6.2 檢查服務狀態
sudo gitlab-ctl status
確保關鍵服務如 postgresql
, puma
, sidekiq
均為 run
狀態。
6.3 Web 頁面訪問驗證
訪問 http://<your-gitlab-host>
,確認是否可正常登錄、瀏覽項目。
🧩 七、恢復后可能還需要的命令
創建缺失擴展
sudo gitlab-psql -d gitlabhq_production -c "CREATE EXTENSION pg_trgm;"
sudo gitlab-psql -d gitlabhq_production -c "CREATE EXTENSION btree_gist;"
檢查數據庫角色
sudo gitlab-psql
\du
確保角色 gitlab
存在并非超級用戶即可。
📘 八、參考資料
- GitLab 官方備份文檔:https://blog.csdn.net/qq_44930876/article/details/129581849
- 鏡像下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/