查看: 111|回复: 0

【教程13】日常运维与备份 — 让你的中转站稳定运行不掉链子

[复制链接]

18

主题

0

回帖

58

积分

管理员

积分
58
发表于 2026-5-14 17:16:57 | 显示全部楼层 |阅读模式
站点上线只是开始,长期稳定运行才是真正的挑战。本文覆盖日常运维的核心操作:备份恢复、监控告警、日志管理、升级迁移。

一、每日/每周必做检查

频率检查项怎么查
每日站点是否正常访问浏览器打开域名 + curl 测试
每日容器是否全部运行docker compose ps
每日磁盘空间是否充足df -h,使用率应 < 80%
每周上游渠道是否全部正常管理面板 → 渠道 → 逐一测试
每周用户反馈是否有未处理的问题检查 TG/QQ 群
每月备份是否完整检查备份文件大小和日期
每月上游 API 余额是否充足登录上游平台查看余额


二、数据备份(最重要!)

2.1 备份什么?

备份内容路径说明
MySQL 数据库/opt/new-api/data/mysql用户数据、交易记录、API Key
上传文件/opt/new-api/data/upload用户上传的头像等
docker-compose.yml/opt/new-api/docker-compose.yml配置信息
Nginx 配置/etc/nginx/sites-available/站点配置


2.2 全自动备份脚本
  1. #!/bin/bash
  2. # 保存为 /opt/backup.sh
  3. # chmod +x /opt/backup.sh
  4. BACKUP_DIR="/opt/backups"
  5. DATE=$(date +%Y%m%d_%H%M%S)
  6. RETENTION_DAYS=30  # 保留最近30天的备份
  7. mkdir -p $BACKUP_DIR
  8. # 1. 备份 MySQL 数据库
  9. docker exec newapi-mysql mysqldump -uroot -pyour_mysql_password new_api | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
  10. # 2. 备份上传文件
  11. tar -czf $BACKUP_DIR/upload_$DATE.tar.gz -C /opt/new-api/data upload
  12. # 3. 备份 docker-compose.yml
  13. cp /opt/new-api/docker-compose.yml $BACKUP_DIR/docker-compose_$DATE.yml
  14. # 4. 备份 Nginx 配置
  15. tar -czf $BACKUP_DIR/nginx_$DATE.tar.gz -C /etc/nginx sites-available
  16. # 5. 删除超过30天的旧备份
  17. find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -delete
  18. echo "Backup completed: $DATE"
  19. echo "Files:"
  20. ls -lh $BACKUP_DIR/*$DATE*
复制代码

2.3 设置定时备份任务
  1. # 编辑 crontab
  2. crontab -e
  3. # 添加这行:每天凌晨 3 点自动备份
  4. 0 3 * * * /opt/backup.sh >> /var/log/backup.log 2>&1
复制代码

2.4 远程备份(防止服务器挂了数据也没了)
  1. # 使用 rclone 同步到 Google Drive / OneDrive
  2. # 安装 rclone
  3. sudo apt install rclone
  4. # 配置 rclone(按提示选择云存储类型)
  5. rclone config
  6. # 在备份脚本末尾添加:
  7. rclone copy $BACKUP_DIR remote:api08-backups --include "*$DATE*"
复制代码

三、数据恢复演练
  1. # 1. 停止当前服务
  2. cd /opt/new-api && docker compose down
  3. # 2. 清空旧数据(谨慎!)
  4. rm -rf /opt/new-api/data/mysql/*
  5. # 3. 启动一个干净的 MySQL
  6. docker compose up -d mysql
  7. sleep 30
  8. # 4. 恢复数据库
  9. gunzip < /opt/backups/mysql_20260514_030000.sql.gz | docker exec -i newapi-mysql mysql -uroot -pyour_mysql_password new_api
  10. # 5. 恢复上传文件
  11. tar -xzf /opt/backups/upload_20260514_030000.tar.gz -C /opt/new-api/data
  12. # 6. 重新启动全部服务
  13. docker compose up -d
  14. # 7. 验证恢复结果
  15. curl -I https://api.yourdomain.com
复制代码

四、监控与告警

4.1 简易监控(uptime-kuma)
  1. # 部署 uptime-kuma(开源免费监控工具)
  2. docker run -d --restart=always -p 3001:3001 \
  3.   -v uptime-kuma:/app/data \
  4.   --name uptime-kuma \
  5.   louislam/uptime-kuma:latest
  6. # 访问 http://你的IP:3001 设置监控
  7. # 添加 HTTPS 监控:https://api.yourdomain.com
  8. # 设置 Telegram/邮件告警
复制代码

4.2 服务器资源监控
  1. # 实时查看资源占用
  2. htop         # CPU/内存
  3. iotop        # 磁盘IO
  4. nethogs      # 网络流量按进程
  5. docker stats # 容器资源占用
  6. # 磁盘告警脚本
  7. #!/bin/bash
  8. USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
  9. if [ $USAGE -gt 80 ]; then
  10.   echo "Warning: Disk usage is at ${USAGE}%" | tee -a /var/log/disk-warning.log
  11. fi
复制代码

五、日志管理

日志类型查看方式清理策略
New API 日志docker compose logs new-apiNew API 后台可设置自动清理天数(建议30天)
Nginx 日志/var/log/nginx/sudo logrotate -d /etc/logrotate.d/nginx
系统日志journalctlsudo journalctl --vacuum-size=500M
Docker 日志docker logs 容器名docker-compose.yml 中设 max-size: "10m"


限制 Docker 日志大小(防止磁盘爆满)
  1. # 在 docker-compose.yml 的每个 service 下添加:
  2. logging:
  3.   driver: "json-file"
  4.   options:
  5.     max-size: "10m"
  6.     max-file: "3"
复制代码

六、升级与迁移

6.1 安全更新系统
  1. # 每周更新系统安全补丁
  2. sudo apt update && sudo apt upgrade -y
  3. # 更新 Docker 镜像
  4. cd /opt/new-api
  5. docker compose pull
  6. docker compose up -d
复制代码

6.2 迁移到新服务器



  • 在新服务器上安装 Docker(教程5)
  • 复制 /opt/new-api/docker-compose.yml 到新服务器
  • 复制备份文件到新服务器并恢复(见第三节)
  • 更新 DNS 解析到新服务器 IP
  • 等 DNS 生效后,旧服务器下线


七、常见运维事故及应急处理

事故立即操作
站点打不开docker compose ps 看容器状态 → docker compose logs 看报错 → docker compose restart 尝试重启
磁盘满了docker system prune -a 清无用镜像 → 清理旧日志 → 扩容磁盘
被DDoS开启 Cloudflare "I'm Under Attack" 模式 → 检查 Nginx 限流
API Key 泄露立即在上游平台禁用泄露的 Key → 重新生成 → 更新 New API 渠道配置
MySQL 容器起不来docker logs newapi-mysql 看错误 → 可能是表损坏,尝试从备份恢复


参考来源:Docker 官方运维文档;Linux 系统运维最佳实践;uptime-kuma GitHub 仓库 (github.com/louislam/uptime-kuma)
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

扫一扫浏览手机版
Archiver|手机版|小黑屋|星海拾贝 - API中转站上下游信息论坛

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
扫一扫浏览手机版
返回顶部