Gitlab迁移小记
来源:互联网 发布:国家中级程序员证书 编辑:程序博客网 时间:2024/06/05 15:45
本来用家里退休的笔记本,利用ddns,搭建了一个gitlab自己玩,最近刚好拿到一个DigitalOcean的优惠,就把想把它迁移到DigitalOcean的机器上了(毕竟原本的功耗带来的成本还是不低的,一天大概要跑一度电,也许更多,那一个月下来也要30多的开销了。。。不过好处就是性能相对vps来说,绝对算高端的了,6g内存,几年前的笔记本)
在经过对DO的各个机房测速后,似乎荷兰的阿姆斯特丹机器延迟相对低一点,于是就选了那里的vps。PS:选国外机器好处有两个,一是自己随便折腾个网站啥的不用去备案;另一个就是可以自己搭建科–学–上–网的服务器,嘿嘿嘿~
接下来首先当然是在vps上安装gitlab了,我的机器用的是centos7,根据gitlab官网的安装文档,就可以成功安装了。不过后来重装gitlab的时候发现,其实只需要用yum(yum install gitlab-ce)就够了。。。
安装完后,参考这篇文章《使用Gitlab一键安装包后的日常备份恢复与迁移》,将旧机器上的gitlab备份,再将其通过vps传送到新服务器的backup目录(/var/opt/gitlab/backups
),然后在新vps上执行恢复命令。这里需要注意,根据官方备份文档的提示:
This procedure assumes that:
- You have installed the exact same version of GitLab Omnibus with which the backup was created
- You have run sudo gitlab-ctl reconfigure at least once
- GitLab is running. If not, start it using sudo gitlab-ctl start.
即:相互迁移的两个gitlab之间的版本必须完全一致;至少执行过一次sudo gitlab-ctl reconfigure
;gitlab正在运行。
其中第二条在其他地方都没见到提到过,需要注意一下(尤其是刚装好就要恢复的gitlab,很容易遇到这种情况)。
接着执行(注意这里的1393513186换成你的备份的前缀,如1393513186_gitlab_backup.tar): sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186
但是执行完悲剧了,出现类似这样的提示:
GitLab version mismatch: Your current GitLab version (8.10.1)
differs from the GitLab version in the backup! Please switch to the
following version and try again: version: 8.2.3Hint: git checkout v8.2.3
其实这里很好理解,就是前面规则里的第一条,要求gitlab版本一致。但是这里我脑袋抽了,居然没想到把新的gitlab降级到8.2.3,而是直接想着把旧的gitlab升级到8.10.1再重新生成一个备份供新gitlab使用。。。也许是想着新的版本肯定更好用吧。。。
升级完旧gitlab,并且生成新备份传到新vps上,恢复的时候,一大堆数据库异常,大概都是一些表约束无法删除、表不存在之类的;然后再往下执行还有一些其他错误。最后,直接登录gitlab,发现好像东西都在,然而却看不到git项目的文件,估计是只恢复了数据库,却没有恢复repository,在新的gitlab上执行备份,生成的备份文件只有几十k,而原来的备份文件可是70+MB啊。。。显然是恢复失败了,后面折腾多了好几次,还是同样的结果——失败。
终于,灵机一动,难道是新版本的问题?要不我把gitlab退回8.2.3,反正之前在8.2.3生成的备份文件还在。说干就干,查了一下,用yum remove
或者 yum erase
删除(中间似乎有用过yum downgrade
之类的,好像也失败,是否用过不太清楚了),查了下,说yum erase
会把配置文件也一块干掉,于是选择了它,然而事实是,用yum erase
卸载后,至少在我所知的与gitlab有关的两个路径(/etc/gitlab/
和/var/opt/gitlab/
),东西都完整的在那,根本没被删掉。。。于是手动删除,只保留backup文件夹。接着安装8.2.3版本,只需要yum install gitlab-ce-8.2.3
就行了。安装完后,也把旧版本/etc/gitlab/
下的内容替换到新机器的相同目录下,然后立即执行 sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXX
依旧是数据库那里一大堆错误提示,但是后面的其它东西都恢复成功了!怀着忐忑的心执行了gitlab-rake gitlab:backup:create
生成新的备份,然后到/var/opt/gitlab/backups
下ll
,结果是: total 151124
-rw-r--r-- 1 root root 77373440 Jul 28 20:06 1469520460_gitlab_backup.tar
-rw------- 1 git git 77373440 Jul 28 13:38 1469684319_gitlab_backup.tar
竟然完全一样!此时被兴奋冲昏了头脑,都忘了严谨思考了。虽说大小一样,但只能说明该恢复的都恢复的差不多了,还是有可能不一样的(比如某个配置默认值是1,而你的设置值是2,不管恢复成功与否,总文件大小肯定还是一样的),要验证真的一样,可能只能用md5了,或者利用git的版本管理来对比差异,还能定位到不一样的地方在哪。这个后面看心情吧,可能懒得弄了,毕竟东西也不是很重要,自己玩玩而已,而且看到运行起来基本都没问题。
最后总结一下:要迁移gitlab时,旧服务器gitlab-rake gitlab:backup:create
并拷到新服务器的/var/opt/gitlab/backups
;新服务器装上和旧服务器一样版本的gitlab(不建议升级旧服务器,万一有问题了咋办呢?新服务器迁移完升不升级再决定),也把旧版本/etc/gitlab/
下的内容替换到新机器的相同目录下,然后 sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXX
其中XXXXXXXX就是你gitlab备份的数字前缀。
到此应该就可以了,如果不行的话,就问度娘谷歌去吧,哈哈~
PS:感觉好像还是旧的版本8.2.3运行起来比较流畅,新版本8.10.1似乎比较卡一些,因为我的机器配置也比较低(512M内存,自己设置了2g的swap,不然根本跑不起来),跑旧的都够吃力了,跑新的似乎容易挂掉,当然也可能是之前的都没恢复成功引起的。
- gitlab迁移小记
- Gitlab迁移小记
- GitLab迁移
- gitlab 迁移
- gitlab迁移
- gitlab备份迁移
- gitlab迁移升级
- 迁移和升级gitlab
- gitlab完整迁移
- svn 迁移到 gitlab
- Gitlab服务器迁移详解
- gitlab数据迁移
- Linux上gitlab迁移
- Gitlab服务器迁移
- gitlab仓库迁移
- gitlab project项目迁移
- gitlab服务器迁移
- Gitlab 迁移、备份、恢复
- Linux下的静态库、动态库和动态加载库
- HttpUtils请求网络+xlistview上拉刷新,下拉加载
- ASP.NET(C#)读取Excel的文件内容
- EXPRESS OLE DB Library for C++
- run Time
- Gitlab迁移小记
- 发现个学spark的地方,不错
- 关键字和宏
- C#学习入门
- Android版本更新示例
- SDUT3347数据结构实验之数组三:快速转置
- 7.29
- PHPCMS V9 列表页调用任意文章内容
- Linux进程监控