天天看点

gitlab备份与恢复一、备份二、使用备份文件恢复gitlab

记录一下,以免忘记,也希望能给到大家一些小小的帮助~

一、备份

本文的gitlab是基于docker启动的,如果是非docker启动,备份方式也基本没有区别

首先进入容器:

docker exec -it 容器id bash
           

执行命令:

gitlab-rake gitlab:backup:create
           

等待完成即可,备份完成后文件位置如下:

容器内:

/var/opt/gitlab/backups
           

宿主机上的备份文件地址看你docker run的时候指定的挂载关系了,我的宿主机备份文件地址是:

/home/gituser/srv/gitlab/data/backups/1549001973_2019_02_24_10.8.4_gitlab_backup.tar
           

好了备份到这边就结束了,具体实现每日自动备份,可以写个脚本用crontab运行,希望可视化好一点的话就配置个jenkins job。

二、使用备份文件恢复gitlab

1.首先需要准备一个与当前gitlab版本一致的gitlab镜像

比如我现在用的gitlab是10.8.4,那么就需要准备一个10.8.4版本的gitlab镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    10.8.4-ce.0         a6cd10f85c07        8 months ago        1.47GB
           

2.基于这个镜像启动一个容器

sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 8082:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:10.8.4-ce.0
           

3.容器启动完成后进入这个容器

docker exec -it 容器id bash
           

4.将宿主机的备份文件拷贝到容器的/var/opt/gitlab/backups 下面

docker cp 宿主机的文件路径 容器ID:容器内部路径
           

例如:

docker cp /home/gituser/srv/gitlab/data/backups/1549001973_2019_02_24_10.8.4_gitlab_backup.tar 8dac4e884274(容器ID):/var/opt/gitlab/backups 
           

5.给备份文件777的权限

 chmod 777 1549001973_2019_02_24_10.8.4_gitlab_backup.tar
           

6.重命名备份文件,文件名不规范会导致恢复失败。

mv 1549001973_2019_02_24_10.8.4_gitlab_backup.tar 1549001973_gitlab_backup.tar 
           

7.停止相关数据连接服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq
           

8.恢复gitlab数据

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
           

例如本文例子中的恢复的命令就是:

gitlab-rake gitlab:backup:restore BACKUP=1549001973
           

9.等待备份完成之后,在容器内重启gitlab服务

gitlab-ctl restart
           

10.访问备份完成后的gitlab地址:

以本文为例,由于在docker run的时候指定的端口映射是 (宿主机)8082 ---> 80(docker 容器),

因此访问地址是   宿主机ip + 8082

继续阅读