gitlab迁移坑深路远
公司的gitlab服务器是前任运维搭建的,用户管理用的ldap是apacheds,现在经常出现用户被锁,有几次自己的管理员账号都被锁了,还好有备用的管理员账号才得以脱险,现在忍不了准备利用gitlab的backup文件迁移数据库。通过backup还原gitlab需要两边的gitlab版本一致,查到目前使用的版本是8.6.1,于是上官网下载,在新服务器部署好,修改url后,让gitlab先跑起来在去
公司的gitlab服务器是前任运维搭建的,用户管理用的ldap是apacheds,现在经常出现用户被锁,有几次自己的管理员账号都被锁了,还好有备用的管理员账号才得以脱险,现在忍不了准备利用gitlab的backup文件迁移数据库。
通过backup还原gitlab需要两边的gitlab版本一致,查到目前使用的版本是8.6.1,于是上官网下载,在新服务器部署好,修改url后,让gitlab先跑起来在去导备份文件(16G左右)。通过gitlab-rake gitlab:backup:restore BACKUP=xxx 导入备份文件,发现总报数据库语法错误,单独解压tar包,把sql导入到postgres里没问题啊....对比了半天现在生产环境的gitlab默认的是mysql5.5数据库,刚在官网下载的默认是postgres数据库,心塞...先把刚部署的gitlab数据库改成mysql吧
现在生产数据库是mysql5.5
刚部署的gitlab 数据库是postgresql
安装mysql,建库,赋权。
添加mysql源
vim /etc/yum.repos.d/mysql.repo
[mysql56-community]
name=MySQL 5.6Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=0
安装mysql
yum install mysql-community-server mysql-devel
/etc/init.d/mysqld start 启动mysql
mysql_secure_installation 初始化
mysql –u root –p
创建数据库和赋权
CREATE DATABASE IF NOT EXISTS `gitlab_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT all privileges ON gitlab_production.* TO 'gitlab'@'%' identified by 'channel' with grant option;
flush privileges;
2.修改gitlab配置如下
vim /etc/gitlab/gitlab.rb
vi /opt/gitlab/embedded/service/gitlab-rails/.bundle/config
将mysql替换成postgres
安装插件ruby插件,要不然执行gitlab:check 会报错,如果没有安装mysql-devel库也会有提示的。
cd /opt/gitlab/embedded/bin/
./gem install -i/opt/gitlab/embedded/service/gem/ruby/2.1.0 mysql2
./gem install -i/opt/gitlab/embedded/service/gem/ruby/2.1.0 mysql2 -v "0.3.20"
通过gitlab-rake gitlab:setup初始化mysql数据库,按照提示输入yes就好了
再次gitlab-rake gitlab:check 通过了,重启gitlab查看数据库变化。
登录gitlab,发现数据已经切换成mysql了.
将备份文件tar包传到新服务器/var/opt/gitlab/backups目录,注意将文件所属修改为git:git
先停止和数据库有关的服务在还原备份。
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1527394255
特么的,还有sql语法错误,我就郁闷了仔细看了下错误提示,原来是有个表名keys占用了关键字,导入备份drop表的时候报错了,登录到数据库drop tables `keys`;成功删除表后,重新导入备份,16G的备份7分钟就导完了,还是很效率的。
重启服务后登录gitlab,发现默认跳转到老gitlab地址,检查了nginx等确认没有做过跳转。仔细分析了下,可能是之前配置文件url存在数据库中,我导库直接带过来的,直接改数据库吧。
改完home_page_url和home_page_url后,跳转问题解决了。没有登录权限,之前ldap模式禁止本地登录了,于是有打开本地登录。
mysql -u gitlab -p
use gitlab_production;
update application_settings set signin_enabled= '1';
update application_settings set home_page_url = 'http://git.xxx.com';
update application_settings set after_sign_out_path = 'http://git.xxx.com'
一切修改完后,再次登录,肯定登录失败的,因为之前关联ldap,现在改成本地用户了,只能暴力获取gitlab管理员密码了。
gitlab-rails console production
Loading production environment (Rails 4.2.5.2)
irb(main):001:0> user = User.where(id:1).first
irb(main):002:0> user.password='channel!@#'
irb(main):003:0> user.save!
修改完密码,终于可以用管理员登录了。
用户信息,权限,key都在,唯一要改的就是用户本地密码。
git clone push merage等都没有问题,算是迁移成功了,后面有问题我在发出来。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)