2.5:Gitlab 数据备份与恢复

Gitlab 数据的备份与恢复使用的是 gitlab-rake 命令。

备份与恢复前都要停止 Gitlab 的 unicorn 和 sidekiq 进程,这意味着备份的操作需要在确认没有用户使用的时间段进行,恢复就无所谓了,因为既然要恢复,那Gitlab的服务肯定已经受到了影响。

2.5.1:Gitlab 数据备份

2.5.1.1:停止 unicorn 和 sidekiq 进程
root@gitlab:~# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up

root@gitlab:~# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
2.5.1.2:执行数据备份

在Gitlab服务器的任意目录下执行:

root@gitlab:~# gitlab-rake gitlab:backup:create

备份文件保存在/var/lib/gitlab/backups目录下。

文件命名格式为:UNIX时间戳_日期_Gitlab版本_gitlab_backup.tar

root@gitlab:~# ll /var/opt/gitlab/backups/
total 120
drwx------  2 git  root   4096 Apr 23 17:44 ./
drwxr-xr-x 20 root root   4096 Apr 23 09:46 ../
-rw-------  1 git  git  112640 Apr 23 17:44 1619171062_2021_04_23_11.11.8_gitlab_backup.tar
2.5.1.3:启动 unicorn 和 sidekiq 进程
root@gitlab:~# gitlab-ctl start unicorn
ok: run: unicorn: (pid 1982) 0s

root@gitlab:~# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 2013) 0s

启动后验证Gitlab的所有服务状态:

root@gitlab:~# gitlab-ctl status
run: alertmanager: (pid 1107) 426s; run: log: (pid 1083) 426s
run: gitaly: (pid 1100) 426s; run: log: (pid 1095) 426s
run: gitlab-monitor: (pid 1102) 426s; run: log: (pid 1093) 426s
run: gitlab-workhorse: (pid 1099) 426s; run: log: (pid 1087) 426s
run: logrotate: (pid 1105) 426s; run: log: (pid 1091) 426s
run: nginx: (pid 1110) 426s; run: log: (pid 1089) 426s
run: node-exporter: (pid 1098) 426s; run: log: (pid 1092) 426s
run: postgres-exporter: (pid 1097) 426s; run: log: (pid 1084) 426s
run: postgresql: (pid 1108) 426s; run: log: (pid 1088) 426s
run: prometheus: (pid 1101) 426s; run: log: (pid 1094) 426s
run: redis: (pid 1109) 426s; run: log: (pid 1096) 426s
run: redis-exporter: (pid 1103) 426s; run: log: (pid 1085) 426s
run: sidekiq: (pid 2013) 47s; run: log: (pid 1090) 426s
run: unicorn: (pid 1982) 54s; run: log: (pid 1086) 426s

2.5.2:Gitlab 数据恢复

在数据恢复前,删掉一些数据,以验证恢复数据的可用性。

删掉test-software/test-app1中的index.html:

在这里插入图片描述

2.5.2.1:停止 unicorn 和 sidekiq 进程
root@gitlab:~# gitlab-ctl stop unicorn         
ok: down: unicorn: 0s, normally up

root@gitlab:~# gitlab-ctl stop sidekiq         
ok: down: sidekiq: 0s, normally up
2.5.2.2:执行数据恢复

恢复数据时,使用BACKUP指定需要恢复的数据文件,gitlab-rake会自动到备份文件保存目录/var/lib/gitlab/backups中查找相应的备份文件。

备份文件仅指定UNIX时间戳、日期、版本即可,后边的gitlab_backup.tar固定后缀不用指定。

root@gitlab:~# gitlab-rake gitlab:backup:restore BACKUP=1619171062_2021_04_23_11.11.8

恢复过程中会遇到两个确认消息,均输入yes继续。

2.5.2.3:启动 unicorn 和 sidekiq 进程
root@gitlab:~# gitlab-ctl start unicorn
ok: run: unicorn: (pid 3129) 0s

root@gitlab:~# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 3160) 1s
2.5.2.4:验证数据恢复

index.html回来了:

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐