1: Quy trình sao lưu Gitlab rất đơn giản, chỉ cần một lệnh duy nhất để tạo bản sao lưu đầy đủ
gitlab-rake gitlab:backup:create
Lệnh trên sẽ tạo ra một tệp nén tương tự như 1542596619_2018_11_19_9.2.1_gitlab_backup.tar trong thư mục /var/opt/gitlab/backups/. Tệp này chứa toàn bộ dữ liệu của Gitlab. Phần "1542596619_2018_11_19" là ngày sao lưu, và "9.2.1" là phiên bản Gitlab hiện tại. Khi di chuyển giữa các phiên bản Gitlab, hãy đảm bảo rằng phiên bản nguồn và đích phải khớp nhau.
Sau khi hoàn thành, bạn có thể tìm thấy tệp sao lưu đã được tạo trong thư mục /var/opt/gitlab/backups/.
2: Thay đổi thư mục sao lưu Gitlab
Bạn có thể thay đổi thư mục mặc định cho việc sao lưu thông qua file cấu hình /etc/gitlab/gitlab.rb:
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
Thay thế dòng trên bằng dòng sau:
gitlab_rails['backup_path'] = "/disk/gitlab/backup"
Sau khi sửa đổi, sử dụng lệnh dưới đây để áp dụng lại cấu hình:
gitlab-ctl reconfigure
3: Thiết lập sao lưu tự động với Crontab
Crontab giúp bạn thực hiện các công việc theo lịch trình. Mỗi hàng trong crontab đại diện cho một nhiệm vụ, với 6 trường được phân cách bởi dấu cách. Cấu trúc gồm 5 trường thời gian và 1 trường lệnh, ví dụ:
m h dom mon dow user command
- m: Phút (từ 0 đến 59).
- h: Giờ (từ 0 đến 23).
- dom: Ngày trong tháng (từ 1 đến 31).
- mon: Tháng (từ 1 đến 12).
- dow: Ngày trong tuần (0 hoặc 7 là Chủ nhật).
Để thực hiện sao lưu tự động vào lúc 2 giờ sáng mỗi ngày, thêm dòng sau vào crontab:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
Bạn có thể chỉnh sửa crontab bằng lệnh:
sudo crontab -e
Hoặc trực tiếp chỉnh sửa file /etc/crontab:
vi /etc/crontab
Và thêm dòng sau:
0 2 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
Ngoài ra, bạn cũng có thể tạo một script auto_backup.sh với nội dung:
#!/bin/bash
/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
Cấp quyền thực thi và thêm nó vào crontab:
sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh
Thêm nhiệm vụ chạy script vào /etc/crontab:
0 2 * * * root /data/gitlabData/backups/auto_backup.sh
Sau khi chỉnh sửa xong, khởi động lại dịch vụ cron:
sudo service cron reload
sudo service cron restart
4: Cấu hình thời gian giữ bản sao lưu
Để chỉ giữ lại các bản sao lưu trong 7 ngày gần nhất, chỉnh sửa file cấu hình /etc/gitlab/gitlab.rb và đặt giá trị cho tham số gitlab_rails['backup_keep_time']:
gitlab_rails['backup_keep_time'] = 604800
Sau đó lưu và áp dụng lại cấu hình.
5: Di chuyển Gitlab
Đảm bảo rằng cả hai phiên bản Gitlab đều giống nhau trước khi tiến hành di chuyển. Upload tệp sao lưu lên máy chủ mới và cấp quyền phù hợp:
chmod 777 1542596619_2018_11_19_9.2.1_gitlab_backup.tar
Dừng các dịch vụ liên quan:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
Khôi phục từ bản sao lưu:
gitlab-rake gitlab:backup:restore BACKUP=1542596619_2018_11_19_9.2.1
Khi xuất hiện màn hình yêu cầu xác nhận, nhập yes để tiếp tục. Sau khi hoàn tất, khởi động lại dịch vụ Gitlab:
sudo gitlab-ctl start
Kiểm tra dữ liệu giữa Gitlab cũ và mới để đảm bảo tính nhất quán.