52aca456e9
Support DATABASE_URL with connection pooling, pg_dump backups, SQLite migration script, and deploy_postgres.sh with docs. Co-authored-by: Cursor <cursoragent@cursor.com>
4.3 KiB
4.3 KiB
数据备份与恢复
qihuo 支持自动备份数据库与复盘附件,生成可在其他 Linux 服务器恢复的压缩包。
存储后端由 .env 决定:
| 后端 | 备份包内主文件 | 说明 |
|---|---|---|
| SQLite(默认) | futures.db |
本地单文件库 |
| PostgreSQL | postgres_dump.sql |
pg_dump 逻辑备份 |
PostgreSQL 部署与迁移见 POSTGRES.md。
备份内容
| 内容 | 说明 |
|---|---|
futures.db |
SQLite 主库(仅 SQLite 模式) |
postgres_dump.sql |
PostgreSQL 逻辑备份(仅 PostgreSQL 模式) |
uploads/ |
复盘截图、自动 K 线图(若存在) |
manifest.json |
备份时间、backend 字段、文件清单 |
RESTORE.md |
包内恢复说明 |
restore.sh |
一键恢复脚本 |
不包含 .env(含 CTP 密码、DATABASE_URL 等),请单独安全保管或在新服务器重新配置。
备份目录
默认:/root/qihuo_backup
可通过环境变量覆盖:
# /opt/qihuo/.env 或 systemd/PM2 环境
QIHUO_BACKUP_DIR=/data/qihuo_backup
系统设置页
路径:系统设置 → 数据备份与恢复
- 立即备份:后台生成
qihuo_backup_YYYYMMDD_HHMMSS.tar.gz - 每日自动备份:默认每天 03:00(Asia/Shanghai)执行
- 保留份数:默认保留最近 30 份,超出自动删除最旧文件
- 下载:列表中点击「下载」获取压缩包
PostgreSQL 模式下需服务器已安装 pg_dump(apt install postgresql-client 或完整 postgresql 包)。
在新服务器恢复
方式一:使用包内脚本(推荐)
# 1. 上传压缩包到目标机
scp qihuo_backup_20260626_030015.tar.gz root@新服务器:/root/
# 2. 解压并恢复
cd /root
tar -xzf qihuo_backup_20260626_030015.tar.gz
cd qihuo_backup_20260626_030015
chmod +x restore.sh
# SQLite:直接恢复 futures.db
RESTORE_DIR=/opt/qihuo ./restore.sh
# PostgreSQL:先配置 /opt/qihuo/.env 的 DATABASE_URL,再执行
export RESTORE_DIR=/opt/qihuo
# 若 .env 在 RESTORE_DIR 下且含 DATABASE_URL,restore.sh 会自动 source
./restore.sh
默认恢复到 /root/qihuo。若生产目录为 /opt/qihuo:
RESTORE_DIR=/opt/qihuo ./restore.sh
方式二:手工复制(SQLite)
tar -xzf qihuo_backup_20260626_030015.tar.gz
cd qihuo_backup_20260626_030015
pm2 stop qihuo
cp futures.db /opt/qihuo/futures.db
cp -a uploads/. /opt/qihuo/uploads/
pm2 restart qihuo
方式三:手工导入(PostgreSQL)
pm2 stop qihuo
export DATABASE_URL=postgresql://qihuo:密码@127.0.0.1:5432/qihuo
psql "$DATABASE_URL" -f postgres_dump.sql
cp -a uploads/. /opt/qihuo/uploads/
pm2 restart qihuo
恢复后检查清单
- 已部署 qihuo 代码与 Python 虚拟环境(见 DEPLOY.md)
- 已配置
.env(DATABASE_URL或 SQLite、SECRET_KEY、CTP 账号等) - PostgreSQL:库已创建且
DATABASE_URL可连接 - 访问 Web 登录,检查交易记录、统计页是否正常
- CTP 模式需在新环境重新连接柜台
注意事项
- 恢复前务必停止 qihuo,避免进程占用数据库导致覆盖不完整
- SQLite 备份使用 SQLite
backupAPI,并在 WAL 模式下尝试 checkpoint - PostgreSQL 备份使用
pg_dump,恢复使用psql -f - 自动备份在应用后台线程执行,与 Web 服务同进程
- 大体积
uploads/会使压缩包变大,可按需定期清理无用截图 - 不要将含
.env、数据库的压缩包上传到公开网盘
故障排查
| 现象 | 处理 |
|---|---|
| 设置页无备份列表 | 检查 /root/qihuo_backup 目录权限,进程需可写 |
| 立即备份无反应 | 查看 PM2 日志;可能上一任务仍在进行 |
| PostgreSQL 备份失败 | 安装 postgresql-client;检查 DATABASE_URL |
| 下载 404 | 文件名须为系统生成的 qihuo_backup_*.tar.gz |
| 恢复后无法登录 | 确认数据已导入实际使用的库(SQLite 文件或 PG) |
| 恢复后 CTP 连不上 | 在新服务器配置正确的 .env CTP 参数 |
相关文档
- POSTGRES.md — PostgreSQL 一键部署、迁移、备份恢复
- DEPLOY.md — 部署与目录结构
- FEATURES.md — 功能与路由一览