feat(ops): 添加生产备份恢复脚本
- 新增 PostgreSQL 备份、fresh DB 恢复和 server_data volume 备份脚本\n- 恢复默认拒绝覆盖,必须显式 --confirm-overwrite\n- 补充 package scripts、deploy verify 校验和部署文档\n\nCo-Authored-By: GPT-5 Codex <codex@openai.com>
This commit is contained in:
@@ -203,6 +203,61 @@ pnpm deploy:check-runtime http://localhost/api/v1/health/version <expected-commi
|
||||
|
||||
浏览器不再作为业务数据主存储。清浏览器缓存不会删除产品、项目、版本、任务、测试用例、Bug 等业务数据。
|
||||
|
||||
## 备份与恢复
|
||||
|
||||
备份分两类:PostgreSQL 业务数据和 `server_data` volume 中的运行时配置。真实备份文件默认写到 `backups/`,该目录已加入 `.gitignore`,不要把 dump 或 tar 包提交到仓库。
|
||||
|
||||
先演练命令,不写文件:
|
||||
|
||||
```bash
|
||||
pnpm backup:postgres -- --dry-run --env-file .env.production
|
||||
pnpm backup:server-data -- --dry-run --env-file .env.production
|
||||
```
|
||||
|
||||
执行正式备份:
|
||||
|
||||
```bash
|
||||
pnpm backup:postgres -- --env-file .env.production
|
||||
pnpm backup:server-data -- --env-file .env.production
|
||||
```
|
||||
|
||||
PostgreSQL 备份使用 `pg_dump --format=custom --no-owner --no-acl`,便于跨环境恢复。`server_data` 备份使用只读 volume mount 和 `tar -czf`,覆盖 AI Provider 配置等后端运行时文件。
|
||||
|
||||
恢复数据库必须显式确认覆盖。默认命令会拒绝执行,防止误删现有库:
|
||||
|
||||
```bash
|
||||
pnpm restore:postgres -- --env-file .env.production --input backups/postgres/ftb_pm-postgres-20260708T120000Z.dump
|
||||
```
|
||||
|
||||
确认要把目标数据库重建为 fresh DB 后,再运行:
|
||||
|
||||
```bash
|
||||
pnpm restore:postgres -- \
|
||||
--env-file .env.production \
|
||||
--input backups/postgres/ftb_pm-postgres-20260708T120000Z.dump \
|
||||
--confirm-overwrite
|
||||
```
|
||||
|
||||
恢复前建议先 dry-run 看清将执行的 `psql/dropdb/createdb/pg_restore` 步骤:
|
||||
|
||||
```bash
|
||||
pnpm restore:postgres -- \
|
||||
--dry-run \
|
||||
--confirm-overwrite \
|
||||
--env-file .env.production \
|
||||
--input backups/postgres/ftb_pm-postgres-20260708T120000Z.dump
|
||||
```
|
||||
|
||||
如果要恢复到临时库做校验,不覆盖当前生产库:
|
||||
|
||||
```bash
|
||||
pnpm restore:postgres -- \
|
||||
--env-file .env.production \
|
||||
--input backups/postgres/ftb_pm-postgres-20260708T120000Z.dump \
|
||||
--target-db ftb_pm_restore_check \
|
||||
--confirm-overwrite
|
||||
```
|
||||
|
||||
## 升级流程
|
||||
|
||||
```bash
|
||||
@@ -216,7 +271,8 @@ docker compose --env-file .env.production -f docker-compose.prod.yml exec server
|
||||
升级前建议先备份数据库:
|
||||
|
||||
```bash
|
||||
docker compose --env-file .env.production -f docker-compose.prod.yml exec postgres pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB" > ftb_pm_backup.sql
|
||||
pnpm backup:postgres -- --env-file .env.production
|
||||
pnpm backup:server-data -- --env-file .env.production
|
||||
```
|
||||
|
||||
## 常见排查
|
||||
|
||||
Reference in New Issue
Block a user