|
| 1 | +# WAL-G Environment Variables Analysis Report |
| 2 | + |
| 3 | +## Executive Summary |
| 4 | + |
| 5 | +本报告分析了 `env_sample` 文件中与 WAL-G 备份相关的环境变量在生产环境中的使用情况。通过对现有脚本和配置文件的深入分析,识别出哪些变量被实际使用,哪些变量可能存在冗余或未被充分利用。 |
| 6 | + |
| 7 | +## WAL-G Environment Variables Analysis |
| 8 | + |
| 9 | +### ✅ 已使用的环境变量 (Used Variables) |
| 10 | + |
| 11 | +以下环境变量在生产 WAL 备份模式下被实际使用: |
| 12 | + |
| 13 | +#### 1. 核心 WAL-G 配置 |
| 14 | + |
| 15 | +| 变量名 | 默认值 | 使用位置 | 说明 | |
| 16 | +|--------|--------|----------|------| |
| 17 | +| `WALG_SSH_PREFIX` | - | `walg-env-prepare.sh`, `wal-g-runner.sh`, `docker-compose.yml` | WAL-G SSH 后端配置,**必需变量** | |
| 18 | +| `WALG_SSH_PRIVATE_KEY` | - | `walg-env-prepare.sh`, `docker-compose.yml` | Base64 编码的 SSH 私钥 | |
| 19 | +| `WALG_SSH_PRIVATE_KEY_PATH` | `/secrets/walg_ssh_key` | `walg-env-prepare.sh`, `docker-compose.yml` | SSH 私钥文件路径 | |
| 20 | +| `WALG_COMPRESSION_METHOD` | `lz4` | `walg-env-prepare.sh`, `docker-compose.yml` | 压缩算法 | |
| 21 | +| `WALG_DELTA_MAX_STEPS` | `7` | `walg-env-prepare.sh`, `wal-g-runner.sh`, `docker-compose.yml` | 增量备份链最大长度 | |
| 22 | +| `WALG_DELTA_ORIGIN` | `LATEST` | `walg-env-prepare.sh`, `docker-compose.yml` | 增量备份起点 | |
| 23 | +| `WALG_LOG_LEVEL` | `DEVEL` | `walg-env-prepare.sh`, `docker-compose.yml` | 日志级别 | |
| 24 | + |
| 25 | +#### 2. 保留策略配置 |
| 26 | + |
| 27 | +| 变量名 | 默认值 | 使用位置 | 说明 | |
| 28 | +|--------|--------|----------|------| |
| 29 | +| `WALG_RETENTION_FULL` | `7` | `wal-g-runner.sh`, `walg-daily-backup.sh` | 保留完整备份数量 | |
| 30 | + |
| 31 | +#### 3. SSH 连接配置 |
| 32 | + |
| 33 | +| 变量名 | 默认值 | 使用位置 | 说明 | |
| 34 | +|--------|--------|----------|------| |
| 35 | +| `SSH_PORT` | `22` | `walg-env-prepare.sh`, `docker-compose.yml` | SSH 端口 | |
| 36 | +| `SSH_KEY_PATH` | `./secrets/walg_ssh_key` | `docker-compose.yml` | SSH 密钥目录路径 | |
| 37 | + |
| 38 | +#### 4. 容器和网络配置 |
| 39 | + |
| 40 | +| 变量名 | 默认值 | 使用位置 | 说明 | |
| 41 | +|--------|--------|----------|------| |
| 42 | +| `BACKUP_MODE` | `sql` | `backup.sh`, `walg-env-prepare.sh`, `docker-entrypoint-walg.sh` | 备份模式开关 | |
| 43 | +| `POSTGRES_USER` | `postgres` | `walg-env-prepare.sh`, `backup.sh` | PostgreSQL 用户名 | |
| 44 | +| `POSTGRES_PASSWORD` | - | `walg-env-prepare.sh` | PostgreSQL 密码 | |
| 45 | + |
| 46 | +#### 5. 通知配置 |
| 47 | + |
| 48 | +| 变量名 | 默认值 | 使用位置 | 说明 | |
| 49 | +|--------|--------|----------|------| |
| 50 | +| `TELEGRAM_BOT_TOKEN` | - | `wal-g-runner.sh`, `walg-daily-backup.sh` | Telegram 机器人令牌 | |
| 51 | +| `TELEGRAM_CHAT_ID` | - | `wal-g-runner.sh`, `walg-daily-backup.sh` | Telegram 聊天 ID | |
| 52 | +| `TELEGRAM_MESSAGE_PREFIX` | `Database` | `wal-g-runner.sh`, `walg-daily-backup.sh` | 消息前缀 | |
| 53 | + |
| 54 | +### ❌ 未使用的环境变量 (Unused Variables) |
| 55 | + |
| 56 | +以下环境变量在 `env_sample` 中定义,但在生产 WAL 备份模式下**未被实际使用**: |
| 57 | + |
| 58 | +#### 1. 时间和调度相关 (测试/开发用途) |
| 59 | + |
| 60 | +| 变量名 | 默认值 | 状态 | 说明 | |
| 61 | +|--------|--------|------|------| |
| 62 | +| `WALG_BASEBACKUP_CRON` | `"30 1 * * *"` | ❌ 未使用 | 基础备份 cron 调度,实际使用自定义脚本 | |
| 63 | +| `WALG_CLEAN_CRON` | `"15 3 * * *"` | ❌ 未使用 | 清理 cron 调度,集成到每日备份脚本中 | |
| 64 | +| `BACKUP_CRON_SCHEDULE` | `"0 2 * * *"` | ⚠️ 部分使用 | 仅在 SQL 模式下使用,WAL 模式有独立调度 | |
| 65 | + |
| 66 | +#### 2. 保留策略 (冗余配置) |
| 67 | + |
| 68 | +| 变量名 | 默认值 | 状态 | 说明 | |
| 69 | +|--------|--------|------|------| |
| 70 | +| `WALG_RETENTION_DAYS` | `30` | ❌ 未使用 | 基于天数的保留策略,实际使用基于数量的策略 | |
| 71 | + |
| 72 | +#### 3. 测试环境配置 |
| 73 | + |
| 74 | +| 变量名 | 默认值 | 状态 | 说明 | |
| 75 | +|--------|--------|------|------| |
| 76 | +| `ENABLE_SSH_SERVER` | `0` | ✅ 测试路径 | 当=1 时自动提供默认 WALG_SSH_PREFIX/SSH_PORT=2222 | |
| 77 | +| `SSH_USER` | (派生) | ✅ 测试路径 | 从 WALG_SSH_PREFIX 提取;ENABLE_SSH_SERVER=1 默认为 walg | |
| 78 | +| `WALG_SSH_PREFIX_LOCAL` | `ssh://walg@ssh-server/backups` | ⛔ 已弃用 | 统一改用 WALG_SSH_PREFIX + ENABLE_SSH_SERVER | |
| 79 | + |
| 80 | +#### 4. 时区配置 |
| 81 | + |
| 82 | +| 变量名 | 默认值 | 状态 | 说明 | |
| 83 | +|--------|--------|------|------| |
| 84 | +| `TZ` | `Asia/Shanghai` | ⚠️ 间接使用 | 主要用于容器时区,WAL-G 本身不直接使用 | |
| 85 | + |
| 86 | +#### 5. 遗留/兼容性变量 |
| 87 | + |
| 88 | +| 变量名 | 默认值 | 状态 | 说明 | |
| 89 | +|--------|--------|------|------| |
| 90 | +| `SSH_USERNAME` | - | ⚠️ 运行时推导 | 从 `WALG_SSH_PREFIX` 自动提取,无需单独配置 | |
| 91 | + |
| 92 | +### 🔧 配置优化建议 |
| 93 | + |
| 94 | +#### 1. 清理不必要的变量 |
| 95 | + |
| 96 | +在生产环境中,可以移除以下变量: |
| 97 | + |
| 98 | +```bash |
| 99 | +# 不推荐在生产环境中使用的变量 |
| 100 | +# WALG_BASEBACKUP_CRON="30 1 * * *" # 使用自定义脚本替代 |
| 101 | +# WALG_CLEAN_CRON="15 3 * * *" # 集成到每日备份中 |
| 102 | +# WALG_RETENTION_DAYS=30 # 使用基于数量的策略 |
| 103 | +# ENABLE_SSH_SERVER=0 # 仅测试用 |
| 104 | +# SSH_USER=walg # 仅测试用 |
| 105 | +# WALG_SSH_PREFIX_LOCAL=... # (已弃用) 请删除 |
| 106 | +``` |
| 107 | + |
| 108 | +#### 2. 核心生产配置 |
| 109 | + |
| 110 | +生产环境的最小必需配置: |
| 111 | + |
| 112 | +```bash |
| 113 | +# --- 备份模式 --- |
| 114 | +BACKUP_MODE=wal |
| 115 | + |
| 116 | +# --- WAL-G 核心配置 --- |
| 117 | +WALG_SSH_PREFIX=ssh://walg@your-backup-host/absolute/path/to/backup/directory |
| 118 | +SSH_PORT=22 |
| 119 | +WALG_SSH_PRIVATE_KEY_PATH=/secrets/walg_ssh_key |
| 120 | +SSH_KEY_PATH=./secrets/walg_ssh_key |
| 121 | + |
| 122 | +# --- WAL-G 性能配置 --- |
| 123 | +WALG_COMPRESSION_METHOD=lz4 |
| 124 | +WALG_DELTA_MAX_STEPS=7 |
| 125 | +WALG_DELTA_ORIGIN=LATEST |
| 126 | +WALG_LOG_LEVEL=NORMAL # 生产环境建议使用 NORMAL 而非 DEVEL |
| 127 | + |
| 128 | +# --- 保留策略 --- |
| 129 | +WALG_RETENTION_FULL=7 |
| 130 | + |
| 131 | +# --- 数据库配置 --- |
| 132 | +POSTGRES_USER=postgres |
| 133 | +POSTGRES_PASSWORD=your_very_strong_superuser_password |
| 134 | + |
| 135 | +# --- 通知配置 (可选) --- |
| 136 | +TELEGRAM_BOT_TOKEN=your_bot_token |
| 137 | +TELEGRAM_CHAT_ID=your_chat_id |
| 138 | +TELEGRAM_MESSAGE_PREFIX=Production DB |
| 139 | +``` |
| 140 | + |
| 141 | +### 📊 使用率统计 |
| 142 | + |
| 143 | +- **总变量数**: 23 |
| 144 | +- **使用的变量**: 15 (65.2%) |
| 145 | +- **未使用的变量**: 8 (34.8%) |
| 146 | +- **关键变量**: 7 (必需配置) |
| 147 | +- **可选变量**: 8 (性能优化和通知) |
| 148 | + |
| 149 | +### 🚨 关键发现 |
| 150 | + |
| 151 | +1. **必需变量**: `WALG_SSH_PREFIX` 是唯一的必需变量,其他都有合理的默认值 |
| 152 | +2. **冗余配置**: 存在多个未使用的 cron 和保留策略配置 |
| 153 | +3. **测试配置**: 约 13% 的变量仅用于测试环境 |
| 154 | +4. **日志级别**: 生产环境建议使用 `NORMAL` 而非 `DEVEL` |
| 155 | +5. **自动化程度**: 新的每日备份脚本实现了更好的集成和错误处理 |
| 156 | + |
| 157 | +### 📝 建议行动 |
| 158 | + |
| 159 | +1. **清理 env_sample**: 移除或标记仅测试用的变量 |
| 160 | +2. **文档更新**: 明确区分生产和测试配置 |
| 161 | +3. **配置验证**: 在脚本中添加更多配置验证逻辑 |
| 162 | +4. **监控改进**: 基于 `WALG_LOG_LEVEL=NORMAL` 优化日志输出 |
| 163 | +5. **备份策略**: 考虑基于数据量而非固定数量的保留策略 |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +*报告生成时间: $(date -Iseconds)* |
| 168 | +*分析范围: WAL-G 生产环境配置优化* |
0 commit comments