本文是一个系列,本篇为系列文章的第三篇:基于 AlmaLinux 9 备份 GitLab 社区版实战
第一篇:基于 AlmaLinux 9 安装 GitLab 社区版实战
第二篇:基于 AlmaLinux 9 配置 GitLab 社区版实战
本文仍基于在腾讯云购买的轻量机 cn-tx-bj7-a9 上安装,AlmaLinux 9.4 版本,配置为 4C4G60G
上一篇文章基于 AlmaLinux 9 配置 GitLab 社区版实战中介绍了公司内部使用的 GitLab 在安装后都进行了哪些配置,主要包含 SSL 证书、邮件发送和 LDAP 登录这三大部分
这篇文章按计划来介绍关于备份的相关内容。关于备份的重要性,不言而喻,毕竟内部使用的 GitLab 项目和用户均为百数量级
参照官方文档:https://docs.gitlab.com/ee/administration/backup_restore/backup_gitlab.html
生成备份其实只要执行 gitlab-backup 命令就可以了
这个 gitlab-backup 工具实际上是在 /opt/gitlab/bin 路径下的
[root@cn-tx-bj7-a9 ~]# which gitlab-backup
/usr/bin/gitlab-backup
[root@cn-tx-bj7-a9 ~]# ll /usr/bin/ | grep gitlab
lrwxrwxrwx 1 root root 29 Nov 2 00:39 gitlab-backup -> /opt/gitlab/bin/gitlab-backup
lrwxrwxrwx 1 root root 33 Nov 2 00:39 gitlab-backup-cli -> /opt/gitlab/bin/gitlab-backup-cli
lrwxrwxrwx 1 root root 26 Nov 2 00:39 gitlab-ctl -> /opt/gitlab/bin/gitlab-ctl
lrwxrwxrwx 1 root root 27 Nov 2 00:39 gitlab-psql -> /opt/gitlab/bin/gitlab-psql
lrwxrwxrwx 1 root root 28 Nov 2 00:39 gitlab-rails -> /opt/gitlab/bin/gitlab-rails
lrwxrwxrwx 1 root root 27 Nov 2 00:39 gitlab-rake -> /opt/gitlab/bin/gitlab-rake
lrwxrwxrwx 1 root root 32 Nov 2 00:39 gitlab-redis-cli -> /opt/gitlab/bin/gitlab-redis-cli
[root@cn-tx-bj7-a9 ~]# ll /opt/gitlab/bin/
total 72
-rwxr-xr-x 1 root root 3679 Oct 23 04:15 gitlab-backup
-rwxr-xr-x 1 root root 3679 Oct 23 04:15 'gitlab-backup;67250373'
-rwxr-xr-x 1 root root 703 Oct 23 04:15 gitlab-backup-cli
-rwxr-xr-x 1 root root 703 Oct 23 04:15 'gitlab-backup-cli;67250373'
-rwxr-xr-x 1 root root 1418 Oct 23 04:15 gitlab-ctl
-rwxr-xr-x 1 root root 1418 Oct 23 04:15 'gitlab-ctl;67250373'
-rwxr-xr-x 1 root root 261 Oct 23 04:15 gitlab-healthcheck
-rwxr-xr-x 1 root root 261 Oct 23 04:15 'gitlab-healthcheck;67250373'
-rwxr-xr-x 1 root root 702 Oct 23 04:15 gitlab-psql
-rwxr-xr-x 1 root root 702 Oct 23 04:15 'gitlab-psql;67250373'
-rwxr-xr-x 1 root root 1450 Oct 23 04:15 gitlab-rails
-rwxr-xr-x 1 root root 1450 Oct 23 04:15 'gitlab-rails;67250373'
-rwxr-xr-x 1 root root 1449 Oct 23 04:15 gitlab-rake
-rwxr-xr-x 1 root root 1449 Oct 23 04:15 'gitlab-rake;67250373'
-rwxr-xr-x 1 root root 1311 Oct 23 04:15 gitlab-redis-cli
-rwxr-xr-x 1 root root 1311 Oct 23 04:15 'gitlab-redis-cli;67250373'
-rwxr-xr-x 1 root root 1449 Oct 23 04:15 gitlab-ruby
-rwxr-xr-x 1 root root 1449 Oct 23 04:15 'gitlab-ruby;67250373'
备份的文件存储于默认备份目录
# gitlab_backup_cli['dir'] = '/var/opt/gitlab/backups'
默认的备份目录是在 /var 下,如果有多块硬盘可以按需修改为自定义路径
这里直接贴一下内部的配置文件关于备份的配置项的修改示例,暂时就不在自己的环境中演示了
# gitlab_rails['manage_backup_path'] = true
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/home/gitlab/backups"
gitlab_rails['backup_keep_time'] = 2592000
可以看出是放到了 /home 下且保留 7 天
参考官方文档:https://docs.gitlab.com/ee/administration/backup_restore/backup_gitlab.html#configuring-cron-to-make-daily-backups
在 crontab 里调用 gitlab-backup create 就可以了
众所周知,备份还是得异地备份。逻辑上无非是生成备份文件后,rsync 到另一台服务器上,可以人工写 shell 实现
这里是一直使用了一个开源工具:https://github.com/sund/auto-gitlab-backup
虽然已经很久不维护了,但是实测至少针对 GitLab 11.4.X 版本是正常可用的
这里还是直接贴一下生成环境实际的修改示例,主要是配置了远端备份服务器的访问信息和备份路径等
remoteUser="root"
remoteServer="<rm>"
sshKeyPath=""
remoteDest="/data/gitlab-bak"
backupConfigs="0"
quietRake=0
b2blaze=0
b2Bucketname=""
b2keepDays="5"
remoteConfDest=""
remotePort=22
gitHome="/var/opt/gitlab"
RVM_envPath=""
remoteModule=""
rsync_password_file=""
gitRakeBackups="/home/gitlab/backups"
gitRakeCIBackups="/home/gitlab/ci-backups"
localConfig="/etc/gitlab"
localsshkeys="/var/opt/gitlab/.ssh"
checkQuota="0"
参考命令如下
5 5 * * * /usr/local/sbin/auto-gitlab-backup/auto-gitlab-backup.sh
通过此工具备份就不用上面 0x03. 中的那条官方备份的 cron 命令了
这样每天 5 时 5 分就会执行 auto-gitlab-backup.sh 脚本,先在本机生成备份档,然后 rsync 到远端备份服务器上
部署本工具之后,需要次日在远端备份服务器上看一下指定路径下有无备份档,如果存在的话就说明整个流程都跑通了
这篇文章基本上算是把内部实际使用备份方法介绍完毕了,下一篇文章计划介绍生产环境跨 6 个大版本的真实升级经历
也欢迎购买轻量机进行尝试,双十一拼团有优惠:https://cloud.tencent.com/act/pro/double11-2024?fromSource=gwzcw.8891816.8891816.8891816
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。