docs: record configured offsite NAS backup (rsync over SSH)
Offsite backup to the Synology NAS (103.40.14.100:52200) is now configured: pg_dump of business+CMS DBs (keep 7 per series) plus rsync of the audio dir, encrypted over SSH with key auth, on a daily 03:00 systemd timer. Document the destination, transport, script, timer, and restore-from-NAS procedure; mark the backup-location item resolved (retention/threshold/owner still pending).
This commit is contained in:
parent
34c2b436f0
commit
99976ef77f
@ -10,15 +10,25 @@
|
||||
- 写入:成功结算时先写文件、再登记 `audio_files`(含 SHA256)。
|
||||
- 读取:回放/下载按 `storage_key` 取文件;文件缺失返回 404(优雅降级)。
|
||||
|
||||
## 2. 备份
|
||||
## 2. 备份(已配置异地备份)
|
||||
|
||||
| 对象 | 工具 | 位置 | 说明 |
|
||||
- 本机暂存:`/home/flym/backups/`(仅存放 `.dump`)。
|
||||
- 异地备份目标:**Synology NAS** `103.40.14.100`(Synology DSM),账号 `kts_bak`,落盘 `/var/services/homes/kts_bak/backup/kaotings/`(`db/` + `audio/`),可用容量约 92 GiB。
|
||||
- 传输方式:**rsync over SSH**(端口 `52200`,**加密**),密钥认证(`/root/.ssh/id_ed25519_ktsbak`,公钥已加入 NAS `kts_bak` 的 `authorized_keys`)。**不使用** 公网明文 rsync 守护端口 `50873`。
|
||||
- 脚本:`/usr/local/sbin/kaotings-backup.sh`(root 运行):
|
||||
1. `pg_dump --format=custom` 业务库(`/etc/kaotings/api.env` → `DATABASE_URL`)与 CMS 库(`/etc/kaotings/cms.env` → `DATABASE_URI`)。
|
||||
2. 每库保留最近 **7** 份(按序列独立轮转)。
|
||||
3. `rsync -a --delete` 增量镜像 `db/` 与 `audio/`(`AUDIO_STORAGE_DIR`)到 NAS。
|
||||
- 定时:systemd `kaotings-backup.timer`,每日 **03:00**(`Persistent=true`,`RandomizedDelaySec=30min`)触发 `kaotings-backup.service`。
|
||||
- 验证:首份备份已落盘(业务库 54K、CMS 48K、音频 22 文件 4.8M);`pg_restore --list` 确认归档可恢复。
|
||||
|
||||
| 对象 | 工具 | 本机 | 异地(NAS) |
|
||||
| --- | --- | --- | --- |
|
||||
| 业务库 `kaotings` | `pg_dump --format=custom` | `/home/flym/backups/kaotings_<ts>.dump` | 含用户/额度/任务/音频元数据/流水 |
|
||||
| CMS 库 `kaotings_cms` | `infra/scripts/backup-cms-db.sh`(root) | `/home/flym/backups/kaotings_cms_<ts>.dump` | 独立库/账号 |
|
||||
| 音频目录 | `tar`/`rsync` 到隔离位置 | 待指定 | 与库备份分开存放 |
|
||||
| 业务库 `kaotings` | `pg_dump --format=custom` | `/home/flym/backups/kaotings_<ts>.dump` | `…/backup/kaotings/db/` |
|
||||
| CMS 库 `kaotings_cms` | `pg_dump --format=custom` | `/home/flym/backups/kaotings_cms_<ts>.dump` | `…/backup/kaotings/db/` |
|
||||
| 音频目录 | `rsync -a --delete` | `/home/flym/kaotings-audio/` | `…/backup/kaotings/audio/` |
|
||||
|
||||
> 备份位置、保留期、异地/异机与责任人:**待用户确认**(见 §5)。
|
||||
> 仍待用户确认:音频保留期、磁盘告警阈值、是否启用按 `expires_at` 的定时清理(见 §5)。备份保留份数当前=7,可按需调整脚本 `KEEP`。
|
||||
|
||||
## 3. 容量 / 保留 / 清理(需用户决定的参数集中列出)
|
||||
|
||||
@ -28,7 +38,7 @@
|
||||
| 磁盘容量上限 / 告警阈值 | 根盘约 48 GiB 可用,无上限告警 | 是(阈值 + 通知方式) |
|
||||
| 保留期清理策略 | 未启用定时清理(仅启动时清孤儿) | 是(是否按 `expires_at` 定时删除) |
|
||||
| 原始文本保留期 | 存于 `tts_tasks.text` | 是(产品/隐私) |
|
||||
| 备份保留份数 / 周期 | 待确认 | 是(运维负责人) |
|
||||
| 备份保留份数 / 周期 | 已配置:每库 7 份 · 每日 03:00 · 异地 NAS | 否(可调脚本 `KEEP` 与 timer) |
|
||||
|
||||
- 清理安全边界:
|
||||
- 启动时 `cleanup_orphan_audio` 仅删除“**无** `available` 记录且 mtime>1h”的孤儿文件。
|
||||
@ -41,7 +51,7 @@
|
||||
|
||||
1. 停止写入(可选,视 RPO):`systemctl stop kaotings-api`。
|
||||
2. 建空库 → `pg_restore --clean --if-exists` 业务库 / CMS 库。
|
||||
3. 音频:从隔离备份拷贝到 `/home/flym/kaotings-audio`。
|
||||
3. 音频:从 NAS 异地备份 `rsync`/`scp` 回 `/home/flym/kaotings-audio`(源:`…/backup/kaotings/audio/`)。
|
||||
4. 校验:行数、音频文件↔`audio_files` 关联、`checksum`、额度↔流水一致(见 §4.2 校验 SQL)。
|
||||
5. `systemctl start kaotings-api`,`/healthz` 复核。
|
||||
|
||||
@ -64,7 +74,7 @@
|
||||
2. 磁盘容量上限与告警阈值、通知方式。
|
||||
3. 是否启用按 `expires_at` 的定时保留期清理。
|
||||
4. 原始文本保留期。
|
||||
5. 备份位置(异地/异机)、保留份数与周期、责任人。
|
||||
5. 备份:异地 NAS 已配置(`103.40.14.100`,每日 03:00,每库 7 份);**剩余待确认**:保留份数/周期是否调整、备份责任人。
|
||||
6. 上游 HTTPS/加密端点、允许来源网段、凭据轮换(见 `DEPLOYMENT.md` §4)。
|
||||
|
||||
## 6. 待调查 / 未闭环项(不标为完成)
|
||||
|
||||
@ -90,6 +90,14 @@
|
||||
|
||||
结论:业务库、CMS 库、音频均可在隔离环境完整恢复,历史↔音频关联与额度数据一致(除上述 4 条既有缺失)。
|
||||
|
||||
### 3.3 异地备份(本阶段后续配置,已落地)
|
||||
|
||||
- 用户提供异地 NAS(Synology)`103.40.14.100`(SSH `52200` / rsync 守护 `50873`)。
|
||||
- 采用 **rsync over SSH(52200,加密 + 密钥认证)**,不使用公网明文 rsync 守护端口;密钥 `/root/.ssh/id_ed25519_ktsbak`,公钥加入 NAS `kts_bak`。
|
||||
- 脚本 `/usr/local/sbin/kaotings-backup.sh`(root):`pg_dump` 业务库 + CMS 库(每库保留 7 份)+ `rsync -a --delete` 音频目录 → `…/backup/kaotings/{db,audio}/`;systemd `kaotings-backup.timer` 每日 03:00 触发。
|
||||
- 首份备份已落盘并 `pg_restore --list` 验证可恢复;详见 `OPERATIONS.md` §2。
|
||||
- 仍待确认:保留份数/周期、磁盘告警阈值、责任人(`OPERATIONS.md` §5)。
|
||||
|
||||
## 4. 上游安全改造(上线阻断,待外部条件)
|
||||
|
||||
- 现状:TTS 上游为公网 **HTTP**(`TTS_UPSTREAM_URL`),Bearer Key 走明文传输。这是正式上线阻断项。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user