记录一下,以免忘记,也希望能给到大家一些小小的帮助~
一、备份
本文的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