Gitlab 迁移升级

Gitlab 迁移升级

十月 23, 2018

Gitlab迁移升级以及优化

一、安装准备工作

1、安装基础环境

磁盘准备

在云平台创建一块硬盘并且分配给服务器

磁盘分区以及挂载

磁盘分区 略。。。。。。。。

自动挂载

1
/dev/vdc1 /data         xfs     defaults        0 0

安装基础软件

1
2
3
4
5
yum install -y curl policycoreutils-python openssh-server vim
yum update
systemctl enable sshd
systemctl start sshd
https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

修改国内源 vim /etc/yum.repos.d/gitlab_gitlab-ee.repo

1
2
3
4
5
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

2、安装旧版本gitlab

在原始服务器查看原来的gitlab版本

1
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

上传安装包到服务器

1
scp gitlab-ce-9.2.5-ce.0.el7.x86_64.rpm root@x.x.x.x:/tmp/

在新服务器上安装和旧服务器同版本程序

1
yum localinstall /tmp/gitlab-ce-9.2.5-ce.0.el7.x86_64.rpm

3、数据备份

在旧服务器上备份数据

1
gitlab-rake gitlab:backup:create

上传备份文件

1
scp 1531850524_2018_07_18_9.2.5_gitlab_backup.tar root@x.x.x.x:/data/gitlab/backups/

二、数据迁移动

1、数据还原

停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。

1
2
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

修改权限

chown git:git xxxxxxx_gitlab_backup.tar

恢复数据,1406691018为备份文件的时间戳

1
gitlab-rake gitlab:backup:restore BACKUP=1531850524_2018_07_18_9.2.5

恢复完成后,执行 sudo gitlab-ctl reconfigure 重新编译配置

启动后再查看 gitlab 的状态, gitlab-ctl start

三、升级

避免pg升级导致数据合并的问题
需要执行touch /etc/gitlab/skip-auto-migrations

更新程序

1
2
3
4
5
6
7
8
yum update
gitlab-ctl stop sidekiq;
gitlab-ctl stop unicorn;
gitlab-ctl status;
gitlab-ctl reconfigure;
gitlab-ctl status;
itlab-ctl start;
cat /var/opt/gitlab/gitlab-rails/VERSION

  • 如果出现不能更新需要手动下载各版本包依次安装 9.2.5->9.3.0->9.4.0->9.5.3 一直升级到最新版本

四、优化

  • 修改邮件

vim /etc/gitlab/gitlab.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# mail config@yuanjixinag
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitmaster@ytniu.com"
gitlab_rails['smtp_password'] = "***************"
gitlab_rails['smtp_domain'] = "ytniu.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'gitmaster@ytniu.com'

  • 修改仓库存放位置

vim /etc/gitlab/gitlab.rb

1
git_data_dirs({ "default" => { "path" => "/data/gitlab/git-data", 'gitaly_address' => 'unix:/var/opt/gitlab/gitaly/gitaly.socket' } })

  • 修改备份文件位置以及自动备份

vim /etc/gitlab/gitlab.rb

1
2
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab/backups"

1
2
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
  • 编译配置文件&重启服务
    1
    2
    3
    4
    gitlab-ctl stop sidekiq;
    gitlab-ctl stop unicorn;
    gitlab-ctl reconfigure;
    gitlab-ctl start;