gitab的升级的前置条件就是已经安装好了和旧的gitab服务器相同版本的Omnibus gitlab。source源码安装的gitlab升级到最新的gitlab的Omnibus版本,操作步骤是:

1.source源码安装的gitlab更改成相同版本的Omnibus版本的gitlab。

source源码安装的gitlab的版本是gitlab 7.14.3;MySQL是5.6。

2.Omnibus版本的gitlab升级到最新版本。

下载最新版本的gitlab的CE的rpm包,然后直接yum localinstall安装即可。

一.旧服务器,source源码安装的gitlab的备份。

1.关闭gitlab服务

su - git

sudo /etc/init.d/gitlab stop

2.备份最新的数据

su - git

cd /home/git/gitlab/

sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production

#上述命令执行完成之后会在gitlab下的tmp/backup/目录下面获取一个前缀是时间戳的tar.gz压缩文件,这个文件就是备份了数据库信息已经git仓库,wiki信息。

3.备份数据库,以postgresql的格式备份出来

mysqldump --compatible=postgresql --default-character-set=utf8 -r gitlabhq_production.mysql -u gitlab gitlabhq_production -p

4.mysql转postgresql。

a).下载mysql转postgresql的工具集

git clone https://github.com/gitlabhq/mysql-postgresql-converter.git -b gitlab

b).mysql的sql语句转换成postgresql的sql语句

python mysql-postgresql-converter/db_converter.py gitlabhq_production.mysql db/database.sql

#因为备份之后的压缩文件解压之后,mysql的sql文件是放在一个db目录下面的database.sql文件,之所以创建db目录就是因为为了替换压缩文件里面的db/database.sql文件

c).转储

ed -s db/database.sql < mysql-postgresql-converter/move_drop_indexes.ed

#上述命令的执行需要在python2.7或者以上的环境才能够执行

d).替换压缩文件中的db/database.sql

gzip db/database.sql

tar rf 1448859844_gitlab_backup.tar db/database.sql.gz

二.新服务器的恢复

1.安装好Omnibus gitlab 7.14.3

2.拷贝备份到新服务器的备份目录

scp 1448859844_gitlab_backup.tar root@new_gitlab:/home/gitlab/git-data/backup

3.更改压缩文件权限

chown git 1448859844_gitlab_backup.tar

4.恢复备份

sudo gitlab-ctl stop unicorn

sudo gitlab-ctl stop sidekiq

LC_ALL="en_US.UTF-8" sudo gitlab-rake gitlab:backup:restore BACKUP=1448859844

#加上这个变量,否则执行到gitlab:shell:setup重新生成authorized_keys时会报错

5.更改git仓库权限信息

sudo chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories

sudo chmod -R ug-s /var/opt/gitlab/git-data/repositories

find /var/opt/gitlab/git-data/repositories -type d -print0 | sudo xargs -0 chmod g+s

6.恢复git和项目信息

sudo gitlab-rake gitlab:satellites:create RAILS_ENV=production

7.启动gitlab

sudo gitlab-ctl start

8.gitab检测

sudo gitlab-rake gitlab:check

三.新服务局升级到最新版本的gitlab

yum localinstall gitlab-ce.*.rpm

#yum安装会自动升级和清除原来旧版本的gitlab信息

当执行rpm进行升级时Gitlab会自动执行以下命令:

1. 关闭gitlab服务。

2. 使用当前的旧版本Gitlab创建备份(轻量级备份,仅备份数据库)

3. 运行gitlab-ctl reconfigure,进行必要的数据库更新迁移。

4. 重新启动Gitlab服务。

四.更改配置文件信息:

1.更改gitlab的仓库文件目录。

cd /etc/gitlab/

vi gitlab.rb

# git_data_dir "/var/opt/gitlab/git-data"

git_data_dir "/home/gitlab/git-data"

2.更改gitlab的backup仓库

# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

gitlab_rails['backup_path'] = "/home/gitlab/backups"

3.更改捆绑的Nginx的主配置文件nginx.conf信息

nginx['custom_nginx_config'] = "include /var/opt/gitlab/*.conf;"

4.更改捆绑的Nginx的子配置文件gitlab-http.conf文件信息

nginx['custom_gitlab_server_config'] = " location = /wiki { \n return 301  http://git.moumentei.com/other/wiki/wikis/home; \n}\n"

5.使用公司内部的SMTP邮件服务器

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.server"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_authentication'] = false

gitlab_rails['smtp_enable_starttls_auto'] = false

gitlab_rails['gitlab_email_from'] = 'xxx@xxxx.com'

gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

#所有在/etc/gitlab/gitlab.rb配置文件里面的修改都需要执行gitlab-ctl reconfigure,重新读取配置文件信息。

升级完成之后,若是在web见面创建项目失败,可以执行以下命令,清除缓存信息

sudo gitlab-rake cache:clear

五.关于hosts和known_hosts映射问题。

因为更换了新的gitlab服务器,所以之前所有基于git-clone过的服务器在重新提交或者拉去的时候会报错,提示Host key verification failed.需要在knwon_hosts文件里面把包含旧的服务器信息的公钥删除,在重新ssh一次。

转载于:https://blog.51cto.com/11819159/1916589

gitlab的升级【二】旧数据的备份和新数据的恢复相关推荐

  1. MySQL数据的备份还原及数据修复

    在日常的生产环境中为什么要进行备份   备份可以使生产中的数据进行有效的灾难恢复:硬件故障.软件故障.自然灾害.误操作测试等数据丢失场景. 备份注意要点 能容忍最多丢失多少数据 恢复数据需要在多长时间 ...

  2. 数据服务器数据自动备份工具,网站数据自动备份工具介绍

    12月的寒风吹过,站长无时无刻不在担心网站,会不会在下一分钟就被关闭.而此时,为了防止服务器机房断网,网站被迫关闭,网站的数据备份就显得格外重要,一旦网站出现问题,我们可以利用最新的数据上传到其他空间 ...

  3. SQLCel匹配原数据信息,更新原数据所有信息并插入新数据的过程

    使用SQLCel高效率(速度快,数据完整)的解决了我领导提的问题 "如何更新数据库中原有的数据并插入新的订单数据" 过程如下: 思路:使用字段匹配和修改字段即可解决问题,用时3分钟 ...

  4. Redis + Lua 实现 sorted set 集合保证固定数量的数据,并保留新数据剔除旧数据

    场景:公司某个场景要求保留前20个最新的数据,用作查询展示,用MySQL每次频繁查询太耗费性能,所以用Redis处理一下. 直接上代码: local key = KEYS[1] -- 定义从参数中获取 ...

  5. linux更换steam目录,如何在Linux上备份Steam游戏数据 | MOS86

    无论您是需要重新安装Linux操作系统,还是只是想确保游戏进度不会丢失数据,备份存储游戏数据就是答案. 您可以制作完整的磁盘映像,也可以使用专用工具. 无论出于什么原因备份游戏数据,您都可以选择以下三 ...

  6. 华纳云:服务器数据自动备份有必要吗?如何设置?

    服务器数据自动备份是必须的吗?服务器里面会存储着重要的数据.文件或历史纪录,不论是对企业用户还是对个人用户,都是至关重要的,一时不慎丢失,都会造成不可估量的损失,因此做好数据备份是很有必要的. 我们都 ...

  7. 苹果应用备份到电脑 苹果应用备份到新苹果手机

    苹果应用被删除后即使重新下载,应用数据也不复存在.很多用户问:能不能把苹果应用备份到电脑上,误删软件后找回数据呢?答案是可以的,下文将教大家如何将苹果应用备份到电脑.可能你想要把苹果应用备份到新苹果手 ...

  8. 图片数据的基本预处理与数据增强

    1 数据预处理 当数据顺利导入数据后,我们就可以依据图像的具体情况对图像进行预处理了.与机器学习中较为固定的预处理流程不同,图像的预处理基本完全与数据本身有关.从数据采集的瞬间开始,我们就需要考虑预处 ...

  9. 用js来实现公告栏文字上下滚动效果,可添加新数据(简单)

    大家好我是菜鸟前端学有引力,这是我的第一篇文章,我希望把我在工作上遇到的一些业务问题和解决方法教给大家,如果有错误和不足,希望大家多多交流指正~ 正片: 今天老板来需求了!要求要在网页上方加一个实时更 ...

最新文章

  1. 编辑Linux系统实验,linux操作系统实验vi编辑器的使用
  2. C语言函数到.h文件,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件...
  3. [转]C# 将类的内容写成JSON格式的字符串
  4. 【Windows】Windows10-Telnet的使用
  5. UI效率实用素材|WEB数据可视化最佳实践
  6. 遍历排列的实现——VB2005
  7. python输入文字字符串、如何提取字符_用python正则表达式提取字符串
  8. android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题
  9. 软考笔记——2.1进程管理、同步互斥、死锁、线程
  10. 服务器cpu天梯图_12月更新最新CPU天梯图amp;显卡天梯图,选购电脑必看(含台式与笔记本电脑CPUamp;显卡)含机型推荐...
  11. 图像去雾去雨去模糊去噪
  12. H3C网络设备模拟器显示交换机的MAC地址表
  13. 我逢人就吹的超好用Markdown编辑器-Typora
  14. 在追梦的路上,唯独脚踏实地,才能梦想成真
  15. Rust : calls in constant functions are limited to constant functions, tuple structs and tuple varian
  16. ADSL常见网络故障及排除
  17. mini2440 sd卡加载过程详解
  18. CLICKHOUSE函数使用经验(arrayJoin与arrayMap函数应用场景)
  19. 如何玩转短视频提升影响力?
  20. GPIO口模拟IIC--适用于任何ARM系列单片机

热门文章

  1. mybaits四-2:模糊查询
  2. spring一: 容器以及bean生命周期
  3. 微软Skype突破!视讯人数上限来到50人
  4. Spring高级程序设计(Spring框架创始人倾情推荐的权威开发指南)
  5. 20172304 《程序设计与数据结构》第六周学习总结
  6. lighttpd防御 Slow HTTP Denial of Service Attack 解决办法
  7. 线程编程常见API简介(上)
  8. apk反编译看包名什么的
  9. 开机后将sim/uim卡上的联系人写入数据库
  10. DeviceIoControl的使用说明