zoukankan      html  css  js  c++  java
  • GitLab多机备份与恢复操作

    一、作用说明

    备份:假设我们当前的gitlab挂掉了,整个服务器都起不来了,但是我们有对gitlab的归档备份,这时候还可以恢复出数据来。

    迁移:假设此时使用的gitlab服务器出现故障运行不了,但是我们对gitlab在远端机有归档备份,这时候我们就可以在远端机把数据恢复重新搭建gitlab。

    注意的是:备份和迁移的恢复操作是全量的,操作前要确认是否要进行备份或者恢复操作。

    二、前提条件

    在新的主机安装与之前机器相同版本的gitlab rpm包。也就是说要保证两台或者多台机器安装的gitlab版本要一致。可以通过以下命令查看相关git版本以及安装目录。

    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

      

    或者可以通过管理区域查看相关的GitLab版本信息:

     

     

    三、备份恢复流程 

    备份机:需要gitlab备份所在的机子 

    迁移机:gitlab需要迁移的机子,即新服务器所在机子 

    备份恢复流程图:

     

    配置文件说明: 

    /etc/gitlab/gitlab.rb 配置文件须备份 

    /var/opt/gitlab/nginx/conf nginx配置文件 

    /etc/postfix/main.cfpostfix 邮件配置备份

    3.1 备份机备份文件

    备份时需要保持gitlab处于正常运行状态,在备份机直接执行以下命令:

    gitlab-rake gitlab:backup:create

      

    备份机会默认在/var/opt/gitlab/backups目录下创建一个名称类似为1573460229_2019_11_11_9.3.0_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1573460229_2019_11_1是备份创建的日期。文件如图所示:

    也提供了以下几种方式进行相关备份工作的配置:

    3.1.1自动备份时间配置

    在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:

    m h dom mon dow user command

    其中:

    m:表示分钟,可以是从0到59之间的任何整数。

    h:表示小时,可以是从0到23之间的任何整数。

    dom:表示日期,可以是从1到31之间的任何整数。

    mon:表示月份,可以是从1到12之间的任何整数。

    dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    user : 表示执行的用户。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。

    实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务

    方法1:在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

    #输入命令crontab -e
    sudo crontab -e  
    #输入相应的任务
    0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  

    方法2:直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务

    #编辑 /etc/crontab
    vi /etc/crontab 
    然后再编辑框内输入相应的任务
    # edited by ouyang 2017-8-11 添加定时任务,每天凌晨两点,执行gitlab备份
    0  2    * * *   root    /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  

    方法3:通过编写sh脚本执行

    或者直接定时执行一个脚本 auto_backup.sh ,脚本内容为

    /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

    然后再 /etc/crontab中,添加相关任务定时执行 auto_backup.sh 脚本文件  

    sudo chmod +x auto_backup.sh
    sudo vim auto_backup.sh

    /etc/crontab 中添加执行脚本的定时任务,代码如下:

    #也可以按照如下所示的方法,定时执行 auto_backup.sh脚本,脚本内容就填写: /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 

    0 2    * * *   root    /data/gitlabData/backups/auto_backup.sh -D 1 

    编写完 /etc/crontab 文件之后,需要重新启动cron服务

    #重新加载cron配置文件
    sudo /usr/sbin/service cron reload
    #重启cron服务
    sudo /usr/sbin/service cron restart

    3.1.2修改默认备份路径 

     打开备份机gitlab/etc/gitlab/目录下的gitlab.rb文件,找到以下配置信息,即可修改文件备份路径: 

    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" 

    修改完之后,执行以下命令,重新配置下gitlab

    gitlab-ctl reconfigure 或者 gitlab-ctl  restart

    比如:修改了备份路径:

     

    重新执行备份语句gitlab-rake gitlab:backup:create,生成文件如下:

     

    可以到/var/opt/gitlab/backups找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。

    3.1.3修改备份保留时间

    每天执行备份,肯定有目录被爆满的风险,gitlab-ctl自身集成的有自动删除配置。同样打开/etc/gitlab/gitlab.rb配置文件,可以找到如下配置 

    gitlab_rails['backup_keep_time'] = 604800 

    这里是设置备份保留7天(7*3600*24=604800),秒为单位,如果想增大或减小,可以直接在该处配置,并通过gitlab-ctl reconfigure 或者 gitlab-ctl  restart 重启服务生效。 

    3.2 发送或者拷贝备份文件至迁移机

    3.2.1发送备份文件 

    在备份机上打开/var/opt/gitlab/backups,通过以下命令将备份文件发送到迁移机具体备份路径或者通过ftp上传到具体路径: 

    rsync -avz 1573517815_2019_11_12_9.3.0_gitlab_backup.tar  192.111.25.32:/var/opt/gitlab/backups/ 

    要输入迁移机的密码,等待执行完毕。 

    3.2.2本地拷贝备份文件 

    在迁移机上打开/var/opt/gitlab/backups,通过以下命令将备份文件拷贝到迁移机具体备份路径上: 

    scp root@192.111.35.142:/var/opt/gitlab/backups/1573517815_2019_11_12_9.3.0_gitlab_backup.tar /var/opt/gitlab/backups/

     

    要输入备份机的密码,等待执行完毕。 

    3.3 迁移机恢复备份 

    3.3.1将备份文件权限修改为777 

    第一步,将备份文件权限修改为777,不然可能恢复的时候会出现权限不够,不能解压的问题 

    chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar 

    3.3.2执行命令停止相关数据连接服务 

    执行命令停止相关数据连接服务,防止恢复备份的同时还有数据操作,导致数据不一致: 

    # 停止相关数据连接服务
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq 

    3.3.3执行命令从备份文件中恢复Gitlab

    进入到迁移机/var/opt/gitlab/backups目录执行下面的命令进行恢复: 

    gitlab-rake gitlab:backup:restore BACKUP=1573440757_2019_11_11_9.3.0
    或者
    gitlab-rake gitlab:backup:restore BACKUP=1573440757_2019_11_11_9.3.0_gitlab_backup.tar

    后面再输入两次yes就完成恢复了。

     

     

    3.3.4启动Gitlab

    第四步,启动Gitlab

    sudo gitlab-ctl start

    迁移前-备份机目录:

      

    迁移前-迁移机目录:

     

    迁移后-迁移机目录: 

    除了访问地址不一样,其他目录结构都一样。其他操作就和原来仓库操作一样。

  • 相关阅读:
    Android 自定义RadioButton的样式
    利用ListView批量删除item
    android中checkbox自定义样式
    Android 限定符
    Android Fragment的用法(二)
    Android Fragment的用法(一)
    Android 自定义控件
    Android 外部启动activity,自定义action,action常量大全
    Android之编写测试用例
    Android 定制自己的日志工具
  • 原文地址:https://www.cnblogs.com/shawWey/p/12205115.html