gitlab备份恢复
1、Gitlab 创建备份
1.1 创建备份文件
首先我们得把老服务器上的Gitlab整体备份,使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份。
gitlab-rake gitlab:backup:create
使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1502357536_2017_08_10_9.4.3_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1502357536_2017_08_10_9.4.3是备份创建的日期
/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 邮件配置备份
这里写图片描述
生成完后,/var/opt/gitlab/backups目录创建一个名称类似为1502357536_2017_08_10_9.4.3_gitlab_backup.tar的压缩包
这里写图片描述
1.1 更改Gitlab备份目录
当然你也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
/var/opt/gitlab/backups修改为你想存放备份的目录即可,例如下面代码将备份路径修改为/mnt/backups
gitlab_rails['backup_path'] = '/mnt/backups'
这里写图片描述
修改完成之后使用下面命令重载配置文件即可.
gitlab-ctl reconfigure
1.2 Gitlab自动备份
1.2.1 定时自动备份
在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:
m h dom mon dow user command
其中:
m: 表示分钟,可以是从0到59之间的任何整数。
h:表示小时,可以是从0到23之间的任何整数。
dom:表示日期,可以是从1到31之间的任何整数。
mon:表示月份,可以是从1到12之间的任何整数。
dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
user : 表示执行的用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。
实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务
方法1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
#输入命令crontab -e
sudo crontab -e
#输入相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
方法2、直接编辑/etc/crontab 文件,即vi /etc/crontab,然后添加相应的任务
#编辑 /etc/crontab
vi /etc/crontab
然后再编辑框内输入相应的任务
# edited by ouyang 2017-8-11 添加定时任务,每天凌晨两点,执行gitlab备份
0 2 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
这里写图片描述
或者直接定时执行一个脚本 auto_backup.sh ,脚本内容为
/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
然后再 /etc/crontab中,添加相关任务定时执行 auto_backup.sh 脚本文件
sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh
这里写图片描述
/etc/crontab 中添加执行脚本的定时任务,代码如下:
#也可以按照如下所示的方法,定时执行 auto_backup.sh脚本,脚本内容就填写: /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
0 2 * * * root /data/gitlabData/backups/auto_backup.sh -D 1
编写完 /etc/crontab 文件之后,需要重新启动cron服务
#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart
实际运行如下
root@ubuntu4146:~# sudo /usr/sbin/service cron reload
root@ubuntu4146:~# sudo /usr/sbin/service cron restart
cron stop/waiting
cron start/running, process 17738
关于Cron表达式可以参考链接:
http://www.cnblogs.com/junrong624/p/4239517.html
http://blog.csdn.net/xiyuan1999/article/details/8160998
http://www.cnblogs.com/kaituorensheng/p/4494321.html
关于gitlab备份可以参考链接:
http://blog.csdn.net/utopiaprince/article/details/50039989
http://www.cnblogs.com/shansongxian/p/6599144.html
http://www.ttlsa.com/linux/gitlab-backup-restore/
https://github.com/sund/auto-gitlab-backup
https://gitlab.com/help/raketasks/backup_restore.md
http://blog.csdn.net/felix_yujing/article/details/52918803
关于如何将gitlab备份文件备份到远程备份服务器,参考链接:
Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
http://blog.csdn.net/ouyang_peng/article/details/77334215
1.2.2 设置备份过期时间
设置只保存最近7天的备份,编辑 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],设置为你想要设置的值,然后保存。
gitlab_rails['backup_keep_time'] = 604800
这里写图片描述
2、 Gitlab迁移
2.1 copy老服务器上面的备份文件到新服务器
2.1.1 确保新Gitlab服务器和老Gitlab服务器版本相同
第一步,新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的9.4.3版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为9.4.3再进行备份.
这里写图片描述
可以参考之前的博客:
git学习——>在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面
2.1.2 copy老服务器上面的备份文件到新服务器
第二步,如果你没修改过默认备份目录的话,需要将老服务器上的备份文件目录(/var/opt/gitlab/backups目录)下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups目录。
使用scp命令从远程服务器copy文件或者目录到本地
scp 用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2
[用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .
可能有用的几个参数 :
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
例如我使用如下命令,从远程服务器copy刚才的备份文件到了新服务器的/var/opt/gitlab/backups/ 目录下
scp root@172.28.17.155:/var/opt/gitlab/backups/1502357536_2017_08_10_9.4.3_gitlab_backup.tar /var/opt/gitlab/backups/
copy完后,查看copy的文件如下
这里写图片描述
2.1.3 从备份文件中恢复gitlab
1、将备份文件权限修改为777
第一步,将备份文件权限修改为777,不然可能恢复的时候会出现权限不够,不能解压的问题
chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar
2、执行命令停止相关数据连接服务
第二步,执行命令停止相关数据连接服务
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
3、执行命令从备份文件中恢复Gitlab
第三步,执行命令从备份文件中恢复Gitlab
gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
例如我们的备份文件的编号是1502357536_2017_08_10_9.4.3,因此执行下面的命令即可恢复gitlab
gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
1
敲完命令后,出现第一个交互页面,
root@ubuntu4146:/var/opt/gitlab/backups# gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
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)?
输入“yes”继续。
这里写图片描述
恢复过程中。。。。。
这里写图片描述
出现第二个交互页面,
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”继续。
这里写图片描述
4、执行命令从备份文件中恢复Gitlab
第四步,启动Gitlab
sudo gitlab-ctl start
这里写图片描述
3、打开迁移后的Gitlab,进行对比
老Gitlab服务器截图
这里写图片描述
新Gitlab服务器截图
这里写图片描述
对比,可以发现,除了两台服务器的ip地址不一样之外,其他的内容完全一模一样,迁移成功!
参考文档
Gitlab备份与恢复、迁移与升级
http://www.xuliangwei.com/xubusi/803.html
使用Gitlab一键安装包后的日常备份恢复与迁移
https://segmentfault.com/a/1190000002439923
http://www.cnblogs.com/shansongxian/p/6599144.html
http://blog.csdn.net/jenyzhang/article/details/53928438
http://www.cnblogs.com/junrong624/p/4239517.html
关于Cron表达式可以参考链接:
http://www.cnblogs.com/junrong624/p/4239517.html
http://blog.csdn.net/xiyuan1999/article/details/8160998
http://www.cnblogs.com/kaituorensheng/p/4494321.html
关于gitlab备份可以参考链接:
http://blog.csdn.net/utopiaprince/article/details/50039989
http://www.cnblogs.com/shansongxian/p/6599144.html
http://www.ttlsa.com/linux/gitlab-backup-restore/
https://github.com/sund/auto-gitlab-backup
https://gitlab.com/help/raketasks/backup_restore.md
http://blog.csdn.net/felix_yujing/article/details/52918803
关于如何将gitlab备份文件备份到远程备份服务器,参考链接:
Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
http://blog.csdn.net/ouyang_peng/article/details/77334215
gitlab备份恢复的更多相关文章
- gitlab 备份&恢复
Gitlab 成功运行起来之后,最终的事情就是定期的备份,遇到问题后的还原. 备份配置 默认 Gitlab 的备份文件会创建在/var/opt/gitlab/backups文件夹中,格式为时间戳_日期 ...
- gitlab之六: gitlab 备份恢复
参考: https://blog.csdn.net/ouyang_peng/article/details/77070977 备份: 所有的权限,库文件等信息全部备份到的 不更改备份目录的话: v ...
- gitlab备份、恢复、升级
1.备份 gitlab的备份很简单,只要使用命令: gitlab-rake gitlab:backup:create 即可将当前的数据库.代码全部备份到/var/opt/gitlab/backups ...
- Gitlab安装与备份恢复
GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设为私有还要收费.GitLab是一个用于仓库管理系统的开源项目, ...
- gitlab备份及恢复
gitlab备份步骤 https://blog.csdn.net/qq_31666147/article/details/79844107 gitlab版本 下载地址 https://mirrors ...
- Gitlab备份和恢复操作记录
前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设置 [root@code-server ~]# vim /etc/gitlab/ ...
- 转载:Gitlab备份和恢复操作记录
转载:Gitlab备份和恢复操作记录 包含了备份和数据恢复的操作记录,实验可行 前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设 ...
- 使用Gitlab一键安装包后的日常备份恢复与迁移
Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:ba ...
- GitLab备份的创建与恢复
使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:backup:create使 ...
随机推荐
- pathlib的使用
目录 一. Python2与Python3的路径处理的对比 二. pathlib的几个使用示例 1. 最简单的使用 2. 追加路径到Python的sys.path中 3. 生成目录树的技巧 4. 递归 ...
- Installation of SAP on RAC with Oracle ASM(转)
https://blogs.sap.com/2016/03/17/installation-of-sap-on-rac-with-oracle-asm-part-3distributed-enviro ...
- windows xp远程连接
本节将用到windows网络共享,实现外网可以远程连接局域网内的任意主机 实验环境 两台windows xp虚拟机(内网+外网),一台主机 配置外网虚拟机 首先,为虚拟机添加两块网卡.一块作为网关(内 ...
- trackingjs+websocket+百度人脸识别API,实现人脸签到
在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...
- 一行Python代码画心型
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yanlaifan/article/deta ...
- Linux加密和数据安全性
加密和安全 墨菲定律 墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的, 原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导 致灾难,则必定有人会 ...
- 关闭firefox火狐浏览器下载完成时自动扫描(49.0.2以后版本)
本人自己找到的方法,亲测有效,如下:1.在火狐浏览器地址里输入about:config回车,可能会提示“这可能使质量保证失效”,点击[我了解此风险!]2.在搜索框里输入browser.safebrow ...
- 【转】GnuPG使用介绍
一.什么是 GPG 要了解什么是 GPG,就要先了解 PGP. 1991 年,程序员 Phil Zimmermann 为了避开政府监视,开发了加密软件 PGP.这个软件非常好用,迅速流传开来,成了许多 ...
- 【学英语~磨耳朵】2013年以来看过的所有美剧&电影&纪录片等等
我看美剧看太多了,而且同一部剧刷很多遍.这种coach potato的做法其实一点也不好,英文会好可能只是意外收获.下面是单子: 美剧: 老友记-情景喜剧-10季全看.至今还在网易云音乐循环10季音频 ...
- 【转】什么时候 i = i + 1 并不等于 i += 1?
增强型赋值语句是经常被使用到的,因为从各种学习渠道中,我们能够得知 i += 1 的效率往往要比 i = i + 1 更高一些(这里以 += 为例,实际上增强型赋值语句不仅限于此). 所以我们会乐此不 ...