3x-ui/docs/Tasktracking/2026-04-15-improve-mariadb-flow-and-traffic-flush.md
root eca9b219cf docs: add missing task tracking records for multi-node and traffic fixes
Add task tracking records for commits that were missing documentation:
- 2026-04-10: multi-node backend foundation (7 commits)
- 2026-04-15: improve mariadb flow and traffic flush
- 2026-04-23: install cron before acme.sh
- 2026-04-24: resolve client traffic InboundId from DB
- 2026-04-24: fix traffic flush blocked by stale inboundId=0 delta
2026-04-24 03:04:15 +08:00

61 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Task Record: Improve MariaDB flow, DB settings init, and traffic flush
Date: 2026-04-15
Related Module: install.sh, x-ui.sh, config, database, web/service — MariaDB 安装/切换/流量刷盘
Change Type: Feature
Background
MariaDB 安装和切换流程存在多个问题:安装脚本逻辑分散、数据库设置初始化不完整、流量刷盘服务存在 bug。本次提交对整个 MariaDB 相关流程进行了大规模重构和修复。
Changes
- `install.sh`+598/-行重构):
- 重构 MariaDB 安装/切换流程,统一本地和远程 MariaDB 配置路径
- 新增 MariaDB 业务用户/数据库创建逻辑
- 改进卸载流程,支持部分安装状态下的清理
- 新增 `tests/mariadb_install_switch_test.sh` 测试覆盖
- `x-ui.sh`+422/-行重构):
- 重构数据库管理菜单,支持本地/远程 MariaDB 切换
- 新增 MariaDB 端口校验、远程访问管理等菜单项
- `config/config.go`:
- 新增 `GetDBConfigFromJSON()` 读取数据库连接配置
- 新增 `readGroupedString()`/`readGroupedInt()` 通用配置读取辅助函数
- 配置别名映射支持多分组查找
- `database/shared_state.go`:
- 改进版本号操作的事务安全性
- `web/service/traffic_flush.go`:
- `Collect()` 新增 inbound-only 残留流量 delta 计算inbound 总量 - 客户端总量)
- `flushToDatabase()` 改进 UPSERT 逻辑,支持 MariaDB 的 `ON DUPLICATE KEY UPDATE`
- 新增 `ReconcileSharedTrafficState()` 调用auto-renew/disable 过期客户端)
- `web/service/traffic_pending.go`:
- 改进 `Merge()` 语义,支持按 `(kind, inboundId, email)` 键去重合并
- `main.go`:
- 新增 `NodeConfig` 启动校验入口
- 改进 MariaDB 连接初始化流程
- `update.sh`: 更新脚本适配新的安装流程
Impact
- `install.sh`: 大规模重构,影响所有 MariaDB 安装/切换/卸载路径
- `x-ui.sh`: 数据库管理菜单重构
- `config/config.go`: 新增配置读取辅助函数
- `web/service/traffic_flush.go`: 流量刷盘逻辑改进
- `web/service/traffic_pending.go`: delta 队列合并语义改进
- `main.go`: 启动流程增加节点配置校验
Verification
- `go test ./config/ -v` — PASS
- `go test ./database/ -v` — PASS
- `go test ./web/service/ -run TestTraffic -v` — PASS
- `go test ./main_test.go -v` — PASS
- `bash -n install.sh` — syntax OK
- `bash -n x-ui.sh` — syntax OK
- `bash tests/mariadb_install_switch_test.sh` — PASS
Risks And Follow-Up
- 安装脚本改动量大,需要在多种发行版上验证
- 流量刷盘的 `inboundId: 0` 残留问题尚未处理(后续 commit 修复)
- 配置读取辅助函数的分组别名映射需要与 JSON 结构保持同步