Step by step migration Gitlab nhanh chóng

Qua có support cho một bro trong nhóm migration Gitlab từ server cũ sang server mới, công ty bạn ấy dùng Gitlab standalone config default, không mount dữ liệu, chẳng backup gì luôn cài đúng kiểu 1 lệnh apt install, mới thấy được nhiều công ty cũng ‘tự tin thật’ :)))

Thì mình có note lại mấy bước làm đang định xóa đi thì nghĩ để lên đây cho bạn nào chưa biết mà cần thì dùng. Còn nếu anh em thích mình có thể làm một bài riêng về setup Gitlab HA và migration các thứ.

77eb571c-7b00-4fd2-b443-7dcf1a7a6a56

Step 1. Chuẩn bị

Đầu tiên cứ làm vài bước kiểm tra nhanh đảm bảo đúng yêu cầu của Gitlab và hệ thống.

Step 1.1 Kiểm tra Phiên bản GitLab

Chạy lệnh này trên cả server cũ và mới (nếu đã cài Gitlab) để chắc chắn 2 GItlab cùng phiên bản:

sudo gitlab-rake gitlab:env:info

Nếu phiên bản khác nhau, anh em upgrade hoặc downgrade GitLab trên server mới để khớp với máy cũ (cái này bắt buộc nhé).

Step 1.2. Kiểm tra Dung lượng Ổ đĩa

Đảm bảo máy chủ mới có đủ dung lượng để chứa dữ liệu GitLab. Trên máy cũ chạy:

df -h

Anh em kiểm tra thử xem nếu thư mục /var/opt/gitlab/ rất lớn thì có thể cần thêm dung lượng lưu trữ (nhớ mount ổ nhé).

Step 2. Cài Đặt GitLab trên Server Mới

Trước khi migrate dữ liệu, cài đặt đúng phiên bản GitLab của server cũ trên server mới.

Step 2.1. Thêm Repository của GitLab

Với hệ thống Debian-based (Ubuntu, Debian):

curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash  # Enterprise Edition
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash  # Community Edition

Với hệ thống RHEL-based (CentOS, Rocky, Fedora):

curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash  # Enterprise Edition
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash  # Community Edition

Step 2.2. Cài đặt GitLab

Thay X.Y.Z bằng phiên bản GitLab chính xác:

sudo apt install gitlab-ee=X.Y.Z-ee.0   # Enterprise Edition trên Debian/Ubuntu
sudo apt install gitlab-ce=X.Y.Z-ce.0   # Community Edition trên Debian/Ubuntu

sudo yum install gitlab-ee-X.Y.Z-ee.0   # Enterprise Edition trên RHEL/CentOS
sudo yum install gitlab-ce-X.Y.Z-ce.0   # Community Edition trên RHEL/CentOS

Step 2.3. Cấu hình GitLab

Chỉnh sửa file cấu hình:

sudo vim /etc/gitlab/gitlab.rb

Cập nhật external URL:

gitlab_rails['external_url'] = 'http://NEW_GITLAB_IP' #hoặc domain nhé

Áp dụng cấu hình:

sudo gitlab-ctl reconfigure

Step 3. Dừng các services GitLab trên server cũ

Để tránh thay đổi dữ liệu trong khi migrate:

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

Step 4. Tạo backup trên server Gitlab cũ

GitLab có công cụ tích hợp để sao lưu dữ liệu.

Step 4.1. Tạo Backup

sudo gitlab-backup create

Mặc định backup sẽ nằm trong /var/opt/gitlab/backups/. Nếu muốn lưu ở nơi khác:

export GITLAB_BACKUP_DIR="/mnt/backup"
sudo gitlab-backup create

Step 4.2. Xác định File Backup

ls -lh /var/opt/gitlab/backups/

Ví dụ tên file:

1548470000_2025_09_25_15.3.0_gitlab_backup.tar

Step 5. Chuyển backup sang server mới

Dùng scp hoặc rsync:

scp /var/opt/gitlab/backups/*.tar root@NEW_GITLAB_IP:/var/opt/gitlab/backups/

Step 6. Restore GitLab trên server mới

Step 6.1. Dừng services GitLab

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop

Step 6.2. Restore Backup

export GITLAB_BACKUP_DIR="/var/opt/gitlab/backups"
sudo gitlab-backup restore BACKUP=1548470000_2025_09_25_15.3.0_gitlab_backup.tar

Step 7. Sao chép File Cấu hình

Trên server cũ, copy các file:

scp /etc/gitlab/gitlab.rb root@NEW_GITLAB_IP:/etc/gitlab/gitlab.rb
scp /etc/gitlab/gitlab-secrets.json root@NEW_GITLAB_IP:/etc/gitlab/gitlab-secrets.json

Trên server mới:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Step 8. Migration Container Registry (nếu có dùng)

Thông thường cũng ít recommend anh em dùng trực tiếp container registry của Gitlab vì đầy thằng mạnh như harbor, hay sẵn trên cloud mà chuyên biệt hơn.

Step 8.1. Kiểm tra dung lượng Registry

du -sh /var/opt/gitlab/gitlab-rails/shared/registry/

Step 8.2. Copy Registry Data

rsync -avz /var/opt/gitlab/gitlab-rails/shared/registry/ root@NEW_GITLAB_IP:/var/opt/gitlab/gitlab-rails/shared/registry/

Sau đó restart GitLab:

sudo gitlab-ctl restart

Step 9. Kiểm tra Migration

  • Đăng nhập GitLab Web UI: http://NEW_GITLAB_IP hay https://domain.com
  • Thử clone & push repository:
git clone http://NEW_GITLAB_IP/group/project.git
cd project
echo "test" > test.txt
git add test.txt
git commit -m "Migration test"
git push origin main
  • Kiểm tra trạng thái GitLab:
sudo gitlab-rake gitlab:check
  • Test Container Registry:
docker login registry.NEW_GITLAB_IP -u username -p password
docker tag my-image registry.NEW_GITLAB_IP/my-project/my-image:v1
docker push registry.NEW_GITLAB_IP/my-project/my-image:v1

Step 10. Cập nhật DNS & clear

  • Cập nhật DNS trỏ domain GitLab sang IP của máy mới.
  • Giữ hoặc decommission (ngưng hoạt động) server cũ tùy nhu cầu backup.

Kết luận

Vậy là với vài bước đơn giản anh em đã migrate được GitLab sang server mới. Toàn bộ repository, người dùng, CI/CD pipeline, và Container Registry đã được giữ nguyên. Nếu gặp sự cố, dùng lệnh sau để kiểm tra log:

gitlab-ctl tail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận