一、创建备份文件
首先我们得把老服务器上的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
原文地址:https://blog.51cto.com/14034751/2445904