gitlab灾备还原

# 灾备还原之gitlab

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

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

#### 文档汇总:备份所使用的工具及gitlab帮助
1. [duplicity官网](http://duplicity.nongnu.org/)
2. [duplicity某大神写的备份脚本](https://github.com/zertrin/duplicity-backup)
3. [gitlab omnibus安装指南](http://doc.gitlab.com/ce/install/installation.html#consider-the-omnibus-package-installation)
4. [gitlab 备份还原指南](http://doc.gitlab.com/ce/raketasks/backup_restore.html)
5. [duplicity-0.7.07(stable)安装日志](http://codeshow.xyz/open/linux_tools/blob/master/duplicity0.7.07%E5%AE%89%E8%A3%85%E6%97%A5%E5%BF%97.md)
6. [iptables防火墙设置 Arch WiKi](https://wiki.archlinux.org/index.php/Simple_stateful_firewall)
7. [gitlab不同版本选择下载官方地址](https://packages.gitlab.com/gitlab/gitlab-ce)

#### 本地存有的信息(关于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](https://wiki.archlinux.org/index.php/Simple_stateful_firewall)

#### 0.1 安装duplicity
我们使用最新的`stable 0.7.07`版本,关于这个版本的安装我已经写了一篇安装日志,这里不再细说,略.[duplicity-0.7.07(stable)安装日志](http://codeshow.xyz/open/linux_tools/blob/master/duplicity0.7.07%E5%AE%89%E8%A3%85%E6%97%A5%E5%BF%97.md)

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

#### 0.3 安装gitlab(版本为8.6.5),使用omnibus安装.
gitlab使用omnibus安装比较简单,不懂的多看看官方文档就行了[gitlab还原官方文档](http://doc.gitlab.com/ce/raketasks/backup_restore.html)

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文档](https://packages.gitlab.com/gitlab/gitlab-ce),它会生成一个安装指令,跟着它做就没问题,建议直接在搜索里查找,找到后点击进去会生成该版本对应的安装指令,这是针对我的系统和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](http://doc.gitlab.com/ce/raketasks/backup_restore.html)

#### 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组件停止,其它组件状态不要改变.
```bash
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的状态,还原成功!

时间: 2024-09-06 03:10:38

gitlab灾备还原的相关文章

【两地三中心】两地三中心--灾备解决方案

两地三中心,两地是指同城.异地,三中心是指生产中心.同城容灾中心.异地容灾中心.结合近年国内出现的大范围自然灾害,以同城双中心加异地灾备中心的"两地三中心"的灾备模式也随之出现,这一方案兼具高可用性和灾难备份的能力.同城双中心是指在同城或邻近城市建立两个可独立承担关键系统运行的数据中心,双中心具备基本等同的业务处理能力并通过高速链路实时同步数据,日常情况下可同时分担业务及管理系统的运行,并可切换运行:灾难情况下可在基本不丢失数据的情况下进行灾备应急切换,保持业务连续运行.与异地灾备模式

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

引子 技术改变生活.越来越方便的手机让大家能够更有效的利用碎片时间,我很享受在上下班的公交车上或在阳光明媚的花园里梳理思路,并写成文字上传到简书:要是搁在几年前的PC时代画风可能是坐在星巴克靠窗的桌子上边喝咖啡边敲键盘:如果时间再久远点,应该有间书房有张书桌,书桌边有个磨墨的小书童- 第一种情形跟后两种情形有着本质的区别.咖啡可能洒在键盘上烧坏主板,辛苦一下午写出的文字再也找不回来了:后院可能起火将写了两天的文字烧成灰烬,再也找不回来了.花园散步也可能摔一跤手机掉进水里开不了机,但不必担心因为我

AD灾备之裸机恢复DC

         在活动目录中,域控制器的重要性不言而喻,通常我们除了建立额外域控制器提供容错 和负载均衡,有必要的话还是必须对域控制器进行备份,以防万一!但是如果恢复域控制器 记得主DC和辅DC之间的信息同步,最新的会覆盖旧的DC,这个必须注意一下         备份我们使用的是windows server backup进行备份还原 建议备份恢复在同一台计算机或者是同一个型号的服务上进行以减少错误. 打开工具,右键可以选择多种备份方式和恢复! 这里我选择一次性备份 接下来的备份,这里建议选择

【总结】利用AWS实现高可用性和云灾备

下载地址:下载完整MP4视频 1. 邱洋的总结 企业用云可以从灾备云开始 为了让应用具备高可用和灾备能力,云平台自身针对基础设施以及云服务都应提供灾备与HA机制,例如: 云平台自身:云的分布式存储.虚拟机HA.控制器容灾.SDN网络容灾.虚拟机数据保护 云提供具备灾备的云服务 – EC2(虚拟机可以漂移).EC2实例恢复 – AMI(虚拟机模板备份) – EBS(数据2+份拷贝).EBS快照/恢复 – S3(数据2+份拷贝) – ELB(负载均衡到多数个EC2实例) – RDS(读写分离.主主部

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

本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能形成完备的企业级服务方案. K8s集群在master节点发生故障时,并不会影响已有的pod运行和服务开放,所以对服务是没有影响的.故而我们可以在发生故障之后,挑选合适的时间窗口进行维护和恢复,可以对外部客户造成最低的影响. 严格来讲,通过kubeadm安装的k8s主节点包括两大类的灾备恢复,etcd

云灾备基础知识

一.灾备保护的什么? 对于各行各业而言,用户数据.系统数据均是企业最核心.最重要的财富,但以下种种原因,都可能给数据带来不可逆转的损坏.只有完善的灾备方案,才能最终保障数据安全.业务连续性.随着互联网市场的蓬勃发展,及用户对数据重视程度的日益提高,据智研数据中心统计数据,灾备行业的市场规模已达百亿规模,且预计会逐年持续增长. 二.什么是灾备? 灾备是容灾和备份的简称.灾备方案=容灾方案+备份方案. 容灾的定义:指在相隔较远的两地(同城或者异地)建立两套或多套功能相同的IT系统,互相之间可以进行健

数据库备份/恢复-企业级云灾备

使用UCACHE灾备云进行Oracle实时复制数据.搬迁数据功能来设计Oracle数据库备份/恢复解决方案,支持定时备份.实时备份,增量备份,同时可开展异地灾备,是Oracle数据库灾备/恢复的完美解决方案. Oracle数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,目前最流行的客户 服务器 (CLIENT/ 或 B/S 体系结构的数据库之一 ,Oracle 数据库本身提供了对数据库物理文件进行冷备份和在线备份两种方式.在线备份类型包括:完全备份.差异

Ucache灾备云支持多副本数据备

Ucache灾备云支持多副本数据备份Ucache灾备云支持多副本数据备份.数据库.文件.操作系统和虚拟化设备的增量备份数据与原全量数据合并成为新全量集,从而摆脱周期性全量备份的时间窗口开销.可以结合数据库的连续日志,在虚拟全备的基础上进一步降低RPO.针对于海量的数据资源,分钟级产生测试需要的数据,快速部署到测试环境中:测试数据基于虚拟快照技术,大幅减少测试数据占用的数据存储空间:采用链接克隆和完全克隆的技术,保证测试数据可读写,以及数据源不被改变.定时或周期性产生定制化的副本数据,用于其他部门

goldengate 灾备端外键约束导致 ora-01403 (delete)

bl2灾备端报错ora-01403 2016-07-11 14:10:52  WARNING OGG-01004  Aborted grouped transaction on 'ESOP_CRM.PRODUCTORDERCHARACTER', Database error 1403 (OCI Error ORA-01403: no data found, SQL <DELETE FROM "ESOP_CRM"."PRODUCTORDERCHARACT ER"