设为首页 收藏本站
查看: 1102|回复: 0

[经验分享] 灾备还原之gitlab

[复制链接]

尚未签到

发表于 2018-1-10 19:33:00 | 显示全部楼层 |阅读模式
灾备还原之gitlab

备份情景:服务器A架设了gitlab,定期通过duplicity发送加密备份给B服务器,现在由于某种情况生产机器A完全无法访问(主机商跑路?硬盘冒烟?服务器BOOM了?),本地存有还原备份所需要的所有信息(例如:B机器访问密钥,备份加密密钥)

PS: 总体来说,gitlab的还原还是很简单的,因为gitlab的还原还是很傻瓜式的.

文档汇总:备份所使用的工具及gitlab帮助


  • duplicity官网
  • duplicity某大神写的备份脚本
  • gitlab omnibus安装指南
  • gitlab 备份还原指南
  • duplicity-0.7.07(stable)安装日志
  • iptables防火墙设置 Arch WiKi
  • gitlab不同版本选择下载官方地址
本地存有的信息(关于A,及当时的备份记录)


  • A机器的系统:Ubuntu14.04_x86_64
  • duplicity版本 : 本地没有记录,不详...
  • gitlab的版本: 8.6.5 omnibus安装(没有记录...但是万幸的是它的备份文件中含有当时的版本信息)
  • 备份B的访问信息(ssh端口,密钥...),备份机B验证访问正常.
  • duplicity的加密公私钥,密码
  • duplicity的备份脚本配置.
  • gitlab生成的备份: 类似:1460181615_gitlab_backup.tar之样的文件.
  假设我们在C机器上进行还原,C的系统为全新CentOS6.7_x86_64_minimal,虽然说A是Ubuntu但是gitlab的还原是可以跨系统的.

0.0 为C设置基本的安全设置,上传本地备份信息.
  C为全新的机器,而它访问的方式默认为明文密码,且ssh端口也为默认的22,这很容易遭到各种扫描,我们将它改成端口非默认,密钥访问,且不允许root直接登录,并设置iptalbes防火墙,我一般参照Arch WiKi

0.1 安装duplicity
  我们使用最新的stable 0.7.07版本,关于这个版本的安装我已经写了一篇安装日志,这里不再细说,略.duplicity-0.7.07(stable)安装日志

0.2 导入GPG密钥
  备份工具使用的是duplicity,我使用了它可以用GPG加密的特性,当时已经导出加密密钥为ASCII文档保存到本地,使用gpg --import you_key_files来导入公私钥.

0.3 安装gitlab(版本为8.6.5),使用omnibus安装.
  gitlab使用omnibus安装比较简单,不懂的多看看官方文档就行了gitlab还原官方文档
  OK,如果你对gitlab还原有所了解的话,官方文档特别指出了还原所要使用的版本号与你备份时所使用的必须相同.

  You can only restore a backup to exactly the same version of GitLab that you created it on, for example 7.2.1.

  所以这里最要注意的就是版本要对上,还有还原机的内存最好2G以上,gitlab安装完成后很吃内存.
  恩,如果你想要还原gitlab的话,建议你还是先认真的看看gitlab的官方文档再说. 到官网的这个页面选择好要安装的版本gitlab文档,它会生成一个安装指令,跟着它做就没问题,建议直接在搜索里查找,找到后点击进去会生成该版本对应的安装指令,这是针对我的系统和gitlab版本生成的指令:

  curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  
sudo yum install gitlab-ce-8.6.5-ce.0.el6.x86_64

  运行完以上指令后,gitlab不是算是安装完成了,最后使用以下指令来配置gitlab,这个指令要花费5分钟以上的时间(你可以喝口水并祈祷它不会报错)
  
gitlab-ctl reconfigure
  OK,没报错的话找到官方的还原文档-->gitlab_backup_restore

0.4 gitlab还原
  恢复的前提:


  • 版本要相同,这个已经说了.
  • 安装完成后要运行gitlab-ctl reconfigure一次,这次也满足了.
  • gitlab当前要在运行的状态下,如果没有,使用gitlab-ctl start来启动它.  
    首先还原是建立在备份的情况下的,我们使用duplicity还原备份到C.
      
    bash duplicity-backup.sh -c gitlab_backup.conf -t "20160409" --restore /root/data/gitlab
      
    恢复的日期为4月9号,将备份存到/root/data/gitlab下,接下来按照gitlab官方文档的来:

  1.将备份文件复制到/var/opt/gitlab/backups/目录
  
cp /root/data/gitlab/1460181615_gitlab_backup.tar /var/opt/gitlab/backups/
  
注意要把你的备份文件的权限设置成git:git
  
chown git:git /var/opt/gitlab/backups/1460181615_gitlab_backup.tar
  
2.将连接到数据库的gitlab组件停止,其它组件状态不要改变.
sudo gitlab-ctl stop unicorn  
sudo gitlab-ctl stop sidekiq
  3.设置你要还原的文件,下面的1460181615是你的备份文件的前面的数字,例如我 1460181615_gitlab_backup.tar
  
sudo gitlab-rake gitlab:backup:restore BACKUP=1460181615
  
没有报错的话,中间会叫你确认两次,然后是一大堆的ALERT TABLE DEL TABLE
  4.最后一步重启gitlab,重启会花费15秒以上的时间,在这之前访问是会报502的.
  
gitlab-ctl restart
  
OK,访问后完美恢复到20160409的状态,还原成功!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433671-1-1.html 上篇帖子: GitLab CI持续集成配置方案(补) 下篇帖子: bitnami gitlab 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表