灾备还原之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. 二: 安装centos服务环境软件mysql httpd php

    安装mysql--------------------------------------wget http://dev.mysql.com/get/mysql-community-release-e ...

  2. C语言结构体用法

    结构体的定义: 方法一: struct student { char name[10]; int age; int number; }; struct student stu1; 方法二: struc ...

  3. Windows 硬件开发人员怎样选择代码签名证书类型

    在建立 Windows 开发人员中心硬件仪表板帐户之前,你需要获取代码签名证书以保护数字信息的安全.此证书是用于建立你的公司对你所提交代码的所有权的接受标准.它让你可以用数字形式签署 PE 二进制文件 ...

  4. hdu 1269 求连通图的模板题

    #include<stdio.h> #include<string.h> #include<iostream>//只存在一个连通分量 #include<str ...

  5. jQuery WeUI 组件下拉刷新和滚动加载的实现

    最近在做手机版使用到了下拉刷新和滚动加载,记录一下实现过程: 一.引入文件 ? 1 2 3 4 <link rel="stylesheet" href="Conte ...

  6. [bzoj5301][Cqoi2018]异或序列_莫队

    异或序列 bzoj-5301 Cqoi-2018 题目大意:题目链接. 注释:略. 想法: 由于a^a=0这个性质,我们将所有的数变成异或前缀和. 所求就变成了求所有的$l_i\le x<y\l ...

  7. [bzoj4033][HAOI2015]树上染色_树形dp

    树上染色 bzoj-4033 HAOI-2015 题目大意:给定一棵n个点的树,让你在其中选出k个作为黑点,其余的是白点,收益为任意两个同色点之间距离的和.求最大收益. 注释:$1\le n\le 2 ...

  8. stl空间配置器alloc

    new运算包含两阶段操作: 1) 调用::operator new分配内存     2) 调用构造函数构造对象内容 delete运算包含两阶段操作: 1)调用析构函数将对象析构    2)调用::op ...

  9. cc2540 cc2541 开发板资料更新日志

    经过多次PCB打样和全面调试.已经完毕了cc2540 cc2541的开发板的批量贴片.硬件告一段落, 接下来是全面完好软件方面的工作.眼下已经针对没有开发经验的用户编写完毕0基础基础实验代码和教程.接 ...

  10. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...