gitlab安装/备份/恢复

最近公司gitlab服务器因为误删文件导致系统起不来,幸好之前有做备份脚本,得以恢复
gitlab恢复和安装的必须是同一个版本,否则不能恢复
技术博客 http://idea.coderyj.com/

1.恢复要准备资料

gitlab安装/备份/恢复_第1张图片

*.gitlab_backup.tar 是备份文件,前面的 12.0.9是版本号,要想恢复必须下载这个版本 下载链接 https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=12.0.9&filter=all&dist=
gitlab.rb 是配置文件,包括端口ip等等, gitlab-secrets.json 是数据库加密的秘钥,恢复数据库就靠它了

gitlab安装/备份/恢复_第2张图片

下载的时候记得要下载匹配你系统的版本

2.安装gitlab,将下载好的 .deb文件拷贝到服务器上开始安装
sudo dpkg -i  gitlab-ce_12.0.9-ce.0_amd64.deb

漫长等待 中间会询问 输入 yes就OK了

3.设置配置文件 vim /etc/gitlab/gitlab.rb
# 改成你服务器的外网地址 ip:port
external_url 'http://gitlab.example.com'

gitlab安装/备份/恢复_第3张图片

4.重载配置 gitlab-ctl reconfigure
5.启动 gitlab-ctl start
6.登录网址去重置密码,或者写代码
sudo gitlab-rails console -e production
user = User.where(id: 1).first
user.password = 'qwer1234'
user.password_confirmation = 'qwer1234'
user.save! 
exit
7.拷贝文件
  • 将配置文件和数据库秘钥拷贝到 /etc/gitlab目录
cp -r gitlab.rb /etc/gitlab/
cp -r gitlab-secrets.json /etc/gitlab/
  • 将备份文件拷贝到 /var/opt/gitlab/backups/
cp -r 1703008988_2023_12_20_12.0.9_gitlab_backup.tar /var/opt/gitlab/backups/
8.停止gitlab
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
9.开始恢复 cd /var/opt/gitlab/backups/
# 只能到版本号这里,不然就找不到恢复文件了
gitlab-rake gitlab:backup:restore BACKUP=1703008988_2023_12_20_12.0.9

恢复的过程中会询问 直接输入 yes就OK了

10.漫长的等待之后你发现恢复好了, 直接访问你的文件就回来了
11.gitlab备份
# 手动备份
gitlab-rake gitlab:backup:create
  • 备份之后会存在 /var/opt/gitlab/backups/ 目录, 配置文件和数据库文件在 /etc/gitlab 不会自动备份,需要手动来备份
  • gitlab.rb 是配置文件,包括端口ip等等,
  • gitlab-secrets.json 是数据库加密的秘钥,恢复数据库就靠它了
12.编写脚本每天备份一次
#! /bin/sh

### BEGIN INIT INFO
# Provides:          gitlab_back.sh
# Required-start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the gitlab_back.sh daemon
# Description:       starts gitlab_back.sh using start-stop-daemon
### END INIT INFO

# 遇到错误就退出
#gitlab_version 12.0.9
set -e
dir=/opt/gitlab/bin
cd $dir
# 自动备份sql文件
path=/var/opt/gitlab/backups
time2=$(date "+%Y%m%d%H%M%S")
#如果文件夹不存在,创建文件夹
if [ ! -d $path ]; then
    mkdir -p $path
fi
gitlab-rake gitlab:backup:create CRON=1

#删除30天之前的文件
find $path -name "*_gitlab_backup.tar"   -mtime +30 -exec rm  {} \;
  • 设置定时任务
crontab -e
0 1 1 * * /opt/back/gitlab_back.sh

你可能感兴趣的:(gitlab,ubuntu,linux,运维,开发语言,java)