docker中的gitlab数据备份、迁移和升级
前期准备
- 数据备份
- 记录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数据备份、迁移和升级的更多相关文章
- oracle中导入导出数据备份数据库
原文:oracle中导入导出数据备份数据库 数据库所在位置 将数据导出到的文件名 用户名 备份数据库 :exp c ...
- 在docker 中搭建gitlab环境
docker run --name gitlab -it -p : -p : -p : \ --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXs ...
- docker中搭建gitlab
1, 下载镜像 docker pull sameersbn/gitlab:7.4.3 # 下载gitlab镜像 docker pull sameersbn/mysql:latest # 下载gitla ...
- Gitlab备份与恢复、迁移与升级
0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问. yum install curl openssh-server postf ...
- GitLab 数据备份和恢复
GitLab 备份 /opt/gitlab/bin/gitlab-rake gitlab:backup:create //只是备份各项目的数据 完成后会在默认路径下多出来备份的tar包! /var/o ...
- gitlab备份迁移与升级
升级计划: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 1. 安装gitlab(和源版本必须保持一致) wget https: ...
- docker中MySQL镜像数据,日志,配置持久化
Docker的MySQL8镜像, 实行数据持久化 version: '3.1' services: mysql-itoken-service-admin: restart: always image: ...
- 从docker中备份oracle和mongo数据
从docker中导出Oracle数据 这里推荐先把脚本文件放到容器里面(这里没有) #!/bin/sh # 进入容器 # 本机备份位置 /root/oracleData/dist/temp # 当前日 ...
- Docker 使用指南 (四)—— 数据卷的使用
一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...
- mongodb数据库备份迁移 windows -> linux
mongodb数据库备份迁移 windows -> linux cd 到本机mongodb的安装目录 如: C:\Program Files\MongoDB\Server\3.4\bin 可以发 ...
随机推荐
- java技术系列(四) 泛型
泛型声明 有限制泛型声明方式: //确保class即表示枚举有表示Operation的子类型: private static <T extends Enum<T> & Ope ...
- net6 - System.ComponentModel.DataAnnotations Attribute
using System; using System.Web.DynamicData; using System.ComponentModel.DataAnnotations; [MetadataTy ...
- Luogu7912
初中同学问我咋做,所以就写了一份题解. 先摆复杂度:均摊 \(O(n)\). 考虑,如果我们每次操作的复杂度都与输出量同阶,而输出量总量 \(O(n)\),则复杂度得到均摊. 于是我们现在要设计一个算 ...
- 7. C语言科学计数法表示int
c语言10的n次方写用e表示: 比如int a=10e2 表示10*10的2次方=1000: 注意:10e6, 代表10*10^6 不代表10^6. 10^6为1^6
- drf从入门到飞升仙界 03
APIView执行流程 基于APIView+JsonResponse编写接口 # APIView是drf提供给使用者的一个类,在使用drf写视图类,继承都是这个类及其子类 # APIView继承了Dj ...
- vue remark重置 提交
html: <el-table-column prop="remark" label=""> <templat ...
- 杭电oj 平方和与立方和
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成. Output 对于每组输入数据,输出一 ...
- Mac Google浏览器 Chrome
Mac Google浏览器 Chrome https://590m.com/f/28636472-500465601-d4c369 (访问密码:7410)
- yum install的时候提示:Loaded plugins: fastestmirror
fastestmirror是yum的一个加速插件,这里是插件提示信息是插件不能用了. 不能用就先别用呗,禁用掉,先yum了再说. 1.修改插件的配置文件 # vi /etc/yum/pluginco ...
- 服务器 安装docker (启动坑了很久才成功)docker-compose
安装docker: 1.Docker要求CentOS系统的内核版本高于 3.10 , 通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包: sudo yu ...