前期准备

数据备份
记录gitlab运行命令:
docker run -itd --name gitlab \
--hostname gitlab.suniot.cn \
-p 443:443 -p 10022:22 -p 10080:80 \
-v /home/docker/gitlab/config:/etc/gitlab \
-v /home/docker/gitlab/logs:/var/log/gitlab \
-v /home/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:14.1.2-ce.0 备份数据库和配置文件
docker exec -t gitlab gitlab-rake gitlab:backup:create
备份的文件在
/home/docker/gitlab/data/backups

迁移到目标服务器

新的服务器上运行gitlab
docker run -itd --name gitlab \
--hostname gitlab.suniot.cn \
-p 443:443 -p 10022:22 -p 10080:80 \
-v /home/docker/gitlab/config:/etc/gitlab \
-v /home/docker/gitlab/logs:/var/log/gitlab \
-v /home/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:14.1.2-ce.0 正常启动后停止
docker stop gitlab 复制备份的文件到新服务器上
scp /home/docker/gitlab/data/backups/1636695916_2021_11_12_14.1.2_gitlab_backup.tar root@172.16.77.88:/home/docker/data/gitlab/data/backups
配置文件需要手动备份,传到新服务器上
scp /home/docker/gitlab/config/* root@172.16.77.88:/home/docker/data/gitlab/config 启动服务 docker start gitlab
还原备份
# 进入容器
docker exec -it gitlab /bin/bash
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq # 验证
gitlab-ctl status #还原备份文件
gitlab-rake gitlab:backup:restore BACKUP=1636695916_2021_11_12_14.1.2
#注意unpacking backup failed报错,文件权限问题
chmod 777 1636695916_2021_11_12_14.1.2_gitlab_backup.tar
    #重启并验证
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
验证项目是否迁移成功

官方文档:报500错误设置

https://docs.gitlab.com/ee/raketasks/backup_restore.html#troubleshooting

docker升级gitlab
例子gitlab版本14.1.8>14.2.6
首先停掉 gitlab/gitlab-ce:14.1.8-ce.0版本的docker
docker stop gitlab-14.1.8
基于gitlab-14.1.8挂载的目录去启动gitlab/gitlab-ce:14.2.6-ce.0 docker run -itd --name gitlab-14.2.6 \
--hostname gitlab.xxx.cn \
-p 1443:443 -p 1022:22 -p 1080:80 \
-v /data/docker/gitlab/config:/etc/gitlab \
-v /data/docker/gitlab/logs:/var/log/gitlab \
-v /data/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:14.2.6-ce.0 docker logs gitlab-14.2.6
错误提示:
caller=main.go:733 err="opening storage failed: get segment range: segments are not sequential"
解决方法:
rm -Rf /var/opt/gitlab/prometheus/data/wal
gitlab-ctl restart prometheus
gitlab-ctl status 删除项目报500
gitlab-rails dbconsole --database main
update projects set runners_token = null,runners_token_encrypted = null; 保存项目设置报500
OpenSSL::Cipher::CipherError
原因: 没有导入原来的加密信息/etc/gitlab/gitlab-secrets.json导致,重置下即可。
解决办法:
输入gitlab-rails console,等待进入rails控制台
输入ApplicationSetting.current.reset_runners_registration_token!,显示结果为true,exit退出重新保存

当启动失败时更新文件权限
If this container fails to start due to permission problems try to fix it by executing:
docker exec -it gitlab update-permissions
docker restart gitlab

如果用到nginx代理需要添加 client_max_body_size 100m;推送文件大小 ,gitlab设置推送大小,配置文件里修改大小 三处需要修改   git推送大文件报413

client_max_body_size 50m; # 限制请求体的大小,若超过所设定的大小,返回413错误,默认1m
client_header_timeout 1m; # 读取请求头的超时时间,若超过所设定的大小,返回408错误
client_body_timeout 1m; # 读取请求实体的超时时间,若超过所设定的大小,返回413错误
proxy_connect_timeout 60s; # http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒
proxy_read_timeout 1m; # http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒
proxy_send_timeout 1m; # http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒

docker中的gitlab数据备份、迁移和升级的更多相关文章

  1. oracle中导入导出数据备份数据库

    原文:oracle中导入导出数据备份数据库 数据库所在位置                         将数据导出到的文件名                    用户名 备份数据库 :exp c ...

  2. 在docker 中搭建gitlab环境

    docker run --name gitlab -it -p : -p : -p : \ --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXs ...

  3. docker中搭建gitlab

    1, 下载镜像 docker pull sameersbn/gitlab:7.4.3 # 下载gitlab镜像 docker pull sameersbn/mysql:latest # 下载gitla ...

  4. Gitlab备份与恢复、迁移与升级

    0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问.   yum install curl openssh-server postf ...

  5. GitLab 数据备份和恢复

    GitLab 备份 /opt/gitlab/bin/gitlab-rake gitlab:backup:create //只是备份各项目的数据 完成后会在默认路径下多出来备份的tar包! /var/o ...

  6. gitlab备份迁移与升级

    升级计划: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 1. 安装gitlab(和源版本必须保持一致) wget https: ...

  7. docker中MySQL镜像数据,日志,配置持久化

    Docker的MySQL8镜像, 实行数据持久化 version: '3.1' services: mysql-itoken-service-admin: restart: always image: ...

  8. 从docker中备份oracle和mongo数据

    从docker中导出Oracle数据 这里推荐先把脚本文件放到容器里面(这里没有) #!/bin/sh # 进入容器 # 本机备份位置 /root/oracleData/dist/temp # 当前日 ...

  9. Docker 使用指南 (四)—— 数据卷的使用

    一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...

  10. mongodb数据库备份迁移 windows -> linux

    mongodb数据库备份迁移 windows -> linux cd 到本机mongodb的安装目录 如: C:\Program Files\MongoDB\Server\3.4\bin 可以发 ...

随机推荐

  1. 2345 ip

    121.201.101.43 img1.2345.com121.201.101.43 img2.2345.com121.201.101.43 img3.2345.com121.201.101.43 i ...

  2. ICPC2020上海B - Mine Sweeper II

    思维 [B-Mine Sweeper II_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforc ...

  3. 01、kafka常用命令

    001.kafka版本 kafka_2.13-3.0.0 kafka_2.12-2.8.0 002.模拟给topic名称是 yikuang 的发一条数据(hello world) ./kafka-co ...

  4. stm32f030 模拟IIC

    #define read_SDA (GPIOA->IDR&GPIO_Pin_10) >>10 //PA10 SDA#define set_SDA GPIO_SetBits(G ...

  5. vue-drag-resize + html2canvas合成图片并下载

    https://blog.csdn.net/weixin_43923659/article/details/114701048

  6. #ifdef _WIN32 #ifdef _WIN64

    #ifdef _WIN32#ifdef _WIN64 这样的代码,实际上这提供了一种抽象机制,使代码可以在不同平台间移植. #ifdef _WIN32 #ifdef _WIN64 {windows 6 ...

  7. python菜鸟学习: 1.用户登录输入输出

    # -*-coding: utf-8 -*-name = 'liyuzhoupan'password = '123'def login_test(): count = 0 while count &l ...

  8. docker部署服务器

    Docker部署PostGres docker run -d --name postgres --restart always -e POSTGRES_USER='postgres' -e POSTG ...

  9. 碧血剑—新修版<随笔+剧情大纲>

    明末,袁崇焕含冤而死,其子袁承志为部下相救,称为山宗,其时10岁左右,机缘巧合之下救下杨鹏举和张朝唐一行.随后山宗大会,明军来攻,在朱国治,孙仲寿等人保护下逃走,学得伏虎拳.遇到安大娘,安小惠和哑巴, ...

  10. linux虚拟机,ifconfig无法获取静态ip地址

    之前一直显示这种ip地址,如下图(网图),查看了DHCP,是正常启动的,虚拟网络编辑器中设置的也正确.后来发现更改虚拟机的设置后就可以了,如下: 设置方法:VMware-虚拟机-设置-网络适配器,选择 ...