Sao lưu và phục hồi gitlab trên Linux

Để tìm hiểu và triển khai Gitlab mời các bạn xem bài viết: Triển khai gitlab trên Centos

Bài viết này sẽ hướng dẫn các bạn Sao lưu và phục hồi Gitlab trên Linux.

Sao lưu

Để sao lưu Gitlab chúng ta tiến hành 2 việc sau:

Sao lưu thư mục /etc/gitlab

Sao lưu thư mục /etc/gitlab bằng lệnh sau:

tar cfz /opt/gitlab_backup/$(date "+%s_%Y_%m_%d_etc_gitlab.tar.gz") -C /etc gitlab

Sau khi thực hiện lệnh trên, trong thư mục /opt/gitlab_backup/ bạn sẽ có được file backup tương tự như sau: 1528815659_2019_04_03_etc_gitlab.tar.gz

Sao lưu dữ liệu của Gitlab

Để sao lưu dữ liệu của Gitlab chúng ta dùng công cụ gitlab-rake có sẵn

/opt/gitlab/bin/gitlab-rake gitlab:backup:create

Sau khi thực thi lệnh trên chúng ta sẽ có file backup tương tự như sau: 1528815659_2019_09_04_gitlab_backup.tar

Lưu ý: file backup của Gitlab được đặt ở thư mục /var/opt/gitlab/backups/

Tạo script sao lưu tự động

Để tự động hóa việc sao lưu Gitlab hàng ngày/ hàng tuần hoặc theo lịch tùy chọn, các bạn có thể tạo script nội dung như sau:

#!/bin/sh

BKDIR=/opt/gitlab_backup

# Get GitLab Config
tar cfz ${BKDIR}/$(date "+%s_%Y_%m_%d_etc_gitlab.tar.gz") -C /etc gitlab

# Get GitLab Backup
/opt/gitlab/bin/gitlab-rake gitlab:backup:create

# Delete
find $BKDIR -mtime +2 | xargs rm -rf

Sau đó tạo crond job như sau:

[root@ITFROMZERO]# crontab -e
#
# Gitlab Backup Crond
#

0 6 * * * sh /opt/gitlab_backup/backup.sh

Theo crond job trên hàng ngày vào lúc 6h sáng sẽ chạy script sao lưu Gitlab.

Để tránh ổ cứng bị đầy vì quá nhiều file sao lưu dữ liệu các bạn có thể thêm option sau vào câu lệnh sao lưu dữ liệu Gitlab

gitlab-rake gitlab:backup:create CRON=1

Phục hồi dữ liệu

Để phục hồi dữ liệu cho Gitlab các bạn làm các bước sau:

Tắt Gitlab đang chạy

Thực thi lệnh sau để tắt Gitlab:

# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq

Kiểm tra Gitlab thực sự tắt hay chưa

# gitlab-ctl status |grep down
down: sidekiq: 10s, normally up; run: log: (pid 670) 5423s
down: unicorn: 20s, normally up; run: log: (pid 655) 5423s

Phục hồi cài đặt của Gitlab

Trước hết chúng ta sao lưu cài đặt hiện tại ra thư mục khác

mv /etc/gitlab /etc/gitlab.20190404

Sau đó giải nén file đã sao lưu và move đến thư mục cấu hình của gitlab

# tar zxvf ./1528815601_2019_09_04_etc_gitlab.tar.gz
# mv ./gitlab /etc/gitlab

Phục hồi dữ liệu Gitlab

Để phục hồi dữ liệu cho Gitlab chúng ta cũng dùng công cụ có sẵn của Gitlab, lệnh thực thi như sau:

# gitlab-rake gitlab:backup:restore BACKUP=$TIMESTAMP

$TIMESTAP là thời gian sao lưu được ghi trên file backup, bạn thay thế là được.

Ví dụ:

gitlab-rake gitlab:backup:restore BACKUP=1528815659_2019_04_14

Sau đó chúng ta restart và check Gitlab là xong quá trình phục hồi

/opt/gitlab/bin/gitlab-ctl restart
/opt/gitlab/bin/gitlab-rake gitlab:check SANITIZE=true

Trên đây là bài viết về sao lưu và phục hồi dữ liệu cho Gitlab. Chúc các bạn thành công.