灾备还原之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. 【Codeforces 1027D】Mouse Hunt

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 先求出来强连通分量. 每个联通分量里面,显然在联通块的尽头(没有出度)放一个捕鼠夹就ok了 [代码] #include <bits/st ...

  2. HDU 1573 解同余模线性方程组

    题目意思很直接就是一道裸的解线性同余模方程组的题目 #include <cstdio> #include <cstring> using namespace std; #def ...

  3. noip模拟赛 运

    [问题背景]zhx 和妹子们玩数数游戏.[问题描述]仅包含 4 或 7 的数被称为幸运数.一个序列的子序列被定义为从序列中删去若干个数, 剩下的数组成的新序列.两个子序列被定义为不同的当且仅当其中的元 ...

  4. Calculate S(n)

    Problem Description Calculate S(n). S(n)=13+23 +33 +......+n3 .   Input Each line will contain one i ...

  5. 洛谷—— P1339 [USACO09OCT]热浪Heat Wave

    P1339 [USACO09OCT]热浪Heat Wave 题目描述 The good folks in Texas are having a heatwave this summer. Their ...

  6. 24、Java并发性和多线程-信号量

    以下内容转自http://ifeve.com/semaphore/: Semaphore(信号量) 是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失(译者注:下文会具体介绍),或者像锁一样 ...

  7. systemtap --diskio

    http://blog.163.com/digoal@126/blog/static/1638770402013101993142404

  8. C#: 根据指定压缩比率压缩图片

    直接上代码: /// <summary> /// 根据指定压缩比率压缩图片 /// </summary> /// <param name="original&q ...

  9. Ubuntu安装Sublime Text并输入中文

    Sumblime Text3是一款传说中的神级代码编辑器,具有下面特点: 1.代码高亮,自己主动补全 2.各种插件扩展 3.外观简洁舒适 4.跨平台(Windows,Linux,OS X) 简而言之就 ...

  10. [Vue-rx] Stream an API using RxJS into a Vue.js Template

    You can map remote data directly into your Vue.js templates using RxJS. This lesson uses axios (and ...