灾备还原之gitlab

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

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

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

  1. duplicity官网
  2. duplicity某大神写的备份脚本
  3. gitlab omnibus安装指南
  4. gitlab 备份还原指南
  5. duplicity-0.7.07(stable)安装日志
  6. iptables防火墙设置 Arch WiKi
  7. gitlab不同版本选择下载官方地址

本地存有的信息(关于A,及当时的备份记录)

  1. A机器的系统:Ubuntu14.04_x86_64
  2. duplicity版本 : 本地没有记录,不详...
  3. gitlab的版本: 8.6.5 omnibus安装(没有记录...但是万幸的是它的备份文件中含有当时的版本信息)
  4. 备份B的访问信息(ssh端口,密钥...),备份机B验证访问正常.
  5. duplicity的加密公私钥,密码
  6. duplicity的备份脚本配置.
  7. 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还原

恢复的前提:

  1. 版本要相同,这个已经说了.
  2. 安装完成后要运行gitlab-ctl reconfigure一次,这次也满足了.
  3. 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的状态,还原成功!

灾备还原之gitlab的更多相关文章

  1. 基于Ceph快照的异地灾备设计

    作者:吴香伟 发表于 2017/02/06 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 喜欢请点击右边打赏,谢谢支持! 引子 技术改变生活. 越来越方便的手机 ...

  2. SQLServer 2014 本地机房HA+灾备机房DR解决方案

    SQLServer 2014 主数据中心HA+灾备机房DR解决方案 SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库 两个单独的 WSFC 上使用 ...

  3. Kubernetes Master节点灾备恢复操作指南---升级版

    本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能 ...

  4. DataGuard VS Beedup & GoldenGate灾备方案参数对比

    世上本无完美产品,只有合适的才是最好的! 用户重视灾备数据站点的建设,毋庸置疑必备品.如果考虑带宽及事务完整性保证,存储灾备和操作系统级灾备局限性显而易见. 商用价值一般用于解决数据库自带辅助功能的短 ...

  5. 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  6. 基于Cloudera Search设计数据灾备方案

    当实际项目上线到生产环境中,难以避免一些意外情况,如数据丢失.服务器停机等.对于系统的搜索服务来说,当遇到停机的情况意味着在停机这段时间内,用户都不能通过搜索的相关功能进行访问数据,停机意味着将这一段 ...

  7. Centos服务器上NFS灾备环境及KVM的搭建及使用

    1.概述 由于在单台服务器上搭建灾备环境需要KVM和NFS的支持,下面先列出KVM的搭建流程,再列出使用NFS实现单台服务器灾备的流程. A.搭建KVM环境 1>.主机环境准备 Linux Sy ...

  8. mysql灾备演练问题

    前期写的mysql热备份脚本恢复,还没有正式用到过,但是今天演练灾备恢复,但是遇到几个问题. 测试环境: 搭建mysql,安装xtrabackup vim /etc/yum.repos.d/Perco ...

  9. 云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)

    本文分两部分:部分1 和 部分2.部分1 介绍 AWS,部分2 介绍阿里云和OpenStack云. 1. AWS 1.1 AWS 地理组件概况 AWS 提供三种地理性组件: Regions:区域,即A ...

随机推荐

  1. mac下用crontab实现pytho3脚本自动定期执行,包括scrapy的定期执行

    呃 其实要明天上午才能知道是否成功,毕竟改了一个小参数的. 首先,来学两个小命令: step1: $ sudo crontab -e step2: # 然后提示password输入密码,即可进入编辑页 ...

  2. Python-函数和代码复用

    函数的定义与使用 >函数的理解与定义 函数是一段代码的表示 -函数是一段具有特定功能的.可重用的语句组 -函数是一种功能的抽象,一般函数表达特定功能 -两个作用:降低编程难度 和 代码复用 de ...

  3. vue列表渲染,以及鼠标点击改变样式的问题

    在实际项目中,我们进场会遇到鼠标点击该表某个DOM元素的样式,在原生的js或者jquery中,我们会比较熟练的实现这个需求,但是在vue中怎么实现呢? 直接操作DOM?NO!NO! 既然我们的项目使用 ...

  4. C. Day at the Beach

    codeforces 599c C. Day at the Beach One day Squidward, Spongebob and Patrick decided to go to the be ...

  5. java 中序列化(Serializable)

    18年5月份,在毕业快一年的时候,我终于把自己从研发助理偏向行政打杂,偶尔写一些前端代码的处境,回归到了初衷-安安静静写前后端代码的小小程序员~过程中的心酸也就不在这里吐啦,毕竟我是小太阳,永不熄灭的 ...

  6. 【Codeforces 140C】New Year Snowmen

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 每次都选择剩余个数最多的3个不同数字组成一组. 优先消耗剩余个数多的数字 这样能尽量让剩余的数字总数比较多,从而更加可能得到更多的3个组合 [ ...

  7. codevs4343 找回密码

    题目描述 Description jrMz 很喜欢动漫<叛逆的鲁鲁修>(额= =不知道是不是因为他盯上了动画片里的 MM),他准备以一种神奇的方式降临<叛逆的鲁鲁修>世界,所以 ...

  8. - > 动规讲解基础讲解三——混合背包(背包模板)

    将01背包,完全背包,和多重完全背包问题结合起来,那么就是混合三种背的问题 根据三种背包的思想,那么可以得到混合三种背包的问题可以这样子求解 for(int i=1; i<=N; ++i) if ...

  9. MySQL Workbench查看和修改表字段的Comment值

    查看: 选择单个表->[右键]->[Table Inspector] 再选择Columns选项卡即可,把表格拉倒最后一列. 编辑: 选择单个表->[右键]->[Alter Ta ...

  10. laravel5.5更新到laravel5.7

    为什么要更新呢?因为项目用的第三方后台扩展包,有很些bug,不够完美.想要一个漂亮的后台,那个后台只支持5.7. 然后,我就开始更新框架了. 修改后:"php": "&g ...