`

Gitlab如何进行备份恢复与迁移?

    博客分类:
  • SVN
 
阅读更多

1、Gitlab 创建备份

1.1 创建备份文件

首先我们得把老服务器上的Gitlab整体备份,使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份。

gitlab-rake gitlab:backup:create
  • 1

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1502357536_2017_08_10_9.4.3_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1502357536_2017_08_10_9.4.3是备份创建的日期

  • /etc/gitlab/gitlab.rb 配置文件须备份
  • /var/opt/gitlab/nginx/conf nginx配置文件
  • /etc/postfix/main.cfpostfix 邮件配置备份

这里写图片描述

生成完后,/var/opt/gitlab/backups目录创建一个名称类似为1502357536_2017_08_10_9.4.3_gitlab_backup.tar的压缩包

这里写图片描述

1.1 更改Gitlab备份目录

当然你也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录

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

/var/opt/gitlab/backups修改为你想存放备份的目录即可,例如下面代码将备份路径修改为/mnt/backups

gitlab_rails['backup_path'] = '/mnt/backups'
  • 1

这里写图片描述

修改完成之后使用下面命令重载配置文件即可.

gitlab-ctl reconfigure
  • 1

1.2 Gitlab自动备份

1.2.1 定时自动备份

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

m h dom mon dow user command
  • 1

其中:

  • 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  
  • 1
  • 2
  • 3
  • 4

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

#编辑 /etc/crontab
vi /etc/crontab 
  • 1
  • 2

然后再编辑框内输入相应的任务

# edited by ouyang 2017-8-11 添加定时任务,每天凌晨两点,执行gitlab备份
0  2    * * *   root    /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  
  • 1
  • 2

这里写图片描述

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

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

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

sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh
  • 1
  • 2

这里写图片描述

/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   
  • 1
  • 2
  • 3

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

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

实际运行如下

root@ubuntu4146:~# sudo /usr/sbin/service cron reload
root@ubuntu4146:~# sudo /usr/sbin/service cron restart 
cron stop/waiting
cron start/running, process 17738
  • 1
  • 2
  • 3
  • 4

关于Cron表达式可以参考链接:

关于gitlab备份可以参考链接:

关于如何将gitlab备份文件备份到远程备份服务器,参考链接:

1.2.2 设置备份过期时间

设置只保存最近7天的备份,编辑 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],设置为你想要设置的值,然后保存。

gitlab_rails['backup_keep_time'] = 604800  
  • 1

这里写图片描述

2、 Gitlab迁移

2.1 copy老服务器上面的备份文件到新服务器

2.1.1 确保新Gitlab服务器和老Gitlab服务器版本相同

第一步,新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的9.4.3版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为9.4.3再进行备份.

这里写图片描述

可以参考之前的博客: 
git学习——>在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面

2.1.2 copy老服务器上面的备份文件到新服务器

第二步,如果你没修改过默认备份目录的话,需要将老服务器上的备份文件目录(/var/opt/gitlab/backups目录)下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups目录。

使用scp命令从远程服务器copy文件或者目录到本地

scp 用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2
  • 1

[用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

  • -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

  • -C 使能压缩选项 .

  • -P 选择端口 . 注意 -p 已经被 rcp 使用 .

  • -4 强行使用 IPV4 地址 .

  • -6 强行使用 IPV6 地址 .

例如我使用如下命令,从远程服务器copy刚才的备份文件到了新服务器的/var/opt/gitlab/backups/ 目录下

scp root@172.28.17.155:/var/opt/gitlab/backups/1502357536_2017_08_10_9.4.3_gitlab_backup.tar /var/opt/gitlab/backups/
  • 1

copy完后,查看copy的文件如下

这里写图片描述

2.1.3 从备份文件中恢复gitlab

1、将备份文件权限修改为777

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

chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar 
  • 1

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

第二步,执行命令停止相关数据连接服务

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

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

第三步,执行命令从备份文件中恢复Gitlab

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

例如我们的备份文件的编号是1502357536_2017_08_10_9.4.3,因此执行下面的命令即可恢复gitlab

gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
  • 1

敲完命令后,出现第一个交互页面,

root@ubuntu4146:/var/opt/gitlab/backups# gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
Unpacking backup ... done
Before restoring the database we recommend removing all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输入“yes”继续。 
这里写图片描述

恢复过程中。。。。。 
这里写图片描述

出现第二个交互页面,

Put GitLab hooks in repositories dirs [DONE]
done
Restoring uploads ... 
done
Restoring builds ... 
done
Restoring artifacts ... 
done
Restoring pages ... 
done
Restoring lfs objects ... 
done
This will rebuild an authorized_keys file.
You will lose any data stored in authorized_keys file.
Do you want to continue (yes/no)? 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

这里写图片描述

输入“yes”继续。

这里写图片描述

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

第四步,启动Gitlab

sudo gitlab-ctl start
  • 1

这里写图片描述

3、打开迁移后的Gitlab,进行对比

老Gitlab服务器截图

这里写图片描述

新Gitlab服务器截图

这里写图片描述

对比,可以发现,除了两台服务器的ip地址不一样之外,其他的内容完全一模一样,迁移成功!

分享到:
评论

相关推荐

    Gitlab备份恢复与迁移.doc

    Gitlab备份恢复与迁移 Gitlab备份恢复与迁移是指将Gitlab服务器上的数据备份到远程服务器,并在需要时恢复到新的服务器上。以下是Gitlab备份恢复与迁移的详细说明: 一、Gitlab备份 Gitlab备份是将Gitlab服务器上...

    gitlab备份与恢复_gitlab备份与恢复_

    在使用 GitLab 的过程中,为了防止数据丢失或进行迁移,定期备份和恢复是非常重要的环节。本文将详细介绍如何在Linux环境中对GitLab进行备份与恢复操作。 ### 一、备份GitLab 1. **安装依赖**: 在进行GitLab备份前...

    Gitlab备份和恢复操作记录(个人精华版)

    Gitlab是广泛使用的代码版本...总之,了解和掌握Gitlab的备份与恢复操作对于任何依赖Gitlab进行开发和协作的团队来说都是至关重要的。通过遵循上述步骤,您可以有效地保护和恢复您的Gitlab实例,确保业务的正常运行。

    centos7.5安装gitlab和gitlab备份迁移恢复.docx

    GitLab 安装、备份、迁移和恢复指南 在 CentOS 7.5 环境中安装 GitLab 需要遵循以下步骤: 首先,需要安装相关依赖项,包括 policycoreutils、openssh-server、openssh-clients 和 postfix。使用以下命令安装这些...

    Gitlab备份、迁移和恢复.pdf

    **GitLab备份** 1. **备份前的条件**:备份GitLab服务器之前,需要保证GitLab实例处于正常运行状态。这是因为备份过程需要访问当前的数据库和仓库数据,以确保备份的完整性。 2. **执行备份指令**:通过在GitLab...

    Gitlab备份及迁移恢复

    ### GitLab备份及迁移恢复详解 #### 一、引言 在现代软件开发流程中,GitLab作为一款非常流行的源代码管理工具,被广泛应用于版本控制、持续集成/持续部署(CI/CD)等场景。然而,随着项目的不断扩展与演进,数据的...

    gitlab备份及恢复.txt

    gitlab全备及恢复,迁移

    gitlab服务器宕机,如何恢复.doc

    总之,恢复GitLab服务器宕机的关键在于备份和迁移数据,同时保持新旧环境的一致性。在整个过程中,细心操作,注意可能出现的问题,并及时解决,是确保代码仓库顺利恢复的关键。如果你在执行这些步骤时遇到任何问题,...

    Python库 | gitlab_backup-0.3.1-py3-none-any.whl

    备份GitLab项目通常包括备份项目仓库、用户数据、配置文件、以及其他相关元数据,确保在发生故障或需要迁移时能够恢复所有信息。 Python库的开发语言标签提示我们,这个`gitlab_backup`库是用Python编写的,这意味...

    服务器迁移心得

    这里,我们主要探讨的是一个与"服务器迁移"相关的主题,结合“源码”和“工具”的标签,我们可以推测这可能涉及到在迁移过程中对代码的处理和使用辅助工具的情况。尽管没有直接的描述,但我们可以从一般实践出发,...

    gitlabber:Gitlabber-从gitlab克隆或拉出整个组树

    2. **备份与恢复**:通过克隆,Gitlabber提供了一种有效的方式备份GitLab项目,以防数据丢失或系统故障。同时,克隆的项目也可以在必要时进行恢复。 3. **自动化流程**:Gitlabber支持脚本化操作,可以集成到持续...

    svn客户端与服务端

    9. **备份与迁移**: 使用VisualSVN Server,可以定期对仓库进行备份,以防止数据丢失。如果需要迁移到其他服务器,也可以导出仓库数据,然后在新服务器上导入。 10. **持续集成与自动化**: 高级使用场景中,...

    华为HCIP-Cloud Computing Developer【云计算开发】培训教材与实验指导手册.zip

    在数据存储方面,云数据库服务如华为云的RDS、OBS等会是重要的学习内容,包括关系型数据库和非关系型数据库的选型、备份恢复策略和数据迁移方法。 安全性是云计算不可忽视的一环,课程会涵盖云安全策略、访问控制、...

    MYSQL开发工具整合

    2. Shell脚本:结合MySQL命令行工具,可以编写Shell脚本来批量处理数据库任务,如数据备份、恢复、迁移等。 四、性能监控与优化 1. MySQL Performance Schema:MySQL内置的监控工具,提供详细的性能数据,帮助分析...

    svn server 3.0企业版

    6. 数据备份与恢复:企业版通常会提供更强大的备份和恢复机制,确保即使在服务器故障时也能迅速恢复数据,降低业务中断风险。 7. 热备与负载均衡:对于大型企业,SVN Server 3.0 可能支持热备服务器和负载均衡,以...

    藏经阁-高可用实践:从淘宝到上云的差异.pdf

    2. 快速备份与恢复:利用LVM快照、pg_dump等工具进行数据库备份,结合Azure Disk snapshot和阿里云的对象存储服务(OSS)进行数据保护,通过webhook触发备份流程。 3. 容灾恢复:建立多地域、多可用区的数据中心,...

    高级运维知识.zip

    5. **灾难恢复与备份**:设计和实施备份策略,进行定期备份验证,熟悉故障切换和恢复流程,保障业务连续性。 二、Java应用运维 对于Java应用运维,以下是一些核心知识点: 1. **JVM调优**:理解JVM内存模型,掌握...

    googlecode:从我的谷歌代码回来

    2. **迁移至其他平台**:谷歌推荐将项目迁移到GitHub、GitLab或其他代码托管平台。迁移过程通常涉及克隆原始仓库,创建新仓库,然后将旧仓库的提交历史推送到新仓库。对于Python项目,这个过程可能包括设置新的远程...

    重新定义云数据保护.pptx

    1. **数据误删**:如GitLab 300G数据的误删,强调了备份和快速恢复的重要性。 2. **黑客攻击**:黑客可能删除重要数据,这就需要强大的安全防护和灾备措施。 3. **系统故障**:如某互联网公司的游戏数据库主库从库...

Global site tag (gtag.js) - Google Analytics