1) 目标说明:针对位于巴西(sa-east-1 / São Paulo)VPS或独服的Minecraft服务器做灾备架构设计。
2) 风险点:硬盘故障、误删世界文件(world)、插件冲突导致数据损坏、DDoS攻击导致服务器不可用。
3) 关键资产:server.jar、world 文件夹、plugins、banned-players.json、ops.json、server.properties。
4) 可用资源:VPS(例如:4 vCPU/8GB RAM/160GB SSD/带宽1Gbps)、域名解析(A记录)、Cloudflare或类似CDN。
5) 目标RTO/RPO:建议RTO ≤ 30min,RPO ≤ 1小时(可根据付费策略调整)。
1) 全量+增量:每日做一次全量备份(tar.gz),每小时做增量(rsync或rclone --backup-dir)。
2) 保存周期:7天日备份,30天按周备份,90天按月备份(自动轮替)。
3) 工具举例:rsync、tar、borgbackup、restic、rclone(同步到Backblaze B2 / S3)。
4) 本地与异地:本地快照存于同VPS SSD,异地存储使用对象存储或另一台在北美/巴西的数据中心的备机。
5) 校验机制:采用sha256校验或restic/borg自带完整性检查,定期运行校验任务。
1) 全量示例:sudo tar -czf /backups/mc_full_$(date +%F).tar.gz /home/minecraft/server
2) 增量示例:rsync -a --delete --link-dest=/backups/last /home/minecraft/server/ /backups/incr/$(date +%F_%H)
3) 同步到B2:rclone copy /backups remote:b2/mc-backups --checksum --fast-list
4) Cron计划:0 3 * * * /usr/local/bin/backup_full.sh(每日3点全量);0 * * * * /usr/local/bin/backup_incr.sh(每小时增量)。
5) 日志与告警:备份脚本需写入/var/log/mc_backup.log,失败时通过邮件或Telegram告警(使用sendmail或curl到Webhook)。
1) 恢复前检查:确认目标备份文件存在并校验sha256sum与备份日志。
2) 恢复示例(全量):sudo systemctl stop minecraft && tar -xzf /backups/mc_full_2026-09-01.tar.gz -C /home/minecraft && chown -R mc:mc /home/minecraft && systemctl start minecraft
3) 增量合并:将增量目录用rsync合并到当前world路径,注意保留UUID与权限。
4) 验证步骤:启动后在控制台执行save-on/save-all并观察日志,确认无插件报错并且玩家数据正常。
5) 回滚演练:每季度进行一次恢复演练,记录所花时间并优化RTO。
1) 域名解析:使用低TTL的A记录指向当前活动IP,必要时切换至备机IP(TTL 60s)。
2) CDN建议:Minecraft可用Cloudflare Spectrum或类似TCP代理做流量清洗,减少直接暴露端口。
3) DDoS防御:购买带有黑洞过滤的防护或使用云厂商的DDoS按需防护(按带宽计费)。
4) 同步策略:CDN或负载均衡切换时,备份与恢复脚本要保持同一对象存储配置,避免配置不一致。
5) 访问控制:在服务器端启用Fail2ban、限制连接速率并仅打开必要端口。
1) 案例简介:2025年10月,一家巴西社区服务器MineBR遭遇误操作导致world文件被清空,使用异地备份在25分钟内完成恢复。
2) 恢复耗时:全量备份约12GB,通过光纤连接下载到VPS耗时约8分钟;增量合并耗时约12分钟,总计约25分钟。
3) 服务器配置示例:Provider: DigitalOcean (São Paulo) | CPU: 4 vCPU | RAM: 8GB | SSD: 160GB | 带宽: 1Gbps。
4) 储存策略:本地保留最近7份备份(共约84GB),异地B2保留30天历史(约400GB)。
5) 成功经验:启用自动备份+异地存储并配合CDN清洗,显著降低因DDoS或误删导致的停服时间。
| 类型 | 频率 | 示例大小 | 保留 |
|---|---|---|---|
| 全量 | 每天 03:00 | 12GB | 7 天 |
| 增量 | 每小时 | 0.8~2GB | 7 天 |
| 异地对象存储(B2) | 每次同步 | 总计约 400GB(30天) | 30 天 |