为什么要做备份?
- 物理原因:你没办法确定你的物理机什么时间坏,无法预测需要迁移的时间点。
- 软件原因:你没办法保证软件什么时候抽筋就不工作了。
- 人为原因:你没办法保证服务器百分百安全,也没办法保证内部人员不会rm -rf,然后!!!你也没办法自己会不会手贱yum -y update ps:假装不是我做的~
需要准备什么?
- 先说说服务器配置
- 首先我们需要一个基础配置的 GitLab 服务器,我这里用的是 社区 10.0.0 版本。
- 其次我们需要一个备份数据存储服务器,我这里就只需要磁盘来存储数据,所以开了最小配置的服务器。
- 最后这两台服务器我建议不要放到同一个物理机,避免因物理机老旧损坏导致数据丢失。
具体需要做什么?
- 首先我们要知道 GitLab 的备份命令
$ gitlab-rake gitlab:backup:create
- 其次我们要知道备份后的文件存储在哪里
$ find / -name backups# /var/opt/gitlab/backups 这是默认路径
- 第三我们就需要把备份文件传到备份存储服务器
$ cd /var/opt/gitlab/backups$ scp 1606364719_2020_11_26_10.0.0_gitlab_backup.tar 192.168.3.14:/data/gitlab-backups
- 每次scp都需要输入密码好麻烦,我们来添加免密登录
$ ssh-copy-id root@192.168.3.14
- 这样我们就算完成了一次备份
备份频率?怎么实现自动备份传输?
- 我个人认为每天两次备份即可,因为备份会导致服务暂时无法访问,中午休息时间以及半夜备份最为合适。
- 每次都要执行好多命令好麻烦~我们需要搞一个脚本"back_gitlab.sh"实现备份,这样我们执行一个脚本就可以完成所有步骤了。
echo start backup time `date`rm -rf /data/backups/*gitlab-rake gitlab:backup:createscp /data/backups/* 192.168.3.14:/data/gitlab-backups/echo end backup time `date`
- 我们先给脚本的拥有者运行权限
$ chmod u+x back_gitlab.sh
- 然后用crontab来加一个定时任务
$ crontab -e20 2,12 * * * /data/back_git.sh>>/data/gitBack.log# 每天2:20、12:20执行备份脚本并输出日志到gitBack.log方便日后查看
- 现在执行一个命令就可以了,但是每天两次还有一次得半夜搞好麻烦~搞个定时任务算了。
最后dede两句
- 现在放心多了吧,心里有底了吧。
- 现在可以去执行一下yum -y update了吧。
- 散会!!!