灾备还原之gitlab
灾备还原之gitlab
备份情景:服务器A架设了gitlab,定期通过duplicity发送加密备份给B服务器,现在由于某种情况生产机器A完全无法访问(主机商跑路?硬盘冒烟?服务器BOOM了?),本地存有还原备份所需要的所有信息(例如:B机器访问密钥,备份加密密钥)
PS: 总体来说,gitlab的还原还是很简单的,因为gitlab的还原还是很傻瓜式的.
文档汇总:备份所使用的工具及gitlab帮助
- duplicity官网
- duplicity某大神写的备份脚本
- gitlab omnibus安装指南
- gitlab 备份还原指南
- duplicity-0.7.07(stable)安装日志
- iptables防火墙设置 Arch WiKi
- gitlab不同版本选择下载官方地址
本地存有的信息(关于A,及当时的备份记录)
- A机器的系统:Ubuntu14.04_x86_64
- duplicity版本 : 本地没有记录,不详...
- gitlab的版本: 8.6.5 omnibus安装(没有记录...但是万幸的是它的备份文件中含有当时的版本信息)
- 备份B的访问信息(ssh端口,密钥...),备份机B验证访问正常.
- duplicity的加密公私钥,密码
- duplicity的备份脚本配置.
- 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还原
恢复的前提:
- 版本要相同,这个已经说了.
- 安装完成后要运行
gitlab-ctl reconfigure一次,这次也满足了. - 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的更多相关文章
- 基于Ceph快照的异地灾备设计
作者:吴香伟 发表于 2017/02/06 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 喜欢请点击右边打赏,谢谢支持! 引子 技术改变生活. 越来越方便的手机 ...
- SQLServer 2014 本地机房HA+灾备机房DR解决方案
SQLServer 2014 主数据中心HA+灾备机房DR解决方案 SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库 两个单独的 WSFC 上使用 ...
- Kubernetes Master节点灾备恢复操作指南---升级版
本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能 ...
- DataGuard VS Beedup & GoldenGate灾备方案参数对比
世上本无完美产品,只有合适的才是最好的! 用户重视灾备数据站点的建设,毋庸置疑必备品.如果考虑带宽及事务完整性保证,存储灾备和操作系统级灾备局限性显而易见. 商用价值一般用于解决数据库自带辅助功能的短 ...
- 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 基于Cloudera Search设计数据灾备方案
当实际项目上线到生产环境中,难以避免一些意外情况,如数据丢失.服务器停机等.对于系统的搜索服务来说,当遇到停机的情况意味着在停机这段时间内,用户都不能通过搜索的相关功能进行访问数据,停机意味着将这一段 ...
- Centos服务器上NFS灾备环境及KVM的搭建及使用
1.概述 由于在单台服务器上搭建灾备环境需要KVM和NFS的支持,下面先列出KVM的搭建流程,再列出使用NFS实现单台服务器灾备的流程. A.搭建KVM环境 1>.主机环境准备 Linux Sy ...
- mysql灾备演练问题
前期写的mysql热备份脚本恢复,还没有正式用到过,但是今天演练灾备恢复,但是遇到几个问题. 测试环境: 搭建mysql,安装xtrabackup vim /etc/yum.repos.d/Perco ...
- 云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)
本文分两部分:部分1 和 部分2.部分1 介绍 AWS,部分2 介绍阿里云和OpenStack云. 1. AWS 1.1 AWS 地理组件概况 AWS 提供三种地理性组件: Regions:区域,即A ...
随机推荐
- Python单例模式的实现方式
一.单例类 单例模式(Singleton Pattern)是 Python 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类 ...
- 网络基础——TCP
TCP和UDP协议特点 1.TCP 1>.传输控制协议 2>.可靠的.面向连接的协议 3>.传输效率低 2.UDP 1>.用户数据报协议 2>.不可靠的.无连接的服务 3 ...
- python文件读写及形式转化和CGI的简单应用
一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...
- poj 3253 Fence Repair(priority_queue)
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 40465 Accepted: 13229 De ...
- 兼容IE8 addEventListener、removeEventListener 函数
//兼容bind函数 if(!Function.prototype.bind){ Function.prototype.bind = function(){ if(typeof this !== 'f ...
- oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0的表的作用
https://www.2cto.com/database/201211/166482.html https://docs.oracle.com/cd/E11882_01/server.112/e40 ...
- 洛谷—— P2504 [HAOI2006]聪明的猴子
P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...
- Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率
安装: sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor sudo apt-get update sudo apt-get in ...
- MyBatis3-以接口方式编程
以下内容引用自http://www.yihaomen.com/article/java/304.htm,不过内容有修改: 继前一篇文章http://www.cnblogs.com/EasonJim/p ...
- Java泛型解析(01):认识泛型
Java泛型解析(01):认识泛型 What Java从1.0版本号到如今的8.中间Java5中发生了一个非常重要的变化,那就是泛型机制的引入.Java5引入了泛型,主要还是为了满足在199 ...