gitlab 迁移(备份与还原)

大体思路为,先将原gitlab进行备份,然后将备份文件拷贝到新的gitlab机器上进行还原操作。

查看版本信息

gitlab-rake gitlab:env:info

备份命令(旧gitlab)

gitlab-rake gitlab:backup:create RAILS_ENV=production

拷贝文件(新gitlab)

scp [email protected]:/var/opt/gitlab/backups/1558334901_2019_05_20_10.3.4_gitlab_backup.tar /var/opt/gitlab/backups
//我这里是直接在新的gitlab机器上,使用scp从xx.xx.xx.xx(原gitlab机器)将备份文件拷贝过来。这里只是文修的拷贝,你使用U盘离线拷贝,或是别的方法也可以。

还原操作(新gitlab)

1.停止gitlab

gitlab-ctl stop

2.拷贝文件

cd /var/opt/gitlab/backups //默认的备份文件存放路径
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1558334901_2019_05_20_10.3.4
//这里唯一要注意的点就是,这还原时的备份文件名只是备份文件的前一部份,不带“_gitlab_backup.tar”这一段

3.重启gitlab

gitlab-ctl start //start或是restart都可以

附加

1.查看配置文件

grep -Ev "$|[#;]" /etc/gitlab/gitlab.rb
//排除空行与#开头的

2.加一个定时任务每周备份

#!/bin/bash
#gitBackUp.sh
## env
DATAPATH=/var/opt/gitlab/backups/
BACKUP_SERVER=192.168.10.50  #将备文件拷贝到这台机器上
BACKUP_PATH=/data/backup/  #备份机的文件存放目录
LOG_FILE=/home/backup/logs/backup_`date "+%Y_%m_%d_%H_%M_%S"`.log
DATE_FORMAT=`date "+%Y-%m-%d %H:%M:%S"`  #可以用${DATE_FORMAT}将下面重复的地方替换


### ........... ###
echo "##########`date`##########" >> ${LOG_FILE} 2>&1
echo "`date "+%Y-%m-%d %H:%M:%S"` Ready to back up..." >> ${LOG_FILE} 2>&1

echo "`date "+%Y-%m-%d %H:%M:%S"` Ready to create the backup file..." >> ${LOG_FILE} 2>&1
gitlab-rake gitlab:backup:create RAILS_ENV=production >> ${LOG_FILE} 2>&1
echo "`date "+%Y-%m-%d %H:%M:%S"` The backup file is created." >> ${LOG_FILE} 2>&1

if [ -d ${DATAPATH} ]
then
    echo "`date "+%Y-%m-%d %H:%M:%S"` Ready to copy backup file..." >> ${LOG_FILE} 2>&1
    script -q -a ${LOG_FILE} -c "find ${DATAPATH} -mtime -1 -name "*.tar" |xargs ls -ta |head -1 |xargs -i scp {} root@${BACKUP_SERVER}:${BACKUP_PATH}"
    echo "`date "+%Y-%m-%d %H:%M:%S"` Copy done." >> ${LOG_FILE} 2>&1
else
    echo "`date "+%Y-%m-%d %H:%M:%S"` The data path ${DATAPATH} is not exist,please check" >> ${LOG_FILE} 2>&1
fi

echo "`date "+%Y-%m-%d %H:%M:%S"` All done." >> ${LOG_FILE} 2>&1

30 01   * * 0 root  bash /home/backup/gitBackup.sh  #每周日凌晨1:30进行备份

3.增加一个删除脚本,用来清理太过久远的备份文件(备份文件都比较大,多了以后占用太多空间)
该脚本可以在备份机和gitlab的机器上都放一个

#!/bin/bash
#delBackUpFile.sh
#env
BACKUP_PATH=/var/opt/gitlab/backups/   #备文件目录
FILE_COUNT=`ls -l ${BACKUP_PATH}/*.tar |wc -l`
FILE_SAVE_MAX=3 #随手写的,大家随意

#...
if [ ${FILE_COUNT} -gt ${FILE_SAVE_MAX} ]
then
    if [ `find ${BACKUP_PATH} -name "*.tar" |wc -l` -gt 3 ]  #至少要保持拥有三个备份文件
    then
        find ${BACKUP_PATH} -mtime +21 -name "*.tar" | xargs rm -f #删除21天前的备文件
    fi
fi
30 19   * * * root  bash /home/backup/delBackFile.sh  #每天19:30清理一次

4.命令集合

a、gitlab-ctl status             #查看运行状态
b、gitlab-ctl start               #开启服务
c、gitlab-ctl stop               #停止服务
d、gitlab-ctl restart            #重启服务
e、gitlab-rake gitlab:env:info                #查看运行环境
f、gitlab-rake gitlab:backup:create RAILS_ENV=production        #备份,默认备份目录/var/opt/gitlab/backups/
g、gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1558334901_2019_05_20_10.3.4        #指定备份文件并还原

你可能感兴趣的:(gitlab 迁移(备份与还原))