GitLab Backups 数据备份 配置对象储存 S3(MinIO)

GitLab 数据备份 backup_upload 使用对象储存 S3(MinIO)

文档

  1. GitLab 备份
    1. gitlab

说明

  1. GitLab 使用的版本是 17.9.1
  2. S3 对象储存使用的是 MinIO 2025-02-28T09-55-16Z

配置

  1. 配置前准备

    示例 说明
    bucket_name gitlab-backup-upload Buckets 名称,单独一个
    access_key_id gitlab-access-id-xxx 秘钥ID
    secret_access_key gitlab-secret-key-xxx 秘钥凭证
    endpoint http://minio.example.com:9000 MinIO(S3)API 地址(非网页地址)
  2. 修改配置

    vim /etc/gitlab/gitlab.rb
    

    找到 gitlab_rails[‘backup_upload_remote_directory’] 附近,修改为下列示例

    # 对象储存保存的 bucket_name
    gitlab_rails['backup_upload_remote_directory'] = "gitlab-backup-upload"
    gitlab_rails['backup_upload_connection'] = {
      # MinIO(S3)无需修改
      'provider' => 'AWS',
      # MinIO(S3)无需修改
      'region' => 'eu-west-1',
      # MinIO(S3)凭证ID
      'aws_access_key_id' => 'gitlab-access-id-xxx',
      # MinIO(S3)凭证秘钥
      'aws_secret_access_key' => 'gitlab-secret-key-xxx',
      # MinIO(S3)API 地址(非网页地址)
      # 其中 minio.example.com:9000 就是 URL 拼接的 host
      'endpoint' => 'http://minio.example.com:9000',
      # URL 拼接方式
      # true:host/bucket_name/object,如:http://minio.example.com:9000/gitlab-backup-upload/object
      # false:bucket_name.host/object,如:http://gitlab-backup-upload.minio.example.com:9000/object
      'path_style' => true
    }
    
    # 以下示例为上传到阿里云指定桶的指定文件夹内
    # 阿里云对象储存的区域:上海 oss-cn-shanghai
    # 阿里云对象储存的 bucket_name:bucket-xuxiaowei
    # 阿里云对象储存的 文件夹名字:gitlab-backup-upload
    # 阿里云对象储存上传结果示例:
    # https://bucket-xuxiaowei.oss-cn-shanghai.aliyuncs.com/gitlab-backup-upload/1741419239_2025_03_08_17.8.3-jh_gitlab_backup.tar
    
    # 对象储存保存的 bucket_name 或 文件夹名字
    gitlab_rails['backup_upload_remote_directory'] = "gitlab-backup-upload"
    gitlab_rails['backup_upload_connection'] = {
      # 阿里云 OSS 无需修改
      'provider' => 'AWS',
      # 阿里云 OSS 无需修改
      'region' => 'eu-west-1',
      # 阿里云 OSS 凭证ID
      'aws_access_key_id' => 'aliyun-access-id-xxx',
      # 阿里云 OSS 凭证秘钥
      'aws_secret_access_key' => 'aliyun-secret-key-xxx',
      # 阿里云 OSS API 地址
      'endpoint' => 'https://bucket-xuxiaowei.oss-cn-shanghai.aliyuncs.com',
      # URL 拼接方式
      # true:host/bucket_name/object
      # false:bucket_name.host/object
      'path_style' => true
    }
    
  3. 重新配置

    sudo gitlab-ctl reconfigure
    
  4. 执行备份完成后,查看对象储存的文件夹是否有最新的备份

    sudo gitlab-rake gitlab:backup:create
    

定时备份

Linux 二进制部署定时备份

vim /etc/crontab
# crontab -e
# 每天1点备份
0  1   * * *   root   (gitlab-rake gitlab:backup:create)

Docker 部署部署定时备份

vim /etc/crontab
# crontab -e
0  1   * * *   root   (docker exec -i 容器名称 gitlab-rake gitlab:backup:create)
# 测试时,查询是否执行了备份任务
ps -ef | grep gitlab-rake