本指南将帮助你快速使用 Docker 部署和运行 GoBackup 增量备份系统。
- Docker Engine 20.10+
- Docker Compose 2.0+
- 至少 2GB 可用磁盘空间
首先需要准备必要的文件:
# 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 工具包
复制示例配置文件并根据需要修改:
# 复制配置文件
cp gobackup_incremental_example.yml gobackup.yml
# 编辑配置文件
vim gobackup.yml# 一键启动
docker-compose up -d
# 查看日志
docker-compose logs -f gobackup
# 查看状态
docker-compose ps打开浏览器访问: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-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-
构建失败
# 检查 Go 环境 go version # 清理并重新构建 rm -f gobackup gobackup-darwin ./build.sh
-
容器启动失败
# 查看详细日志 docker-compose logs gobackup # 检查配置文件 docker-compose config
-
Web 界面无法访问
# 检查端口映射 docker-compose ps # 检查防火墙设置 curl http://localhost:2703/status
-
备份失败
# 查看备份日志 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"-
敏感信息管理
# 使用环境变量存储密码 export MYSQL_PASSWORD="your_secure_password" # 或使用 Docker secrets echo "your_secure_password" | docker secret create mysql_password -
-
网络安全
# 限制网络访问 networks: gobackup_network: driver: bridge internal: true # 仅内部网络
-
文件权限
# 设置配置文件权限 chmod 600 gobackup.yml
如有问题,请查看日志文件或提交 Issue。