Files
java-template/client-deployment/DATABASE_BACKUP_RESTORE_GUIDE.md
2025-08-14 08:11:03 +08:00

5.4 KiB
Raw Permalink Blame History

LJWX 数据库备份和恢复完整指南

📋 概述

LJWX系统提供了完整的MySQL数据库备份和恢复解决方案,支持:

  • SQL逻辑备份:用于数据恢复和跨平台迁移
  • 数据卷备份:用于完整的数据库文件备份
  • 自动化备份:支持定时任务和策略管理
  • 一键恢复:简化的恢复操作流程

🎯 备份策略

1. 双重备份保护

📦 SQL逻辑备份(推荐)
├── 优点:跨平台兼容、数据完整性高、恢复灵活
├── 缺点:备份时间较长、需要MySQL服务运行
└── 适用:日常备份、数据迁移、版本升级

🗃️ 数据卷备份
├── 优点:备份速度快、完整性好、支持冷备份
├── 缺点:平台相关、恢复需要停机
└── 适用:完整迁移、灾难恢复、系统重建

2. 备份频率建议

  • 每日SQL备份:保留7天,用于日常数据恢复
  • 每周完整备份:保留30天,用于长期存档
  • 重要操作前:手动备份,确保数据安全

🛠️ 备份工具

1. 交互式备份工具

# 启动交互式备份恢复工具
./mysql-backup-restore.sh

# 功能菜单:
# 1. 📦 创建完整备份(推荐)
# 2. 💾 仅SQL逻辑备份
# 3. 🗃️ 仅数据卷备份
# 4. 🔄 恢复数据库
# 5. 📊 查看备份列表
# 6. 🔍 验证备份完整性
# 7. 🧹 清理旧备份

2. 自动化备份脚本

# 每日备份(仅SQL)
./auto-backup.sh daily

# 每周备份(SQL + 数据卷)
./auto-backup.sh weekly

# 手动完整备份
./auto-backup.sh manual

# 查看帮助
./auto-backup.sh --help

3. 演示脚本

# 运行备份功能演示
./demo-backup.sh

📦 备份实现原理

1. SQL逻辑备份

# 备份命令
docker exec ljwx-mysql mysqldump \
    -u root -p123456 \
    --single-transaction \      # 事务一致性
    --routines \               # 存储过程
    --triggers \               # 触发器
    --events \                 # 事件
    --hex-blob \               # 二进制数据
    --add-drop-database \      # 添加DROP语句
    --databases lj-06 > backup.sql

# 压缩备份
gzip backup.sql

2. 数据卷备份

# 使用临时容器备份数据卷
docker run --rm \
    -v client-deployment_mysql_data:/source:ro \
    -v $(pwd)/backups/volume:/backup \
    alpine:latest \
    tar -czf /backup/mysql_volume_$(date +%Y%m%d_%H%M%S).tar.gz -C /source .

🔄 恢复操作

1. SQL备份恢复

# 解压并恢复
zcat backup.sql.gz | docker exec -i ljwx-mysql mysql -u root -p123456

# 验证恢复
docker exec ljwx-mysql mysql -u root -p123456 -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='lj-06';"

2. 数据卷恢复

# 停止MySQL容器
docker stop ljwx-mysql

# 清空现有数据卷
docker run --rm -v client-deployment_mysql_data:/target alpine:latest rm -rf /target/*

# 恢复数据
docker run --rm \
    -v $(pwd)/backups/volume:/backup \
    -v client-deployment_mysql_data:/target \
    alpine:latest \
    tar -xzf /backup/backup_file.tar.gz -C /target

# 重启MySQL
docker-compose up -d mysql

📁 备份目录结构

./backups/
├── sql/                    # SQL逻辑备份
│   ├── ljwx_daily_20241220_020000.sql.gz
│   ├── ljwx_weekly_20241220_030000.sql.gz
│   └── ljwx_manual_20241220_143000.sql.gz
├── volume/                 # 数据卷备份
│   ├── mysql_weekly_20241220_030000.tar.gz
│   └── mysql_manual_20241220_143000.tar.gz
├── config/                 # 配置文件备份
│   └── config_20241220_030000.tar.gz
├── logs/                   # 备份日志
├── backup_log.csv          # 备份记录
├── backup_history.csv      # 历史记录
└── auto_backup.log         # 自动备份日志

⏰ 定时任务设置

1. 添加Crontab任务

# 编辑定时任务
crontab -e

# 添加以下内容
# 每日凌晨2点执行SQL备份
0 2 * * * /path/to/client-deployment/auto-backup.sh daily

# 每周日凌晨3点执行完整备份
0 3 * * 0 /path/to/client-deployment/auto-backup.sh weekly

🎯 快速开始

1. 立即创建备份

# 完整备份(推荐)
./auto-backup.sh manual

# 仅SQL备份
./auto-backup.sh daily

2. 查看备份状态

# 查看备份文件
ls -la backups/

# 查看备份日志
tail backups/auto_backup.log

3. 恢复数据库

# 启动恢复工具
./mysql-backup-restore.sh

# 选择菜单项4进行恢复

🔧 故障排除

常见问题

# 问题1: MySQL容器未运行
docker ps | grep ljwx-mysql
docker-compose up -d mysql

# 问题2: 权限问题
sudo chown -R $(whoami):$(whoami) backups/

# 问题3: 磁盘空间不足
df -h
du -sh backups/

📚 最佳实践

  • ✅ 定期测试恢复流程
  • ✅ 监控备份任务执行状态
  • ✅ 定期清理过期备份
  • ✅ 备份前验证数据库状态
  • ✅ 多地点存储重要备份

🎯 总结

LJWX数据库备份和恢复系统提供了完整的数据保护方案:

  1. 多种备份方式:SQL逻辑备份 + 数据卷备份
  2. 自动化管理:定时任务 + 策略清理
  3. 简化操作:交互式工具 + 一键恢复
  4. 完整监控:日志记录 + 状态报告
  5. 灾难恢复:快速恢复 + 数据验证

通过合理使用这些工具,可以确保LJWX系统数据的安全性和可靠性。