Skip to content

Latest commit

 

History

History
351 lines (268 loc) · 7.11 KB

File metadata and controls

351 lines (268 loc) · 7.11 KB

GoBackup Docker 快速开始指南

本指南将帮助你快速使用 Docker 部署和运行 GoBackup 增量备份系统。

📋 前置要求

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • 至少 2GB 可用磁盘空间

🚀 快速部署

1. 准备构建文件

首先需要准备必要的文件:

# 1. 构建本地二进制文件
chmod +x build.sh
./build.sh

# 2. 下载 etcd tar 文件(如果没有的话)
# 如果项目目录中没有 etcd-v3.5.11-linux-amd64.tar.gz,需要下载:
wget https://github.com/etcd-io/etcd/releases/download/v3.5.11/etcd-v3.5.11-linux-amd64.tar.gz

准备完成后,你应该看到:

  • gobackup - Linux 版本(用于 Docker)
  • gobackup-darwin - macOS 版本(本地测试用)
  • etcd-v3.5.11-linux-amd64.tar.gz - etcd 工具包

2. 准备配置文件

复制示例配置文件并根据需要修改:

# 复制配置文件
cp gobackup_incremental_example.yml gobackup.yml

# 编辑配置文件
vim gobackup.yml

3. 启动服务

# 一键启动
docker-compose up -d

# 查看日志
docker-compose logs -f gobackup

# 查看状态
docker-compose ps

4. 访问 Web 界面

打开浏览器访问:http://localhost:2703

📁 文件结构

gobackup/
├── gobackup                          # Linux 二进制文件(构建生成)
├── gobackup-darwin                   # macOS 二进制文件(可选)
├── etcd-v3.5.11-linux-amd64.tar.gz  # etcd 工具包(Docker 构建需要)
├── gobackup.yml                      # 运行配置文件
├── gobackup_incremental_example.yml  # 示例配置文件
├── Dockerfile                        # Docker 镜像定义
├── docker-compose.yml               # 服务编排配置
├── build.sh                         # 构建脚本
└── .dockerignore                    # Docker 忽略文件

⚙️ 配置说明

基础配置

编辑 gobackup.yml 文件:

# 基础模型配置
models:
  mysql_backup:
    # 数据库配置
    databases:
      mysql:
        type: mysql
        host: localhost
        port: 3306
        database: myapp
        username: backup_user
        password: backup_pass
        
    # 增量备份配置
    incremental:
      enabled: true              # 启用增量备份
      strategy: "binlog"         # 增量策略:time/binlog/oplog
      base_backup_days: 7        # 全量备份间隔(天)
      max_incrementals: 20       # 最大增量备份数量
      retention_days: 30         # 备份保留天数
      
    # 存储配置
    storages:
      local:
        type: local
        path: /var/lib/gobackup/backups

# Web 界面配置
web:
  host: "0.0.0.0"
  port: 2703

高级配置

# 支持多个备份模型
models:
  # MySQL 增量备份
  mysql_app:
    databases:
      mysql:
        type: mysql
        host: mysql_host
        database: app_db
        username: backup_user
        password: backup_pass
    incremental:
      enabled: true
      strategy: "binlog"
      base_backup_days: 7
      
  # MongoDB 增量备份
  mongodb_logs:
    databases:
      mongodb:
        type: mongodb
        uri: "mongodb://mongo_user:mongo_pass@mongo_host:27017/logs_db"
    incremental:
      enabled: true
      strategy: "oplog"
      base_backup_days: 3
      
  # PostgreSQL 定期全量备份
  postgres_data:
    databases:
      postgresql:
        type: postgresql
        host: postgres_host
        database: data_db
        username: pg_user
        password: pg_pass
    # 不启用增量备份,只做定期全量备份
    schedule:
      cron: "0 2 * * *"  # 每天凌晨2点

🐳 Docker 命令参考

基础操作

# 构建镜像
docker-compose build

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

# 查看服务状态
docker-compose ps

维护操作

# 进入容器
docker-compose exec gobackup bash

# 查看配置
docker-compose exec gobackup cat /etc/gobackup/gobackup.yml

# 手动执行备份
docker-compose exec gobackup gobackup run

# 查看备份状态
docker-compose exec gobackup gobackup status

# 清理备份文件
docker-compose exec gobackup gobackup cleanup

数据管理

# 备份数据卷
docker run --rm -v gobackup_gobackup_data:/data -v $(pwd):/backup ubuntu tar czf /backup/gobackup_data_backup.tar.gz -C /data .

# 恢复数据卷
docker run --rm -v gobackup_gobackup_data:/data -v $(pwd):/backup ubuntu tar xzf /backup/gobackup_data_backup.tar.gz -C /data

# 查看数据卷
docker volume ls | grep gobackup
docker volume inspect gobackup_gobackup_data

🔧 故障排除

常见问题

  1. 构建失败

    # 检查 Go 环境
    go version
    
    # 清理并重新构建
    rm -f gobackup gobackup-darwin
    ./build.sh
  2. 容器启动失败

    # 查看详细日志
    docker-compose logs gobackup
    
    # 检查配置文件
    docker-compose config
  3. Web 界面无法访问

    # 检查端口映射
    docker-compose ps
    
    # 检查防火墙设置
    curl http://localhost:2703/status
  4. 备份失败

    # 查看备份日志
    docker-compose exec gobackup tail -f /var/log/gobackup/gobackup.log
    
    # 手动测试连接
    docker-compose exec gobackup mysql -h mysql_host -u backup_user -p

性能调优

# docker-compose.yml 中调整资源限制
services:
  gobackup:
    deploy:
      resources:
        limits:
          memory: 2G      # 增加内存限制
          cpus: '1.0'     # 增加 CPU 限制
        reservations:
          memory: 1G
          cpus: '0.5'

日志管理

# 实时查看日志
docker-compose logs -f --tail=100 gobackup

# 导出日志
docker-compose logs gobackup > gobackup.log

# 清理日志
docker-compose down
docker system prune -f
docker-compose up -d

📊 监控和告警

健康检查

容器自带健康检查,可以通过以下方式查看:

# 查看健康状态
docker-compose ps

# 健康检查详情
docker inspect gobackup_gobackup_1 | grep -A 10 Health

集成监控

可以将 GoBackup 集成到现有监控系统:

# 添加监控标签
services:
  gobackup:
    labels:
      - "prometheus.io/scrape=true"
      - "prometheus.io/port=2703"
      - "prometheus.io/path=/metrics"

🔒 安全考虑

  1. 敏感信息管理

    # 使用环境变量存储密码
    export MYSQL_PASSWORD="your_secure_password"
    
    # 或使用 Docker secrets
    echo "your_secure_password" | docker secret create mysql_password -
  2. 网络安全

    # 限制网络访问
    networks:
      gobackup_network:
        driver: bridge
        internal: true  # 仅内部网络
  3. 文件权限

    # 设置配置文件权限
    chmod 600 gobackup.yml

📚 更多信息


如有问题,请查看日志文件或提交 Issue。