Skip to content

Latest commit

 

History

History
447 lines (334 loc) · 10 KB

File metadata and controls

447 lines (334 loc) · 10 KB

GoBackup 增量备份功能使用教程

📋 目录

  1. 功能概述
  2. 安装和编译
  3. 配置说明
  4. 使用指南
  5. Web界面管理
  6. API接口文档
  7. 故障排除
  8. 最佳实践

🚀 功能概述

增量备份功能允许您在全量备份的基础上,只备份发生变化的文件和数据,从而显著减少备份时间和存储空间占用。

主要特性

  • 智能增量策略: 支持基于时间、大小和数据库日志的增量备份
  • 自动全量备份: 根据配置的条件自动触发全量备份
  • 备份链管理: 自动维护完整的备份链关系
  • 增量恢复: 支持从增量备份链恢复到指定时间点
  • Web界面管理: 直观的Web界面查看和管理增量备份
  • 多数据库支持: 支持MySQL、PostgreSQL的增量备份
  • 文件去重: 可选的文件去重功能减少存储占用
  • 自动清理: 基于保留策略自动清理过期备份

支持的增量策略

策略类型 适用场景 原理
time 文件备份、通用数据库 基于文件修改时间检测变化
size 大文件场景 基于文件大小变化检测
binlog MySQL数据库 基于MySQL binlog进行增量备份

🔧 安装和编译

前置要求

  • Go 1.19 或更高版本
  • 支持的操作系统: Linux, macOS, Windows
  • 数据库客户端工具(如需要数据库增量备份)

编译安装

# 克隆代码库
git clone https://github.com/your-repo/gobackup.git
cd gobackup

# 编译
make build

# 或者直接使用 go build
go build -o gobackup main.go

# 安装到系统路径
sudo cp gobackup /usr/local/bin/

配置文件位置

GoBackup 会按以下顺序查找配置文件:

  1. ./gobackup.yml (当前目录)
  2. ~/.gobackup/gobackup.yml (用户主目录)
  3. /etc/gobackup/gobackup.yml (系统目录)

⚙️ 配置说明

基础增量配置

在您的 gobackup.yml 配置文件中,为每个模型添加 incremental 配置节:

models:
  my_backup:
    description: "我的增量备份"
    
    # 增量备份配置
    incremental:
      enabled: true                    # 启用增量备份
      strategy: "time"                 # 增量策略
      base_backup_days: 7              # 全量备份间隔天数
      max_incrementals: 6              # 最大增量备份数
      retention_days: 30               # 备份保留天数
      compression_level: 6             # 压缩级别 (1-9)
      enable_deduplication: true       # 启用去重
    
    # 其他配置...
    archive:
      includes:
        - /path/to/backup/
    storages:
      local:
        type: local
        path: /backup/destination/

配置参数详解

参数 类型 默认值 说明
enabled boolean false 是否启用增量备份
strategy string "time" 增量策略:time/size/binlog
base_backup_days int 7 多少天执行一次全量备份
max_incrementals int 6 最多几个增量备份后强制全量
retention_days int 30 备份记录保留天数
compression_level int 6 增量备份压缩级别
enable_deduplication boolean false 是否启用文件去重

数据库增量配置示例

MySQL 增量备份

models:
  mysql_incremental:
    incremental:
      enabled: true
      strategy: "binlog"
      base_backup_days: 7
      max_incrementals: 6
      
    databases:
      mysql_main:
        type: mysql
        host: localhost
        database: production
        username: backup_user
        password: your_password

PostgreSQL 增量备份

models:
  postgres_incremental:
    incremental:
      enabled: true
      strategy: "time"
      base_backup_days: 14
      
    databases:
      postgres_main:
        type: postgresql
        host: localhost
        database: production
        username: postgres
        password: your_password

📖 使用指南

启动守护进程

# 启动守护进程(推荐)
gobackup start

# 或者在前台运行
gobackup run

手动执行备份

# 执行所有模型的备份
gobackup perform

# 执行特定模型的备份
gobackup perform -m my_backup_model

# 强制执行全量备份(忽略增量策略)
gobackup perform -m my_backup_model --force-full

查看备份状态

# 通过Web界面查看(推荐)
# 访问 http://localhost:2703

# 或者通过API查看
curl http://localhost:2703/api/incremental/status/my_backup_model

增量恢复

通过Web界面或API进行增量恢复:

# 恢复到指定时间点
curl -X POST http://localhost:2703/api/incremental/restore \
  -H "Content-Type: application/json" \
  -d '{
    "model": "my_backup_model",
    "target_time": "2023-12-01T10:30:00Z",
    "restore_path": "/path/to/restore/"
  }'

🌐 Web界面管理

访问Web界面

  1. 启动GoBackup服务:gobackup start
  2. 打开浏览器访问:http://localhost:2703
  3. 使用配置文件中设置的用户名和密码登录

增量备份管理功能

1. 状态概览页面

  • 增量状态: 显示增量备份是否启用
  • 配置信息: 显示增量备份策略和参数
  • 统计信息: 显示增量备份数量、最后全量备份时间等
  • 下次备份类型: 显示下次备份是全量还是增量

2. 备份历史记录

  • 备份列表: 查看所有备份记录(全量和增量)
  • 备份链: 显示备份之间的依赖关系
  • 大小统计: 显示每个备份的大小和累计大小
  • 状态监控: 显示备份成功/失败状态

3. 恢复功能

  • 时间点恢复: 选择目标时间点进行恢复
  • 恢复路径: 指定恢复文件的目标路径
  • 恢复进度: 实时显示恢复进度

4. 清理工具

  • 手动清理: 手动触发备份清理
  • 清理预览: 查看哪些备份将被清理
  • 清理日志: 查看清理操作的历史记录

🔌 API接口文档

获取增量状态

GET /api/incremental/status/:model

响应示例:

{
  "incremental_enabled": true,
  "incremental_config": {
    "enabled": true,
    "strategy": "time",
    "base_backup_days": 7,
    "max_incrementals": 6,
    "retention_days": 30
  },
  "last_full_backup": {
    "id": "backup_123",
    "timestamp": "2023-12-01T02:00:00Z",
    "size": 1048576
  },
  "incremental_count": 3,
  "should_do_full": false
}

获取备份记录

GET /api/incremental/records/:model?type=incremental&limit=10

获取备份链

GET /api/incremental/chain/:model?target_time=2023-12-01T10:30:00Z

执行恢复

POST /api/incremental/restore
Content-Type: application/json

{
  "model": "my_backup_model",
  "target_time": "2023-12-01T10:30:00Z",
  "restore_path": "/path/to/restore/"
}

清理备份

POST /api/incremental/cleanup/:model

🔧 故障排除

常见问题

1. 增量备份没有触发

检查事项

  • 确认 incremental.enabled 设置为 true
  • 检查是否满足增量备份条件(存在全量备份)
  • 查看日志确认是否有错误信息
# 查看日志
tail -f ~/.gobackup/gobackup.log

# 检查配置
gobackup perform -m your_model --dry-run

2. 数据库增量备份失败

MySQL binlog问题

# 检查binlog是否启用
mysql -e "SHOW VARIABLES LIKE 'log_bin';"

# 检查binlog文件
mysql -e "SHOW BINARY LOGS;"

PostgreSQL WAL问题

# 检查WAL设置
psql -c "SHOW wal_level;"
psql -c "SHOW archive_mode;"

3. 恢复失败

  • 检查备份文件是否完整
  • 确认恢复路径权限
  • 验证备份链的完整性

4. 存储空间不足

  • 调整保留策略:减少 retention_days
  • 启用去重:enable_deduplication: true
  • 增加压缩级别:compression_level: 9

日志分析

# 查看增量备份相关日志
grep "Incremental" ~/.gobackup/gobackup.log

# 查看备份状态变化
grep "BackupState" ~/.gobackup/gobackup.log

# 查看错误信息
grep "ERROR\|Failed" ~/.gobackup/gobackup.log

💡 最佳实践

1. 增量策略选择

  • 文件备份: 推荐使用 time 策略
  • MySQL: 推荐使用 binlog 策略
  • PostgreSQL: 推荐使用 time 策略
  • 大文件场景: 可考虑 size 策略

2. 参数调优

# 推荐配置 - 平衡性能和存储
incremental:
  base_backup_days: 7      # 一周一次全量
  max_incrementals: 6      # 最多6个增量
  retention_days: 30       # 保留一个月
  compression_level: 6     # 中等压缩
  enable_deduplication: true

3. 监控和告警

# 配置邮件通知
notifiers:
  email:
    type: mail
    host: smtp.gmail.com
    username: backup@company.com
    password: $EMAIL_PASSWORD
    to: admin@company.com
    on_success: true
    on_failure: true

4. 安全考虑

  • 使用加密存储备份文件
  • 定期测试恢复流程
  • 将备份存储在不同的物理位置
  • 使用强密码保护Web界面
# 加密配置示例
encrypt_with:
  type: openssl
  password: "your-strong-encryption-password"
  
# Web安全配置
web:
  username: admin
  password: "your-strong-web-password"

5. 性能优化

  • 在系统低负载时段执行备份
  • 使用SSD存储临时文件
  • 调整压缩级别平衡性能和存储
  • 启用去重减少存储占用
# 性能优化配置
schedule:
  cron: "0 2 * * *"  # 凌晨2点执行
  
incremental:
  compression_level: 4     # 较低压缩,更快速度
  enable_deduplication: true

📚 更多资源

🤝 贡献

欢迎提交问题报告和功能请求到 GitHub Issues。


注意: 增量备份功能目前为实验性功能,建议在生产环境使用前进行充分测试。