一、創建備份文件
首先我們得把老服務器上的Gitlab整體備份,使用Gitlab一鍵安裝包安裝Gitlab非常簡單, 同樣的備份恢復與遷移也非常簡單. 使用一條命令即可創建完整的Gitlab備份。
gitlab完全備份命令:
gitlab-rake gitlab:backup:create
使用以上命令會在/var/opt/gitlab/backups目錄下創建一個名稱類似爲1545200330_2018_12_19_11.3.13_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中中間部分的是備份創建的2018_12_19日期
/etc/gitlab/gitlab.rb 配置文件須備份
/var/opt/gitlab/nginx/conf nginx配置文件
執行完後,/var/opt/gitlab/backups目錄創建一個名稱類似爲1545201028_2018_12_19_11.3.13_gitlab_backup.tar的壓縮包
二、更改Gitlab備份目錄
可以通過/etc/gitlab/gitlab.rb配置文件來修改默認存放備份文件的目錄,配置文件中229行爲系統默認備份路徑,我們只需要在下面添加一行,或者直接修改默認配置,去掉註釋即可。
做完這步以後需要重新加載配置(相當於重啓gitlab)命令如下:
gitlab-ctl reconfigure
之後我們可以再進行一次全量備份,可以看到備份的目錄已經被我們更改了。
gitlab-rake gitlab:backup:create
三、 Gitlab自動備份
在crontab文件裏面,每一行代表一項任務,每行的每個字段代表一項設置,它的格式共分爲六個字段,前五段是時間設定段,第六段是要執行的命令段,每個字段之間用空格分割,沒用的段用*代替,格式如下:
-
-
-
-
- 命令
m h dom mon dow command
m: 表示分鐘,可以是從0到59之間的任何整數。
h:表示小時,可以是從0到23之間的任何整數。
dom:表示日期,可以是從1到31之間的任何整數。
mon:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裏的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件(如shell文件)。
實現每天凌晨2點進行一次自動備份:通過crontab使用備份命令實現,需重啓cron服務
- 命令
-
-
-
#輸入命令crontab -e
crontab -e
#輸入相應的任務
0 2 * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
編輯完保存退出,也可以直接編輯 vim /etc/crontab 這個文件,效果是一樣的。 這時候需要重啓一下crontab服務並且,設置爲開機自啓。
#重啓定時任務服務
systemctl restart crond.service
#實現開機自啓動
systemctl enable crond.service
四、 設置備份過期時間
設置只保存最近7天的備份,編輯 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],設置爲你想要設置的值,然後保存。這個地方的604800是以秒爲單位。同樣修改完以後重新載入配置。
五、從備份文件中恢復gitlab
第一步,將備份文件權限修改爲777,不然可能恢復的時候會出現權限不夠,不能解壓的問題
chmod 777 1545201028_2018_12_19_11.3.13_gitlab_backup.tar
第二步,執行命令停止相關數據連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
第三步,執行命令從備份文件中恢復Gitlab
Gitlab的恢復操作會先將當前所有的數據清空,然後再根據備份數據進行恢復
#gitlab-rake gitlab:backup:restore BACKUP=備份文件編號
#例如我們的備份文件的編號是1545202224_2018_12_19_11.3.13,因此執行下面的命令即可恢復
gitlab-rake gitlab:backup:restore BACKUP=1545202224_2018_12_19_11.3.13
敲完命令後,出現第一個交互頁面,
輸入“yes”繼續。 這時已經開始恢復了。
出現第二個交互頁面,繼續輸入“yes”
第四步,啓動Gitlab
gitlab-ctl start
這時已經把數據恢復完成了,我們可以訪問gitlab地址http://192.168.10.178/dashboard/projects
恢復已完成~
GitLab重置用戶名密碼
打開終端,訪問:
gitlab-rails console production
輸入:
user = User.where(id: 1).first
user.password=123456
user.password_confirmation = ‘123456’
user.save! #注意加上 “!”
然後退出命令行即可。
quit