灾备还原之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. Spring整合Junit框架

    一.开发环境 eclipse版本:4.6.1 maven版本:3.3.3 junit版本:4.12 spring版本:4.1.5.RELEASE JDK版本:1.8.0_111 二.项目结构 图 三. ...

  2. cocos2dx 2.1.x 退出SDK相关界面后EGLView 不刷新渲染

    报错内容为: [3390:1456879] failed to call contextcocos2d: surface size: 0x0[3390:1456879] Failed to make ...

  3. MVC系统学习1—MVC执行流程

    用MVC来做开发也有一段时间了,但是感觉一直没入门,就徘徊在似懂非懂的层次,和去年刚毕业学习WebForm时一样,当时通过张子阳老兄的几篇文章,明白了请求处理流程,页面生命周期才真正明白了WebFor ...

  4. 学习MongoDB--(5-2):索引(查看索引的使用,管理索引)

    前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查 ...

  5. [luoguP3565] [POI2014]HOT-Hotels(dfs)

    传送门 三点在树上距离相等的情况只有一种,就是以某一个点为中心,三个点到这个点的距离相等. 所以直接枚举每个点作为中心,dfs这个中心的子树,根据乘法原理统计答案即可. 时间复杂度 O(n2) (n ...

  6. Spring的发展【一】

    1.1. Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换. ...

  7. [kuangbin带你飞]专题六 最小生成树 N - 畅通工程再续

    相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全 ...

  8. - > 动规讲解基础讲解一——01背包(模板)

    作为动态规划的基础,01背包的思想在许多动规问题中会经常出现,so,熟练的掌握01背包的思路是极其重要的: 有n件物品,第i件物品(I = 1,2,3…n)的价值是vi, 重量是wi,我们有一个能承重 ...

  9. jq页面提示或者页面牵引浏览--页面的指引向导插件

    1.看看插件效果吧 2. html 文件 :index.html <!DOCTYPE html> <html lang="en"> <head> ...

  10. Linux后台执行

    在Linux中有时你须要将脚本(test.sh)和可运行程序(exe)后台运行,请使用例如以下方式: nohup ./test.sh & nohup ./exe & 这样执行的程序能够 ...