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地址不一样之外,其他的内容完全一样,表示数据迁移恢复成功!