gitlab数据备份、迁移、恢复

1、Gitlab备份数据

Gitlab默认备份的文件如下:

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

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

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

1.1 手动创建备份文件

gitlab-rakegitlab:backup:create

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似1502357536_2020_03_20_12.2.4_ gitlab_ backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1502357536_2020_03_20_12.2.4是备份创建的日期和gitlab版本号

1.2 设置crontab自动备份

在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点自动备份为例,步骤如下:

1、直接sudo vi /etc/crontab 文件,然后添加相应的任务。代码如下:

# 添加定时任务,每天凌晨两点,执行gitlab备份

02* * *   root    /opt/gitlab/bin/gitlab-rake gitlab:backup:createCRON=1

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

#重新加载cron配置文件

sudo/usr/sbin/service cron reload

#重启cron服务

sudo/usr/sbin/service cronrestart

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

#重新加载cron配置文件

sudo/usr/sbin/service cron reload

#重启cron服务

sudo/usr/sbin/service cronrestart

1.3 更改Gitlab备份目录

gitlab默认备份文件目录为/var/opt/gitlab/backups,可以通过/etc/gitlab/gitlab.rb配置文件来修改。例如将备份路径修改为/mnt/backups代码如下:

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

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

gitlab-ctl reconfigure

1.4  设置备份过期时间

编辑 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],修改为要设置的值(单位秒),然后保存。例如保存最近7天的备份代码如下:

gitlab_rails['backup_keep_time']=604800

2、 备份数据迁移

1、确保新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同。

若新服务器gitlab版本低,应先升级新服务器版本至老服务器版本。若老服务器gitlab版本低,则升级老服务器版本至新服务器版本并重新创建备份。

2、拷贝备份文件到新服务器。

默认备份文件在/var/opt/gitlab/backups目录下,使用scp命令从老服务器copy文件将备份文件拷贝到新服务器的备份目录。

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

相关几个参数 :

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

-C 使能压缩选项 .

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

-4 强行使用 IPV4 地址 .

-6 强行使用 IPV6 地址 .

例如从远程服务器copy备份文件到了新服务器的/var/opt/gitlab/backups/ 目录下,代码如下:

scp [email protected]:/var/opt/gitlab/backups/1502357536_2020_03_20_12.2.4_gitlab_backup.tar  /var/ opt/gitlab/backups/

3、备份文件恢复

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

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

chmod 777 1502357536_2020_03_20_12.2.4_gitlab_backup.tar

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

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

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

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号(如:1502357536_2020_03_20_12.2.4)

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

Beforerestoringthedatabasewerecommendremovingallexisting

tablestoavoidfutureupgradeproblems.Beawarethatifyouhave

customtablesintheGitLabdatabasethesetablesandalldatawillbe

removed.

Doyouwanttocontinue(yes/no)?

输入“yes”继续。接着出现第二个交互页面:

Restoring lfs objects ...

done

This will rebuild an authorized_keys file.

You will lose any data storedinauthorized_keys file.

Do you want to continue (yes/no)?

再输入“yes”继续,等待恢复完成。

4、启动Gitlab服务,并执行检查命令

gitlab-ctl start

gitlab-rake gitlab:check   #检查启动是否正常

5、打开迁移后的Gitlab检查

对比发现,除了两台服务器的ip地址不一样之外,其他的内容完全一样,表示数据迁移恢复成功!

你可能感兴趣的:(gitlab数据备份、迁移、恢复)