5.4 KiB
5.4 KiB
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数据库备份和恢复系统提供了完整的数据保护方案:
- 多种备份方式:SQL逻辑备份 + 数据卷备份
- 自动化管理:定时任务 + 策略清理
- 简化操作:交互式工具 + 一键恢复
- 完整监控:日志记录 + 状态报告
- 灾难恢复:快速恢复 + 数据验证
通过合理使用这些工具,可以确保LJWX系统数据的安全性和可靠性。