# 备份与恢复 ## 备份范围 1. PostgreSQL:租户、用户、客户、消息、任务、审计和持久队列。 2. `lingxi_whatsapp_data`:WhatsApp 多设备登录态与网关缓存。 3. Telegram Gateway:由其独立部署执行 TDLib 数据和配置备份。 4. 环境密钥:存入公司 Secret 管理系统,不与数据备份打包。 5. 对象存储或上传目录:若生产启用,按独立生命周期备份。 ## PostgreSQL ```bash docker compose exec -T postgres pg_dump \ -U "${LX_DB_USER:-lingxi}" \ -d "${LX_DB_NAME:-lingxi_crossborder}" \ -Fc > "lingxi-postgres-$(date +%Y%m%d-%H%M%S).dump" ``` 恢复必须在隔离环境先演练: ```bash createdb lingxi_restore_test pg_restore --clean --if-exists --no-owner \ --dbname lingxi_restore_test lingxi-postgres-YYYYMMDD-HHMMSS.dump ``` ## WhatsApp 持久卷 备份前短暂停止网关写入,避免文件不一致: ```bash docker compose stop whatsapp-gateway docker run --rm \ -v lingxi-crossborder_lingxi_whatsapp_data:/source:ro \ -v "$PWD/backups:/backup" \ alpine tar -czf /backup/whatsapp-data.tar.gz -C /source . docker compose start whatsapp-gateway ``` 恢复前保留现有卷副本,在测试环境验证账号能重连;登录态过期时应走重新授权,不能把旧凭据强行用于其他账号。 ## 策略 - PostgreSQL:每日全量,生产规模扩大后增加连续归档或托管 PITR。 - 网关登录态:每日加密备份,账号变更后额外备份。 - 至少保留 7 个日备、4 个周备、6 个月备,按法规和客户合同调整。 - 备份使用独立凭据、服务端加密和异地存储。 ## 恢复演练 每月至少一次: 1. 在隔离网络创建全新环境。 2. 恢复数据库、网关数据和必要配置。 3. 验证租户数、关键表行数和最近消息时间。 4. 验证登录、会话读取、渠道重连、收发和媒体下载。 5. 记录 RPO、RTO、失败点和改进项。 仅“备份成功”不等于可恢复;没有完成验收的备份不得视为合格。