Ubuntu Java如何进行数据备份与恢复
小樊
36
2025-12-10 10:15:57
Ubuntu Java 数据备份与恢复实操指南
一 备份范围与策略
- 备份范围应覆盖:应用代码与构建产物(如 /opt/yourapp、/var/lib/yourapp)、外部化配置(如 /etc/yourapp/、应用目录下的 config/)、日志与运行时数据(如 /var/log/yourapp/、应用数据目录)、以及依赖的数据库(如 MySQL/PostgreSQL)。
- 策略建议:采用“全量 + 增量”组合;关键业务建议每日增量、每周全量;将备份落盘到外部硬盘/NAS/云存储等不同介质;在变更窗口前(如Java/JDK 升级、应用发布)务必先做一次可回滚的备份;定期做恢复演练与完整性校验(如校验文件大小/哈希、抽样导入验证)。
二 常用工具与命令
- 文件系统与归档
- 打包压缩:tar -czvf app_backup_$(date +%F).tar.gz /opt/yourapp /var/lib/yourapp /etc/yourapp
- 增量同步:rsync -aAX --delete /opt/yourapp /backup/yourapp/(适合日常镜像与快速回滚)
- 系统级快照
- Timeshift(系统快照,适合回滚系统/环境):sudo apt install timeshift;选择 RSYNC/Btrfs,设置快照计划与目标盘后创建快照
- 自动化与加密增量
- Deja Dup(图形化、易用):sudo apt install deja-dup;在“备份”中选择目录与位置,开启加密与计划任务
- BorgBackup(高效去重增量、可远程):sudo apt install borgbackup;
- 建仓:borg init --encryption=repokey /backup/borg-repo
- 全量:borg create --stats /backup/borg-repo::app-$(date +%F) /opt/yourapp /var/lib/yourapp /etc/yourapp
- 增量:borg create --stats /backup/borg-repo::app-$(date +%F) /opt/yourapp /var/lib/yourapp /etc/yourapp
- 数据库备份
- MySQL:mysqldump -u USER -p --single-transaction --routines --triggers DATABASE > db_$(date +%F).sql
- PostgreSQL:pg_dump -U USER -h localhost -F c DATABASE > db_$(date +%F).dump
以上工具与方法适用于 Ubuntu 上的 Java 应用与数据库场景,可按需组合使用。
三 备份与恢复流程示例
- 场景A 文件系统 + MySQL 的定时备份与恢复
- 备份
- 停止应用(减少不一致):sudo systemctl stop yourapp
- 数据库导出:mysqldump -u app -p --single-transaction appdb > /backup/db_$(date +%F).sql
- 打包应用与配置:tar -czvf /backup/app_$(date +%F).tar.gz /opt/yourapp /var/lib/yourapp /etc/yourapp
- 启动应用:sudo systemctl start yourapp
- 校验:ls -lh /backup;可选 sha256sum 校验归档一致性
- 恢复
- 停止应用:sudo systemctl stop yourapp
- 恢复数据库:mysql -u app -p appdb < /backup/db_2025-12-10.sql
- 恢复文件:tar -xzvf /backup/app_2025-12-10.tar.gz -C /
- 启动应用:sudo systemctl start yourapp
- 验证:检查日志、业务功能与关键数据
- 场景B BorgBackup 增量备份与恢复
- 备份:borg create --stats /backup/borg-repo::app-$(date +%F) /opt/yourapp /var/lib/yourapp /etc/yourapp
- 列出归档:borg list /backup/borg-repo
- 恢复全量:borg extract /backup/borg-repo::app-2025-12-10
- 恢复单文件/目录:borg extract /backup/borg-repo::app-2025-12-10 opt/yourapp/config
- 场景C 系统级快照恢复(Timeshift)
- 在 Timeshift 中选择目标快照并执行“恢复”;适用于系统/环境级回滚(如升级失败、配置错乱)。恢复前建议备份当前状态与重要数据。
四 自动化与监控
- 定时任务(crontab)
- 示例(每日 2:00 全量打包 + 数据库导出,保留 7 天):
- 0 2 * * * /usr/bin/mysqldump -u app -p’YOUR_DB_PASS’ --single-transaction appdb > /backup/db_$(date +%F).sql
- 5 2 * * * /bin/tar -czvf /backup/app_$(date +%F).tar.gz /opt/yourapp /var/lib/yourapp /etc/yourapp
- 10 2 * * * /usr/bin/find /backup -name “*.sql” -mtime +7 -delete
- 10 2 * * * /usr/bin/find /backup -name “app_*.tar.gz” -mtime +7 -delete
- 监控与告警
- 监控项建议:磁盘空间(低于阈值告警)、备份任务退出码、最近一次备份时间与大小、数据库备份可导入性抽样检查。
- 简单落地:在定时任务后追加日志与告警命令(如 echo 到日志文件并配合邮件/企业微信机器人推送)。
五 注意事项与最佳实践
- 变更前必备份:如Java/JDK 升级、依赖升级、发布新版本,先停应用、做快照/归档,再变更。
- 一致性优先:数据库使用事务一致性导出(如 MySQL 的 --single-transaction),文件系统备份时尽量在低峰或停机窗口进行。
- 安全与合规:数据库与配置中可能含口令/密钥,备份应加密并妥善管控访问权限;远程/云端备份注意传输与静态加密。
- 定期演练与校验:定期做恢复演练与完整性校验(大小、哈希、抽样导入/查询),确保真实可用。
- 分层备份:系统层用 Timeshift,数据层用 tar/rsync/Borg,数据库层用各自导出工具,形成多层防护。