ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

codex-lb 多账号代理数据库指南:SQLite 与 PostgreSQL 取舍、备份快照与升级实战

codex-lb 多账号代理数据库指南:SQLite 与 PostgreSQL 取舍、备份快照与升级实战 codex-lb 多账号代理数据库指南SQLite 与 PostgreSQL 取舍、备份快照与升级实战【免费下载链接】codex-lbCodex/ChatGPT multiple account load balancer proxy with usage tracking, dashboard, and OpenCode-compatible endpoints项目地址: https://gitcode.com/gh_mirrors/co/codex-lb️ codex-lb 是一款面向 Codex / ChatGPT 多账号的负载均衡代理自带用量追踪、管理面板和 OpenCode 兼容端点。它的所有账号、用量历史、请求日志都存储在数据库中——选 SQLite 还是 PostgreSQL、如何备份快照、升级时怎么不丢数据正是新手最常踩坑的三个问题。本文带你一次搞懂。一、为什么数据库选型对 codex-lb 很重要codex-lb 会持续写入三类数据账号凭据加密存储、用量快照usage_history、请求日志request_logs。面板上看到的用量曲线、费用统计、账号趋势全部来自这些表。数据量小、单机自用 →SQLite一个文件搞定零配置多副本部署、高并发写日志、外部高可用集群 →PostgreSQL更稳。好消息是codex-lb 对两者做了统一封装切换只靠一个环境变量无需改代码。二、SQLite默认后端零配置上手SQLite 是 codex-lb 的默认后端安装后无需任何配置即可运行。数据存放在哪里运行环境数据目录本地 / uvx~/.codex-lb/Docker/var/lib/codex-lb/⚠️ 记住一句话备份这个目录就备份了你的全部数据数据库、加密密钥、会话归档。数据库文件旁还会生成一个runstate状态文件进程正常运行时记录running干净关机后记录clean。下次启动时如果检测到上次是非干净退出崩溃、断电、被 kill会自动对数据库做一次启动完整性检查确保文件没有损坏才放行。这是 codex-lb 内置的第一道数据安全网。面板上的用量看板、账号列表读的全是这份 SQLite 数据三、PostgreSQL一个环境变量即可切换当你的部署是多副本、Helm/Kubernetes 集群时建议切换 PostgreSQL。原理很简单请求路径引擎启用连接池预检pre-ping与连接回收遥测写入放宽同步刷盘以获得更高吞吐而配置类写入账号、API Key、限额始终保留完整持久性——这些细节都由 codex-lb 自动处理你只需给对连接串。1. 设置环境变量export CODEX_LB_DATABASE_URLpostgresqlasyncpg://codex_lb:codex_lb127.0.0.1:5432/codex_lb2. 用 Docker Compose 一键起 Postgres项目根目录的 docker-compose.yml 内置了postgres与postgres-upgrade两个 profile# 启用 Postgres 18 服务数据落在命名卷 codex-lb-postgres-data docker compose --profile postgres up -dpostgres服务还带了一个入口守卫如果检测到卷里还是旧版本 Postgres 的数据目录会拒绝启动并提示你先用postgres-upgrade升级避免直接打开不兼容的数据目录。3. 连接池调优可选相关配置见 docs/reference/settings.mdCODEX_LB_DATABASE_POOL_SIZE默认 25CODEX_LB_DATABASE_MAX_OVERFLOW默认 15默认值已按单副本不超过 Postgres 默认 100 连接的 80%设计一般无需调整。四、备份与快照自动 pre-migrate 备份 损坏恢复1. 升级前的自动快照每次执行数据库结构升级前codex-lb 会先自动创建一份 SQLite 快照命名形如store.pre-migrate-20260927T010000Z.db基于 SQLite 官方 Backup API 生成是热备而非复制半截文件默认最多保留 5 份CODEX_LB_DATABASE_SQLITE_PRE_MIGRATE_BACKUP_MAX_FILES超出自动淘汰最旧的可用CODEX_LB_DATABASE_SQLITE_PRE_MIGRATE_BACKUP_ENABLED关闭。快照逻辑位于 app/db/backup.py升级主流程在 app/db/migrate.py。2. 数据库损坏了怎么救万一启动时完整性检查未通过codex-lb 提供了宿主级恢复命令思路是把能读的页面抢救出来生成一个新的、完整的数据库文件并顺手清理-wal、-shm等附属文件。核心实现见 app/db/recover.py。日常备份建议最稳的一条# 定期打包数据目录即可本地 tar -czf codex-lb-backup-$(date %F).tgz ~/.codex-lb/五、升级实战版本迁移与 Postgres 16 → 181. 应用版本升级Schema 迁移codex-lb 使用 Alembic 管理表结构服务启动时默认自动迁移CODEX_LB_DATABASE_MIGRATE_ON_STARTUP默认为True迁移过程受分布式锁保护多副本同时启动也不会互相踩踏。你也可以手动执行# 手动触发一次数据库升级自动先打快照 codex-lb-db upgrade # 升级后做一次体检 codex-lb-db check所有历史迁移脚本都在 app/db/alembic/ 下可追溯每一次表结构变化。2. Postgres 16 → 18 数据卷升级如果你在用 Compose 内置的 Postgres官方文档给出了标准的四步升级流程先停库 → 备份卷 → 跑pg_upgrade→ 重启docker compose --profile postgres stop postgres docker run --rm -v codex-lb-postgres-data:/var/lib/postgresql -v $PWD:/backup alpine \ tar -C /var/lib/postgresql -czf /backup/codex-lb-postgres-data-before-pg18.tgz . docker compose --profile postgres-upgrade run --rm postgres-upgrade docker compose --profile postgres up -d postgrespostgres-upgrade容器会对同一个命名卷执行一次性的pg_upgrade把数据目录原地升级到 Postgres 18 布局后自动退出。✅升级完成的应用启动、且codex-lb-db check通过之前请不要删除那份备份。六、数据留存别让日志无限膨胀请求日志会持续增长codex-lb 内置了数据留存data retention机制可以在面板的高级设置中配置保留周期过期日志由后台任务自动清理SQLite 与 PostgreSQL 行为一致。相关文档docs/database.md、docs/configuration.md。七、常见疑问速查问题答案SQLite 能扛住代理高并发写日志吗单机完全够用写路径有统一的 writer 串行化与 30s busy 超时保护换数据库会丢数据吗选型在空库阶段决定即可两者是两套独立存储不做在线互相迁移多副本必须用 PostgreSQL 吗推荐。SQLite 用文件锁多副本共享会互相阻塞Helm 部署官方组合就是 PostgreSQL 选主启动慢是因为在检查数据库可能是。若上次是干净关机则自动跳过否则quick模式会快速扫描 SQLite 文件总结默认 SQLite零配置、单文件备份~/.codex-lb/或 Docker 下/var/lib/codex-lb/目录即可多副本 / 集群用CODEX_LB_DATABASE_URL切到 PostgreSQL连接池默认值已调好升级别慌每次迁移自动打快照Postgres 大版本升级走postgres-upgradeprofile守住底线定期codex-lb-db check 定期打包数据目录数据永远有一手备份。 更多细节请阅读 docs/database.md 与 docs/reference/settings.md。【免费下载链接】codex-lbCodex/ChatGPT multiple account load balancer proxy with usage tracking, dashboard, and OpenCode-compatible endpoints项目地址: https://gitcode.com/gh_mirrors/co/codex-lb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表