溫馨提示×

centos gitlab如何遷移數據

小樊
33
2025-10-17 12:41:12
欄目: 智能運維

CentOS環境下GitLab數據遷移詳細步驟

一、遷移前準備工作

  1. 確認環境兼容性:確保新舊服務器均為CentOS系統(版本需匹配,如CentOS 7→CentOS 7或CentOS 8→CentOS 8),且新服務器硬件配置滿足GitLab運行要求(如內存≥4GB、磁盤空間≥100GB)。
  2. 安裝必要依賴:在新服務器上安裝GitLab依賴包,避免后續安裝失?。?pre class="hljs">yum install -y policycoreutils openssh-server openssh-clients postfix systemctl enable sshd && systemctl start sshd # 啟用SSH服務(用于傳輸文件) systemctl enable postfix && systemctl start postfix # 啟用郵件服務(用于GitLab通知)
  3. 備份舊服務器數據:遷移前必須完整備份舊服務器的所有GitLab數據,防止數據丟失。

二、舊服務器數據備份

GitLab數據主要分為三類,需分別備份:

  1. 完整備份(推薦):使用GitLab自帶的gitlab-rake工具創建包含數據庫、倉庫、配置等的完整備份,備份文件默認存儲在/var/opt/gitlab/backups目錄:
    # 停止GitLab相關服務(確保數據一致性)
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    # 創建備份(備份文件名為時間戳格式,如171017_120000_gitlab_backup.tar)
    gitlab-rake gitlab:backup:create
    # 啟動服務(備份完成后恢復)
    gitlab-ctl start
    
  2. 手動備份關鍵目錄:若需更靈活的遷移,可手動備份以下目錄(包含代碼倉庫、配置、附件等):
    • 代碼倉庫:/var/opt/gitlab/git-data/repositories
    • 數據庫:/var/opt/gitlab/postgresql(PostgreSQL數據目錄)
    • 用戶與權限:/var/opt/gitlab/users
    • 配置文件:/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json(密鑰文件,務必備份)
      使用rsync命令(保留權限):
    rsync -aHAX /var/opt/gitlab/git-data/repositories/ /tmp/git_repos_backup/
    rsync -aHAX /etc/gitlab/gitlab.rb /tmp/git_config_backup/
    

三、新服務器環境準備

  1. 安裝GitLab:在新服務器上安裝與舊服務器完全相同版本的GitLab(版本不一致可能導致數據結構不兼容):
    # 添加GitLab官方YUM倉庫
    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
    # 安裝GitLab CE(社區版)
    yum install -y gitlab-ce
    
  2. 配置基礎參數:編輯/etc/gitlab/gitlab.rb,設置外部訪問URL(需與舊服務器一致,避免用戶訪問中斷):
    external_url 'http://新服務器IP'  # 若用HTTPS,需配置SSL證書路徑
    

四、數據遷移到新服務器

方案1:使用完整備份恢復(推薦,最簡便)

  1. 傳輸備份文件:將舊服務器的備份文件(/var/opt/gitlab/backups下的.tar文件)復制到新服務器的相同目錄:
    scp root@舊服務器IP:/var/opt/gitlab/backups/171017_120000_gitlab_backup.tar root@新服務器IP:/var/opt/gitlab/backups/
    
  2. 恢復備份
    • 停止GitLab服務:
      gitlab-ctl stop unicorn
      gitlab-ctl stop sidekiq
      
    • 恢復備份(需指定備份文件名,無需寫完整路徑):
      gitlab-rake gitlab:backup:restore BACKUP=171017_120000  # 171017_120000為備份文件名(不含.tar后綴)
      
    • 啟動GitLab服務:
      gitlab-ctl start
      

方案2:手動遷移關鍵目錄(適用于自定義配置或部分遷移)

  1. 傳輸備份目錄:將舊服務器的手動備份目錄復制到新服務器:
    rsync -aHAX -e ssh /tmp/git_repos_backup/ root@新服務器IP:/var/opt/gitlab/git-data/repositories/
    rsync -aHAX -e ssh /tmp/git_config_backup/gitlab.rb root@新服務器IP:/etc/gitlab/
    
  2. 恢復數據庫(若手動備份了數據庫目錄)
    • 停止PostgreSQL服務:
      gitlab-ctl stop postgresql
      
    • 替換數據目錄(確保權限正確):
      rm -rf /var/opt/gitlab/postgresql/*
      rsync -aHAX -e ssh /tmp/git_db_backup/ root@新服務器IP:/var/opt/gitlab/postgresql/
      
    • 啟動PostgreSQL服務:
      gitlab-ctl start postgresql
      

五、遷移后配置與驗證

  1. 調整配置文件:若新服務器的IP、域名或端口發生變化,需修改/etc/gitlab/gitlab.rb中的以下參數:
    external_url 'http://新服務器IP:新端口'  # 如80→8080,需同步修改SSH端口(若用SSH克?。?/span>
    gitlab_rails['gitlab_shell_ssh_port'] = 新端口  # 若SSH端口變更
    
  2. 重新配置GitLab:使配置生效:
    gitlab-ctl reconfigure  # 重新生成配置文件
    gitlab-ctl restart      # 重啟所有服務
    
  3. 驗證遷移結果
    • Web端:訪問http://新服務器IP,使用舊服務器的用戶名/密碼登錄,檢查項目、用戶、權限是否正常。
    • Git操作:在本地倉庫執行git clone http://新服務器IP/項目路徑.git,測試提交(git push)和拉?。?code>git pull)功能。
    • 日志檢查:查看GitLab日志,確認無報錯:
      gitlab-ctl tail  # 實時查看所有服務日志
      

注意事項

  • 版本一致性:新舊服務器GitLab版本必須相同(如16.11.2→16.11.2),若版本不同,需先升級舊服務器至目標版本再遷移。
  • 數據一致性:備份和恢復過程中,需停止GitLab相關服務(如unicorn、sidekiq),避免數據寫入導致不一致。
  • 權限問題:使用rsync時添加-aHAX參數,保留文件權限和屬主(如git用戶對倉庫的讀寫權限)。
  • SELinux:若新服務器開啟SELinux,需調整備份目錄的SELinux上下文(如chcon -R -t var_opt_t /var/opt/gitlab),避免權限拒絕。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女