0%

gitlab升级、备份、恢复

官方说明:https://docs.gitlab.com/ee/update/index.html#upgrade-paths

备份

备份配置

1
2
3
4
5
6
7
8
9
10
11
# 配置相关配置
# vim /etc/gitlab/gitlab.rb
# gitlab 访问域名
external_url 'http://xx.xx.xx.xx'
# 备份配置
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
# 备份有效期,单位为秒,比如如下7天 ,也可以根据自己实际情况来做异地转存
# 这里的有效期是针对本地存储,而非remote storage,比如阿里云的OSS
gitlab_rails['backup_keep_time'] = 604800

备份

1
2
#执行一条命令即可完成备份
[root@gitlab ~]# gitlab-rake gitlab:backup:create

备份完会提示告警,需要自己备份如下两个文件,恢复的时候也确保有这两份文件

  • /etc/gitlab/gitlab.rb
  • /etc/gitlab/gitlab-secrets.json

远端备份

从7.4版本支持直接转存本地备份到远程

1
2
3
4
5
6
7
8
9
10
gitlab_rails['backup_upload_connection'] = {
'provider' => 'Aliyun',
'aliyun_accesskey_id' => 'Access Key',
'aliyun_secretekey_id' => 'Secret Key',
'aliyun_oss_endpoint' => 'http://oss-cn-beijing-internal.aliyuncs.com',
'aliyun_oss_bucket' => 'devops-backup',
'aliyun_oss_location' => 'beijing'
}
# 对象存储bucket中的子目录
gitlab_rails['backup_upload_remote_directory'] = 'gitlab'

参考文档:https://docs.gitlab.com/14.7/ee/administration/object_storage.html

恢复

==注意事项:==
1、恢复的文件必须是在配置的备份路径下,比如这里的 /var/opt/gitlab/backups
2、恢复的时候指定备份的序号,比如 1650586858_2022_04_22_14.1.8_gitlab_backup.tar 这里取1650586858_2022_04_22_14.1.8
3、备份文件的权限必须是 644
4、检查恢复状态 gitlab-rake gitlab:check SANITIZE=true

1
2
3
4
5
6
7
sudo gitlab-ctl stop unicorn 
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status
# restore
gitlab-rake gitlab:backup:restore BACKUP=1650586858

内存消耗问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#进程超时时间
unicorn['worker_timeout'] = 60
#进程数
unicorn['worker_processes'] = 10
#进程最小内存 200KB
unicorn['worker_memory_limit_min'] = "200 * 1 << 20"
#进程最大内存 300MB
unicorn['worker_memory_limit_max'] = "300 * 1 << 20"
#并发数
sidekiq['concurrency'] = 16
#数据库缓存
postgresql['shared_buffers'] = "256MB"
#数据库并发数
postgresql['max_worker_processes'] = 8

升级步骤

先停止数据写入

如确定没有数据写入,可以不执行以下命令

1
2
3
sudo gitlab-ctl stop unicorn 
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

下载指定的版本

1
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

更新升级

1
yum install -y gitlab-ce-xxx.xx