转载:Gitlab备份和恢复操作记录
转载:Gitlab备份和恢复操作记录
包含了备份和数据恢复的操作记录,实验可行
前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录:
1)Gitlab的备份目录路径设置
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@code-server ~] # vim /etc/gitlab/gitlab.rb gitlab_rails[ 'manage_backup_path' ] = true gitlab_rails[ 'backup_path' ] = "/data/gitlab/backups" //gitlab 备份目录 gitlab_rails[ 'backup_archive_permissions' ] = 0644 // 生成的备份文件权限 gitlab_rails[ 'backup_keep_time' ] = 7776000 // 备份保留天数为3个月(即90天,这里是7776000秒) [root@code-server ~] # mkdir -p /data/gitlab/backups [root@code-server ~] # chown -R git.git /data/gitlab/backups [root@code-server ~] # chmod -R 777 /data/gitlab/backups 如上设置了gitlab备份目录路径为 /data/gitlab/backups ,最后使用下面命令重载gitlab配置文件,是上述修改生效! root@code-server ~] # gitlab-ctl reconfigure |
2)GItlab备份操作(使用备份命令"gitlab-rake gitlab:backup:create")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
手动备份gitlab [root@code-server backups] # gitlab-rake gitlab:backup:create Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE] done Dumping repositories ... * treesign /treesign ... [DONE] * gateway /gateway ... [DONE] * treesign /treesign-doc ... [SKIPPED] * qwsign /qwsign ... [DONE] * qwsign /qwsign-doc ... [DONE] * test /test ... [DONE] done Dumping uploads ... done Dumping builds ... done Dumping artifacts ... done Dumping pages ... done Dumping lfs objects ... done Dumping container registry images ... [DISABLED] Creating backup archive: 1510471890_2017_11_12_9.4.5_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 ... done . (0 removed) 然后查看下备份文件(文件权限是设定好的644) [root@code-server backups] # ll total 244 -rw-r--r-- 1 git git 245760 Nov 12 15:33 1510472027_2017_11_12_9.4.5_gitlab_backup. tar 编写备份脚本,结合 crontab 实施自动定时备份,比如每天0点、6点、12点、18点各备份一次 [root@code-server backups] # pwd /data/gitlab/backups [root@code-server backups] # vim gitlab_backup.sh #!/bin/bash /usr/bin/gitlab-rake gitlab:backup:create CRON=1 注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出 [root@code-server backups] # crontab -l 0 0,6,12,18 * * * /bin/bash -x /data/gitlab/backups/gitlab_backup .sh > /dev/null 2>&1 |
3)Gitlab自动备份
1).周期性计划任务
添加备份信息
$crontab -e
0 0 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
重启备份服务
$service crond restart
每天凌晨备份gitlab的数据
2).删除过期的备份文件
因为每天都会进行一次备份,而备份的数据比较大,磁盘空间会被大量使用,因此,定期删除过期的文件
$vim /var/opt/gitlab/backups/remove.sh
添加下面的内容
!/bin/bash
find "/var/opt/gitlab/backups/" -name ".tar" -ctime +1 -type f -exec rm -rf {} ;
设置每天晚上11点,删除两天前的备份
$contab -e
0 23 * * root /var/opt/gitlab/backups/remove.sh -D 2 #添加内容
赋予脚本执行权限,否则用户不能执行此脚本.
$chmod +x remove.sh
重启备份器
$service crond restart
4)Gitlab恢复操作
GItlab只能还原到与备份文件相同的gitlab版本。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
假设在上面gitlab备份之前创建了 test 项目,然后不小心误删了 test 项目,现在就进行gitlab恢复操作: 1)停止相关数据连接服务 [root@code-server backups] # gitlab-ctl stop unicorn ok: down: unicorn: 0s, normally up [root@code-server backups] # gitlab-ctl stop sidekiq ok: down: sidekiq: 1s, normally up [root@code-server backups] # gitlab-ctl status run: gitaly: (pid 98087) 1883s; run: log: (pid 194202) 163003s run: gitlab-monitor: (pid 98101) 1883s; run: log: (pid 194363) 163002s run: gitlab-workhorse: (pid 98104) 1882s; run: log: (pid 194362) 163002s run: logrotate: (pid 98117) 1882s; run: log: (pid 5793) 160832s run: nginx: (pid 98123) 1881s; run: log: (pid 194359) 163002s run: node-exporter: (pid 98167) 1881s; run: log: (pid 194360) 163002s run: postgres-exporter: (pid 98173) 1881s; run: log: (pid 194204) 163003s run: postgresql: (pid 98179) 1880s; run: log: (pid 194365) 163002s run: prometheus: (pid 98187) 1880s; run: log: (pid 194364) 163002s run: redis: (pid 98230) 1879s; run: log: (pid 194358) 163002s run: redis-exporter: (pid 98234) 1879s; run: log: (pid 194208) 163003s down: sidekiq: 8s, normally up; run: log: (pid 194437) 163001s down: unicorn: 21s, normally up; run: log: (pid 194443) 163001s 2)现在通过之前的备份文件进行恢复 [root@code-server backups] # pwd /data/gitlab/backups [root@code-server backups] # ll total 244 -rw-r--r-- 1 git git 245760 Nov 12 15:33 1510472027_2017_11_12_9.4.5_gitlab_backup. tar Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复 [root@code-server backups] # gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5 Unpacking backup ... done Before restoring the database we recommend removing all existing tables to avoid future upgrade problems. Be aware that if you have custom tables in the GitLab database these tables and all data will be removed. Do you want to continue ( yes /no )? ........ ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE WARNING: no privileges were granted for "public" GRANT [DONE] done Restoring repositories ... * treesign /treesign ... [DONE] * gateway /gateway ... [DONE] * treesign /treesign-doc ... [DONE] * qwsign /qwsign ... [DONE] * qwsign /qwsign-doc ... [DONE] * test /test ... [DONE] Put GitLab hooks in repositories dirs [DONE] done Restoring uploads ... done Restoring builds ... done Restoring artifacts ... done Restoring pages ... done Restoring lfs objects ... done This will rebuild an authorized_keys file . You will lose any data stored in authorized_keys file . Do you want to continue ( yes /no )? yes Deleting tmp directories ... done done done done done done done done [root@code-server backups] # 最后再次启动Gitlab [root@code-server backups] # gitlab-ctl start ok: run: gitaly: (pid 98087) 2138s ok: run: gitlab-monitor: (pid 98101) 2138s ok: run: gitlab-workhorse: (pid 98104) 2137s ok: run: logrotate: (pid 98117) 2137s ok: run: nginx: (pid 98123) 2136s ok: run: node-exporter: (pid 98167) 2136s ok: run: postgres-exporter: (pid 98173) 2136s ok: run: postgresql: (pid 98179) 2135s ok: run: prometheus: (pid 98187) 2135s ok: run: redis: (pid 98230) 2134s ok: run: redis-exporter: (pid 98234) 2134s ok: run: sidekiq: (pid 104494) 0s ok: run: unicorn: (pid 104497) 1s [root@code-server backups] # gitlab-ctl status run: gitaly: (pid 98087) 2142s; run: log: (pid 194202) 163262s run: gitlab-monitor: (pid 98101) 2142s; run: log: (pid 194363) 163261s run: gitlab-workhorse: (pid 98104) 2141s; run: log: (pid 194362) 163261s run: logrotate: (pid 98117) 2141s; run: log: (pid 5793) 161091s run: nginx: (pid 98123) 2140s; run: log: (pid 194359) 163261s run: node-exporter: (pid 98167) 2140s; run: log: (pid 194360) 163261s run: postgres-exporter: (pid 98173) 2140s; run: log: (pid 194204) 163262s run: postgresql: (pid 98179) 2139s; run: log: (pid 194365) 163261s run: prometheus: (pid 98187) 2139s; run: log: (pid 194364) 163261s run: redis: (pid 98230) 2138s; run: log: (pid 194358) 163261s run: redis-exporter: (pid 98234) 2138s; run: log: (pid 194208) 163262s run: sidekiq: (pid 104494) 4s; run: log: (pid 194437) 163260s run: unicorn: (pid 104497) 4s; run: log: (pid 194443) 163260s 恢复命令完成后,可以check检查一下恢复情况 [root@code-server backups] # gitlab-rake gitlab:check SANITIZE=true Checking GitLab Shell ... GitLab Shell version >= 5.3.1 ? ... OK (5.3.1) Repo base directory exists? default... yes Repo storage directories are symlinks? default... no Repo paths owned by git:root, or git:git? default... yes Repo paths access is drwxrws---? default... yes hooks directories in repos are links: ... 5 /1 ... ok 6 /2 ... ok 5 /3 ... repository is empty 12 /4 ... ok 12 /5 ... ok Running /opt/gitlab/embedded/service/gitlab-shell/bin/check Check GitLab API access: OK Access to /var/opt/gitlab/ . ssh /authorized_keys : OK Send ping to redis server: OK gitlab-shell self-check successful Checking GitLab Shell ... Finished Checking Sidekiq ... Running? ... yes Number of Sidekiq processes ... 1 Checking Sidekiq ... Finished Checking Reply by email ... Reply by email is disabled in config /gitlab .yml Checking Reply by email ... Finished Checking LDAP ... LDAP is disabled in config /gitlab .yml Checking LDAP ... Finished Checking GitLab ... Git configured correctly? ... yes Database config exists? ... yes All migrations up? ... yes Database contains orphaned GroupMembers? ... no GitLab config exists? ... yes GitLab config up to date ? ... yes Log directory writable? ... yes Tmp directory writable? ... yes Uploads directory exists? ... yes Uploads directory has correct permissions? ... yes Uploads directory tmp has correct permissions? ... yes Init script exists? ... skipped (omnibus-gitlab has no init script) Init script up-to- date ? ... skipped (omnibus-gitlab has no init script) Projects have namespace: ... 5 /1 ... yes 6 /2 ... yes 5 /3 ... yes 12 /4 ... yes 12 /5 ... yes Redis version >= 2.8.0? ... yes Ruby version >= 2.3.3 ? ... yes (2.3.3) Git version >= 2.7.3 ? ... yes (2.13.4) Active users : ... 11 Checking GitLab ... Finished 然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的 test 项目已经恢复了! 另外:Gitlab迁移与恢复一样,但是要求两个GitLab版本号一致 |
赋予脚本执行权限,否则用户不能执行此脚本.
$chmod +x remove.sh
转载:Gitlab备份和恢复操作记录的更多相关文章
- Gitlab备份和恢复操作记录
前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设置 [root@code-server ~]# vim /etc/gitlab/ ...
- Gitlab备份和恢复操作
参考:https://www.cnblogs.com/kevingrace/p/7821529.html 一,设置开启备份以及备份路径 /etc/gitlab/gitlab.rb gitlab_rai ...
- gitlab备份、恢复、升级
1.备份 gitlab的备份很简单,只要使用命令: gitlab-rake gitlab:backup:create 即可将当前的数据库.代码全部备份到/var/opt/gitlab/backups ...
- gitlab备份及恢复
gitlab备份步骤 https://blog.csdn.net/qq_31666147/article/details/79844107 gitlab版本 下载地址 https://mirrors ...
- Gitlab+Jenkins学习之路(四)之gitlab备份和恢复
gitlab的备份和恢复 (1)创建备份目录,并授权 [root@linux-node1 ~]# mkdir /data/backups/gitlab -p [root@linux-node1 ~]# ...
- gitlab 备份和恢复
前言 gitlab这个代码托管工具真是强大,很多东西都是做好了直接用的. 这里就包括备份和恢复功能. 正文 备份 我们可以直接运行此命令,来进行备份. sudo gitlab-rake gitlab: ...
- Gitlab备份以及恢复
1.迁移准备工作和思路 从a服务器迁移到b服务器,由于Gitlab自身的兼容性问题,高版本的Gitlab无法恢复低版本备份的数据,需要注意在b服务器部署和a服务器一样版本的gitlab,部署好环境后开 ...
- Gitlab 备份迁移恢复报错gtar: .: Cannot mkdir: No such file or directory
1. 版本信息 OS: centos 6.9 Gitlab: gitlab-ce.10.7.4 gitlab-ce.10.8.0 gitlab-ce.10.8.3 gitlab-ce.10.8.4 2 ...
- gitlab备份和恢复
备份 生产环境下,备份是必需的.需要备份的文件有:配置文件和数据文件. 备份配置文件 配置文件包含密码等敏感信息,不要和数据文件放在一起. sh -c 'umask 0077; tar -cf $(d ...
随机推荐
- Project Euler Problem8
Largest product in a series Problem 8 Find the greatest product of five consecutive digits in the 10 ...
- certificate expired
最近在测试802.1x,测试过程中,radius服务器端一直显示如下错误: (5) authenticate {(5) eap: Expiring EAP session with state 0 ...
- Spark学习之第一个程序打包、提交任务到集群
1.免秘钥登录配置: ssh-keygen cd .ssh touch authorized_keys cat id_rsa.pub > authorized_keys chmod 600 au ...
- java多线程快速入门(九)
多线程安全问题(卖火车票案例) package com.cppdy; class MyThread5 implements Runnable{ private Integer ticketCount= ...
- cf799c 树状数组魔改
这题的树状数组是用来维护区间最大值的!非常神奇 第一次见到这种用法,其实和区间求和也没什么差别 /* 树状数组魔改版 有三种方案:选两种c,选两个d,选一个c一个d 前两种方案需要选出符合条件的魅力值 ...
- 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘
/* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...
- 性能测试十七:liunx下jmeter结果报表、html报表
控制台日志,只能看出整体的数据,若只是测单接口,这个最好用,但若有多个接口时,无法分别展示,所以需要换另外一种报表 四种方式来获取Jmeter的结果报表 一.在GUI模式下跑Jmeter的脚本,用tp ...
- STL算法之函数copy
STL算法之copy copy(beg, end, dest) #include <iostream> #include <algorithm> #include <ve ...
- 删除一个存在的RabbitMQ队列
import sys # pip install kafka-python sys.path.append("/usr/local/software/ELK") from Util ...
- POJ 2184 Cow Exhibition (带负值的01背包)
题意:给你N(N<=100)只牛,每只牛有一个智慧值Si和一个活泼值Fi,现在要从中找出一些来,使得这些牛智慧值总和S与活泼值总和F之和最大,且F和S均为正.Si和Fi范围在-1000到1000 ...