GitLab的基础使用-数据备份与恢复
分类:
IT文章
•
2023-12-14 14:43:31
GitLab的基础使用-数据备份与恢复
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.GitLab的数据备份
1>.查看GitLab默认存储数据的目录
[root@gitlab201.yinzhengjie.org.cn ~]# ll /var/opt/gitlab/git-data/
total 12
drwx------ 3 git root 4096 Mar 13 04:43 ./
drwxr-xr-x 21 root root 4096 Mar 13 10:08 ../
drwxrws--- 4 git root 4096 Mar 18 10:25 repositories/
[root@gitlab201.yinzhengjie.org.cn ~]#
2>.停止GitLab的数据服务
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl status
run: alertmanager: (pid 18999) 0s; run: log: (pid 1630) 642s
run: gitaly: (pid 1699) 641s; run: log: (pid 1618) 642s
run: gitlab-exporter: (pid 1697) 641s; run: log: (pid 1620) 642s
run: gitlab-workhorse: (pid 1695) 641s; run: log: (pid 1631) 642s
run: grafana: (pid 1690) 641s; run: log: (pid 1625) 642s
run: logrotate: (pid 1696) 641s; run: log: (pid 1623) 642s
run: nginx: (pid 1692) 641s; run: log: (pid 1621) 642s
run: node-exporter: (pid 1638) 642s; run: log: (pid 1624) 642s
run: postgres-exporter: (pid 1689) 641s; run: log: (pid 1628) 642s
run: postgresql: (pid 1693) 641s; run: log: (pid 1619) 642s
run: prometheus: (pid 1687) 641s; run: log: (pid 1626) 642s
run: redis: (pid 1698) 641s; run: log: (pid 1617) 642s
run: redis-exporter: (pid 1686) 641s; run: log: (pid 1627) 642s
run: sidekiq: (pid 1694) 641s; run: log: (pid 1629) 642s
run: unicorn: (pid 1691) 641s; run: log: (pid 1622) 642s
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl status
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl status
run: alertmanager: (pid 18999) 0s; run: log: (pid 1630) 791s
run: gitaly: (pid 1699) 790s; run: log: (pid 1618) 791s
run: gitlab-exporter: (pid 1697) 790s; run: log: (pid 1620) 791s
run: gitlab-workhorse: (pid 1695) 790s; run: log: (pid 1631) 791s
run: grafana: (pid 1690) 790s; run: log: (pid 1625) 791s
run: logrotate: (pid 1696) 790s; run: log: (pid 1623) 791s
run: nginx: (pid 1692) 790s; run: log: (pid 1621) 791s
run: node-exporter: (pid 1638) 791s; run: log: (pid 1624) 791s
run: postgres-exporter: (pid 1689) 790s; run: log: (pid 1628) 791s
run: postgresql: (pid 1693) 790s; run: log: (pid 1619) 791s
run: prometheus: (pid 1687) 790s; run: log: (pid 1626) 791s
run: redis: (pid 1698) 790s; run: log: (pid 1617) 791s
run: redis-exporter: (pid 1686) 790s; run: log: (pid 1627) 791s
down: sidekiq: 71s, normally up; run: log: (pid 1629) 791s
down: unicorn: 84s, normally up; run: log: (pid 1622) 791s
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl status
3>.手动备份数据
[root@gitlab201.yinzhengjie.org.cn ~]# ll /var/opt/gitlab/backups/
total 8
drwx------ 2 git root 4096 Mar 13 04:43 ./
drwxr-xr-x 21 root root 4096 Mar 13 10:08 ../
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-rake gitlab:backup:create
2020-03-18 10:37:04 +0000 -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2020-03-18 10:37:07 +0000 -- done
2020-03-18 10:37:07 +0000 -- Dumping repositories ...
* china_bigdata/cmdb (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b) ... [DONE]
[SKIPPED] Wiki
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping uploads ...
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping builds ...
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping artifacts ...
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping pages ...
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping lfs objects ...
2020-03-18 10:37:08 +0000 -- done
2020-03-18 10:37:08 +0000 -- Dumping container registry images ...
2020-03-18 10:37:08 +0000 -- [DISABLED]
Creating backup archive: 1584527828_2020_03_18_12.8.6_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... skipping
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
Backup task is done.
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# ll /var/opt/gitlab/backups/
total 168
drwx------ 2 git root 4096 Mar 18 10:37 ./
drwxr-xr-x 21 root root 4096 Mar 13 10:08 ../
-rw------- 1 git git 163840 Mar 18 10:37 1584527828_2020_03_18_12.8.6_gitlab_backup.tar
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-rake gitlab:backup:create
4>.启动GitLab服务
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl start
ok: run: alertmanager: (pid 24886) 1352s
ok: run: gitaly: (pid 1699) 1352s
ok: run: gitlab-exporter: (pid 1697) 1352s
ok: run: gitlab-workhorse: (pid 1695) 1352s
ok: run: grafana: (pid 1690) 1352s
ok: run: logrotate: (pid 1696) 1352s
ok: run: nginx: (pid 1692) 1352s
ok: run: node-exporter: (pid 1638) 1353s
ok: run: postgres-exporter: (pid 1689) 1352s
ok: run: postgresql: (pid 1693) 1352s
ok: run: prometheus: (pid 1687) 1352s
ok: run: redis: (pid 1698) 1352s
ok: run: redis-exporter: (pid 1686) 1352s
ok: run: sidekiq: (pid 24907) 0s
ok: run: unicorn: (pid 24914) 0s
[root@gitlab201.yinzhengjie.org.cn ~]#
5>.查看GitLab的WebUI
二.模拟删除数据
1>.访问项目目录,如下图所示,点击"index.html"文件
2>.如下图所示,点击"Delete"
3>.点击"Delete file"文件
三.利用第一步备份GitLab的数据进行恢复操作
1>.恢复数据之前,先停止数据服务
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl stop unicorn
ok: down: unicorn: 1s, normally up
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@gitlab201.yinzhengjie.org.cn ~]#
2>.执行恢复数据的命令
[root@gitlab201.yinzhengjie.org.cn ~]# ll /var/opt/gitlab/backups/
total 168
drwx------ 3 git root 4096 Mar 18 11:05 ./
drwxr-xr-x 21 root root 4096 Mar 13 10:08 ../
-rw------- 1 git git 163840 Mar 18 10:37 1584527828_2020_03_18_12.8.6_gitlab_backup.tar
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-rake gitlab:backup:restore BACKUP=1584527828_2020_03_18_12.8.6 #指定要恢复的版本,注意BACKUP的名称格式为:unix时间戳_年_月_日_GitLab的版本号
3>.如下图所示,第一个提示信息输入"yes"
4>.如下图所示,第二个提示信息依旧输入"yes"
5>.再次启动GitLab的数据服务
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl start unicorn
ok: run: unicorn: (pid 37482) 0s
[root@gitlab201.yinzhengjie.org.cn ~]#
[root@gitlab201.yinzhengjie.org.cn ~]# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 37595) 1s
[root@gitlab201.yinzhengjie.org.cn ~]#
6>.再次查看GitLab的WebUI,如下图所示