通过 备份文件 恢复/迁移 gitlab
===============================================
2017/10/20_第1次修改 ccb_warlock
===============================================
部署:http://www.cnblogs.com/straycats/p/7637373.html
升级:http://www.cnblogs.com/straycats/p/7707359.html
本地备份:http://www.cnblogs.com/straycats/p/7671204.html
远程备份:http://www.cnblogs.com/straycats/p/7672692.html
通过之前的记录,已经掌握了gitlab的本地备份(http://www.cnblogs.com/straycats/p/7671204.html)和远程备份(http://www.cnblogs.com/straycats/p/7672692.html)。
但是获取备份文件不是我们的目的,最终是为了通过备份文件实现迁移或恢复gitlab。本篇就是记录如何通过备份文件在新的环境上去恢复/迁移gitlab。
一、环境准备
首先在新服务器(192.168.2.1)上搭建gitlab,部署过程可以参考http://www.cnblogs.com/straycats/p/7637373.html。
注意:通过备份文件恢复gitlab必须保证新的gitlab版本必须要和老的gitlab版本一致,否则会提示版本不匹配。

所以无非是两种思路,一种将老的gitlab先升级到你要的gitlab版本,再迁移备份;另一种将gitlab安装的版本和老gitlab一致,迁移完成后再进行升级。
我采取先保持一致后迁移,再进行升级。
二、配置新的gitlab
gitlab的配置文件(gitlab.rb)是不因备份恢复而恢复的,故要将老的gitlab的配置文件也取过来,否则就需要维护人员重新配置。
2.1 获取gitlab.rb
在新服务器上,使用scp命令将老服务器(192.168.1.1)的备份文件复制到/etc/gitlab/目录下。
scp root@192.168.1.1:/etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb

第一次连接时会询问是否要继续连接,输入yes,回车。
接着输入老服务器的root密码后,回车。
接着就会看到备份文件传输的信息。

2.2 修改external_url
如果新gitlab服务器部署之后ip不改回老的ip(示例为192.168.1.1),故需要修改gitlab.rb的external_url参数,因为页面上项目的http地址就是根据该参数拼接而成的。

以新gitlab服务器的ip为192.168.2.1为例,修改gitlab配置文件。
vim /etc/gitlab/gitlab.rb
修改external_url,wq保存。
external_url 'http://192.168.2.1'
2.3 重新配置gitlab
gitlab-ctl reconfigure
三、获取备份文件
在新服务器上,使用scp命令将老服务器(192.168.1.1)的备份文件(1508412719_2017_10_19_10.0.2_gitlab_backup.tar)复制到/var/opt/gitlab/backups/目录下。
scp root@192.168.1.1:/var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar /var/opt/gitlab/backups/
获取到/var/opt/gitlab/backups/目录下是因为我没有特别更换gitlab的备份目录,如果gitlab.rb有指定别的目录,根据实际情况自行修改。

第一次连接时会询问是否要继续连接,输入yes,回车。
接着输入老服务器的root密码后,回车。
接着就会看到备份文件传输的信息。

如果老服务器出现故障时,云端有备份文件可以从云端获取,比如云端192.168.1.2的/gitlab-backup目录下有备份文件,可以从那获取。
scp root@192.168.1.2:/gitlab-backup/1508412719_2017_10_19_10.0.2_gitlab_backup.tar /var/opt/gitlab/backups/
四、恢复/迁移gitlab数据
4.1 修改备份文件权限
将备份文件的权限改为777,否则恢复的时候会出现权限不够导致解压失败的问题。

chmod 777 /var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar
4.2 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
4.3 恢复gitlab
使用“gitlab-rake gitlab:backup:restore BACKUP=备份文件编号”指令可以根据备份文件来恢复,因为示例中是使用1508412719_2017_10_19_10.0.2_gitlab_backup.tar来恢复,故备份文件编号为1508412719_2017_10_19_10.0.2。
gitlab-rake gitlab:backup:restore BACKUP=1508412719_2017_10_19_10.0.2
等待片刻后,由于新的gitlab还是处于初始状态,直接输入“yes”,回车。

然后就是等待恢复的结束。
到了下面的内容时,输入“yes”,回车。

4.4 启动gitlab
gitlab-ctl start
五、关于本地备份和远程备份
由于这两块是额外配置的,如果新环境中也要有这一套备份机制,自然需要维护人员手动配一次。
本地备份参考:http://www.cnblogs.com/straycats/p/7671204.html
远程备份参考:http://www.cnblogs.com/straycats/p/7672692.html
参考资料:
1. http://blog.csdn.net/ouyang_peng/article/details/77070977
通过 备份文件 恢复/迁移 gitlab的更多相关文章
- RDS for MySQL 逻辑备份文件恢复到自建数据库
使用MySQL自带的 mysqldump 工具可以通过逻辑备份文件恢复数据库,本文将介绍详细的逻辑备份恢复数据库操作步骤. 说明 通过物理备份文件恢复到自建数据库请参见RDS for MySQL 物理 ...
- 使用MySQL的mysqldump命令备份数据库和把数据库备份文件恢复
1,备份数据库 mysql -uroot -p123456 db_name > /root/db_name.dump 2,数据库备份文件恢复 mysql -uroot -p123456 db_n ...
- CentOS6.5 安装gitlab以及gitolite迁移gitlab
CentOS6.5 安装gitlab以及gitolite迁移gitlab gitlab 的安装使用以及数据结构 安装 环境: CentOS6.5 基于 nignx + unicorn 搭建的应用环境, ...
- Docker 镜像的备份恢复迁移
在大家已经学会了如何构建镜像以后,为了备份该镜像,我们有以下几个选择: 我们可以将指定镜像保存成 tar 归档文件,需要使用时将 tar 包恢复为镜像即可: 登录 DockerHub 注册中心,将镜像 ...
- svn迁移gitlab,构建前端打包发布流程
前端资源迁移 目前公司的前端资源托管在svn服务器上,由于团队的逐渐扩大,svn的分支管控越来越不灵活,而且对于以后前端流程一体化的处理支持不是很好,因此决定在版本控制上转向git.git的好 ...
- 如何将阿里云mysql RDS备份文件恢复到自建数据库
参考地址:https://help.aliyun.com/knowledge_detail/41817.html PS:目前恢复只支持 Linux 下进行.Linux下恢复的数据文件,无论 Windo ...
- 阿里云 RDS for MySQL 物理备份文件恢复到自建数据库
想把阿里云的Mysql 生成的RAS 文件.tar文件 恢复到本地自建mysql, 遇到的坑.希望帮助大家 阿里云提供的地址 https://help.aliyun.com/knowledge_det ...
- 云计算之路-阿里云-分享:通过RDS备份文件恢复SQL Server数据库
应用场景:假如您用了阿里云的SQL Server RDS,想在另外一台服务器上通过备份文件还原数据库至之前的某个时间点. 准备工作:准备1台用于还原的服务器,安装好SQL Server(2008或20 ...
- 阿里云RDS数据库备份文件恢复到本地mysql数据库
一.安装mysql和xtrabackup (1)安装mysql 因为RDS是5.6版本,所以我们本地的mysql数据库要与RDS版本对应. rpm -ivh http://repo.mysql.co ...
随机推荐
- springboot集成swagger
对于搬砖的同学来说,写接口容易,写接口文档很烦,接口变动,维护接口文档就更更更烦,所以经常能发现文档与程序不匹配. 等过一段时间就连开发者也蒙圈了 Swagger2快速方便的解决了以上问题.一个能与S ...
- Java设计模式之单例模式详解
在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...
- 深入解析Java垃圾回收机制
引入垃圾回收 哪些内存需要回收? 引用计数法 可达性分析 如何回收 Marking 标记 Normal Deletion 清除 Deletion with Compacting 压缩 为什么需要分代收 ...
- Effective Java 第三版——1. 考虑使用静态工厂方法替代构造方法
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 通过c# 实现mysql 数据库的备份和附加
近期涉及到通过c# 对mysq数据库的备份和附件功能 由于mysql 有类似的备份和附加的cmd命令.可是一直没用过,今天实践了下,感觉效率挺快.比自己写的效率高.以下我列出c#调用mysql的备份和 ...
- hdu4893 Wow! Such Sequence!
线段树结点上保存一个一般的sum值,再同一时候保存一个fbsum,表示这个结点表示的一段数字若为斐波那契数时的和 当进行3操作时,仅仅用将sum = fbsum就可以 其它操作照常进行,仅仅是单点更新 ...
- SAP ABAP编程 Table Control动态隐藏列
在SAP DIALOG设计中,有时候须要动态的隐藏某些列,以下是方法. ***数据定义 CONTROLS: table_control TYPE TABLEVIEW USING SCREEN 0100 ...
- Configuring WS-Security UsernameToken and WS-SecureConversation (Symmetric Connection Creation)
Context This procedure provides a detailed process of all necessary steps to secure Web Services wit ...
- exports 和 module.exports
首先参考一个js的示例 app.js var a = {name: 'nswbmw 1'}; var b = a; console.log(a); console.log(b); b.name = ' ...
- 【Java入门提高篇】Day10 Java代理——静态代理
今天要介绍的是一个Java中一个很重要的概念--代理. 什么是代理?联系生活想想看,代理似乎并不陌生,最形象的代表便是经纪人,明星一般都有经纪人,经纪人作为中间人,负责代理明星的相关事宜,比如说,有人 ...