gitlab的升级【二】旧数据的备份和新数据的恢复
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的升级【二】旧数据的备份和新数据的恢复相关推荐
- MySQL数据的备份还原及数据修复
在日常的生产环境中为什么要进行备份 备份可以使生产中的数据进行有效的灾难恢复:硬件故障.软件故障.自然灾害.误操作测试等数据丢失场景. 备份注意要点 能容忍最多丢失多少数据 恢复数据需要在多长时间 ...
- 数据服务器数据自动备份工具,网站数据自动备份工具介绍
12月的寒风吹过,站长无时无刻不在担心网站,会不会在下一分钟就被关闭.而此时,为了防止服务器机房断网,网站被迫关闭,网站的数据备份就显得格外重要,一旦网站出现问题,我们可以利用最新的数据上传到其他空间 ...
- SQLCel匹配原数据信息,更新原数据所有信息并插入新数据的过程
使用SQLCel高效率(速度快,数据完整)的解决了我领导提的问题 "如何更新数据库中原有的数据并插入新的订单数据" 过程如下: 思路:使用字段匹配和修改字段即可解决问题,用时3分钟 ...
- Redis + Lua 实现 sorted set 集合保证固定数量的数据,并保留新数据剔除旧数据
场景:公司某个场景要求保留前20个最新的数据,用作查询展示,用MySQL每次频繁查询太耗费性能,所以用Redis处理一下. 直接上代码: local key = KEYS[1] -- 定义从参数中获取 ...
- linux更换steam目录,如何在Linux上备份Steam游戏数据 | MOS86
无论您是需要重新安装Linux操作系统,还是只是想确保游戏进度不会丢失数据,备份存储游戏数据就是答案. 您可以制作完整的磁盘映像,也可以使用专用工具. 无论出于什么原因备份游戏数据,您都可以选择以下三 ...
- 华纳云:服务器数据自动备份有必要吗?如何设置?
服务器数据自动备份是必须的吗?服务器里面会存储着重要的数据.文件或历史纪录,不论是对企业用户还是对个人用户,都是至关重要的,一时不慎丢失,都会造成不可估量的损失,因此做好数据备份是很有必要的. 我们都 ...
- 苹果应用备份到电脑 苹果应用备份到新苹果手机
苹果应用被删除后即使重新下载,应用数据也不复存在.很多用户问:能不能把苹果应用备份到电脑上,误删软件后找回数据呢?答案是可以的,下文将教大家如何将苹果应用备份到电脑.可能你想要把苹果应用备份到新苹果手 ...
- 图片数据的基本预处理与数据增强
1 数据预处理 当数据顺利导入数据后,我们就可以依据图像的具体情况对图像进行预处理了.与机器学习中较为固定的预处理流程不同,图像的预处理基本完全与数据本身有关.从数据采集的瞬间开始,我们就需要考虑预处 ...
- 用js来实现公告栏文字上下滚动效果,可添加新数据(简单)
大家好我是菜鸟前端学有引力,这是我的第一篇文章,我希望把我在工作上遇到的一些业务问题和解决方法教给大家,如果有错误和不足,希望大家多多交流指正~ 正片: 今天老板来需求了!要求要在网页上方加一个实时更 ...
最新文章
- 编辑Linux系统实验,linux操作系统实验vi编辑器的使用
- C语言函数到.h文件,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件...
- [转]C# 将类的内容写成JSON格式的字符串
- 【Windows】Windows10-Telnet的使用
- UI效率实用素材|WEB数据可视化最佳实践
- 遍历排列的实现——VB2005
- python输入文字字符串、如何提取字符_用python正则表达式提取字符串
- android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题
- 软考笔记——2.1进程管理、同步互斥、死锁、线程
- 服务器cpu天梯图_12月更新最新CPU天梯图amp;显卡天梯图,选购电脑必看(含台式与笔记本电脑CPUamp;显卡)含机型推荐...
- 图像去雾去雨去模糊去噪
- H3C网络设备模拟器显示交换机的MAC地址表
- 我逢人就吹的超好用Markdown编辑器-Typora
- 在追梦的路上,唯独脚踏实地,才能梦想成真
- Rust : calls in constant functions are limited to constant functions, tuple structs and tuple varian
- ADSL常见网络故障及排除
- mini2440 sd卡加载过程详解
- CLICKHOUSE函数使用经验(arrayJoin与arrayMap函数应用场景)
- 如何玩转短视频提升影响力?
- GPIO口模拟IIC--适用于任何ARM系列单片机