安装docker版本gitlab教程,参考本站文档:docker部署gitlab教程
前言:gitlab目前支持同版本之间进行数据迁移,例如原来是13.5.4版本,那么需要还原的也需要是13.5.4版本的gitlab,文件需要三个,如下
资源文件:/home/gitlab/data/backups 中的 *****_13.5.4_gitlab_backup.tar
密钥文件:/home/gitlab/conf 中的 gitlab-secrets.json
配置文件:/home/gitlab/conf 中的 gitlab.rb
1、手动备份操作
方式一:容器内操作备份
# 查看容器id
docker ps
# 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
docker exec -it -i <这里是容器id> /bin/bash
# 执行备份命令
gitlab-rake gitlab:backup:create
方式二:容器外操作备份
docker exec gitlab bash gitlab-rake gitlab:backup:create
备份后的文件,可在docker容器的/var/opt/gitlab/backups文件夹中查看,也可在系统的/home/gitlab/data/backups文件夹中查看
2、定时自动备份
用crontab定时执行任务,cron服务是Linux的内置服务,但是其不会自动开机启动
-
自动备份脚本。新建备份的sh文件:在
/root
下新建gitlab_backup.sh
vi /root/gitlab_backup.sh
-
gitlab_backup.sh中内容如下:
#! /bin/bash echo "备份-开始备份gitlab代码" docker exec gitlab gitlab-rake gitlab:backup:create echo "备份-完成备份gitlab代码"
-
测试执行,如果/home/gitlab/data/backups` 下有新生成的tar包,即可说明sh文件写对了
sh gitlab_backup.sh
-
新增定时任务:使用
crontab -e
进入定时任务编辑界面,新增如下内容:# 每天凌晨2点执行备份脚本,文章底部有cron格式说明 0 2 * * * /root/gitlab_backup.sh start
-
设置cron服务开机启动(因为默认不会开机启动crond)
vi /etc/rc.d/rc.local # 在最后一行加入`/sbin/service crond start`
-
cron服务的启停(常用命令)
/sbin/service crond start 服务启动 /sbin/service crond stop 服务停止 /sbin/service crond restart 服务重新启动 /sbin/service crond reload 服务重新加载配置
-
cron基本格式
* * * * * command 分 时 日 月 周 命令 其中, 第1列表示分钟,1~59,每分钟用*表示 第2列表示小时,1~23,(0表示0点) 第3列表示日期,1~31 第4列表示月份,1~12 第5列表示星期,0~6(0表示星期天) 第六列表示要运行的命令。
保存,重新加载配置和启动或重启cron服务即可。对于开机自启动cron服务,需要reboot验证
3、还原gitlab备份文件
1、需要准备一台新的gitlab服务,并且版本与备份的那台一致,如没有则参照:参考本站文档:docker部署gitlab教程
2、恢复备份
# 把第一台服务器备份的 1682571554_2023_04_27_13.5.4_gitlab_backup.tar 文件拷贝到新gitlab的/home/gitlab/data/backups目录中
cp 1682571554_2023_04_27_13.5.4_gitlab_backup.tar /home/gitlab/data/backups
# 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
docker ps
docker exec -it -i <这里是容器id> /bin/bash
# 修改权限
chmod 777 /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar
chown -R git:git /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar
# 恢复备份文件前,先停止容器内相关数据连接服务
gitlab-ctl stop puma
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 最好修改下数据权限,不然恢复容易报错
# 修改postgresql配置
vi /var/opt/gitlab/postgresql/data/postgresql.conf
# 如下修改:
listen_addresses = '*'
# 修改pg_hba配置
vi /var/opt/gitlab/postgresql/data/pg_hba.conf
# 最后添加:
local all all trust
host all all 127.0.0.1/32 trust
# 重启gitlab服务
gitlab-ctl restart
# 修改gitlab账号为超级用户
su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
ALTER USER gitlab WITH SUPERUSER;
\q
exit
# 恢复备份文件前,先停止容器内相关数据连接服务
gitlab-ctl stop puma
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 恢复备份, 后面的数字是 1682571554_2023_04_27_13.5.4_gitlab_backup.tar文件的前面一部分
gitlab-rake gitlab:backup:restore BACKUP=1682571554_2023_04_27_13.5.4
# 重启服务
gitlab-ctl restart
# 拷贝配置文件
cp gitlab-secrets.json /home/gitlab/conf/
cp gitlab.rb /home/gitlab/conf/
# 重启服务
gitlab-ctl restart
实际使用中,/home/gitlab/data/backups中的备份文件清除了就会报错【backup_information.yml、db、repositories】这三个,所以我这边在gitlab.rb中修改了backups的默认文件夹
评论区