Lingarr数据库选型指南:MySQL/PostgreSQL/SQLite三种方案对比与配置
【免费下载链接】lingarrLingarr is an application that supports both local and SaaS translation services to translate subtitle files into a specified target language. With automated translation options, Lingarr simplifies translating subtitles.项目地址: https://gitcode.com/gh_mirrors/li/lingarr
Lingarr是一款开源的字幕翻译工具,支持接入DeepL、OpenAI、Gemini等十多种翻译服务,可自动将字幕文件翻译成指定语言。在使用Lingarr时,数据库选型是部署环节中最关键的决策之一:它直接关系到安装难度、数据安全与长期运行稳定性。本文将从零开始,对比Lingarr支持的MySQL、PostgreSQL与SQLite三种数据库方案,并给出最实用的Lingarr数据库配置方法,帮助你一次部署成功。
为什么需要关注Lingarr数据库选型?
Lingarr不仅存储电影、剧集等媒体信息,还会记录每一次字幕翻译请求、翻译进度事件以及统计数据。这些数据在批量翻译时会高频读写,选错数据库轻则性能下降,重则导致字幕翻译任务中断。因此,在安装前花5分钟了解三种方案,远比事后迁移省心。
三种数据库方案速览:一张表看懂差异
| 对比维度 | MySQL(MariaDB) | PostgreSQL | SQLite |
|---|---|---|---|
| 部署方式 | 独立容器服务 | 独立容器服务 | 嵌入式,随应用运行 |
| 推荐场景 | 家庭媒体库、多设备访问 | 追求极致稳定与兼容性 | 单机轻量部署、低配置设备 |
| 资源占用 | 中等 | 中等偏高 | 极低 |
| 备份方式 | 需要额外配置 | 需要额外配置 | 直接复制文件即可 |
| 配置复杂度 | 中 | 中 | 低 |
| Lingarr默认方案 | ✅ 默认 | 支持 | 支持 |
从表格可以看出,Lingarr默认使用MySQL,同时也完整支持PostgreSQL与SQLite。你只需通过一个环境变量即可切换,无需修改任何业务代码。
如何选择最适合你的数据库方案?
选MySQL(MariaDB):零成本上手,官方默认
Lingarr的Docker部署文档默认使用MySQL,相关的迁移脚本、健康检查配置最成熟。如果你已有NAS或软路由上的MariaDB/MySQL实例,直接复用是最省事的选择。需要留意的是,Lingarr默认连接的3306端口,实际开发配置里映射为宿主机1433端口,避免冲突。
选PostgreSQL:数据严谨性优先
PostgreSQL对时间戳、复杂查询的支持更完善。Lingarr在PostgreSQL下会自动将DateTime字段转换为UTC存储(见LingarrDbContext.cs),避免时区混乱问题。适合需要长期保留翻译记录、注重数据一致性的用户。
选SQLite:单机轻量部署的首选
SQLite无需独立数据库容器,数据就是一个本地文件,天然适合树莓派、低功耗NAS这类设备。Lingarr为SQLite做了专门的WAL模式优化(详见下文),即使没有数据库服务也能稳定运行。
Lingarr数据库配置核心:环境变量详解
Lingarr的所有数据库配置都通过环境变量完成,核心变量如下:
| 环境变量 | 说明 | 示例 |
|---|---|---|
DB_CONNECTION | 数据库类型,可选mysql、postgresql、sqlite | mysql |
DB_HOST | 数据库主机名(MySQL/PostgreSQL必填) | lingarr-db |
DB_PORT | 数据库端口 | 3306/5432 |
DB_DATABASE | 数据库名称 | lingarr |
DB_USERNAME | 数据库用户名 | lingarr |
DB_PASSWORD | 数据库密码 | 自定义强密码 |
SQLITE_DB_PATH | SQLite数据库文件路径 | local.db |
DB_HANGFIRE_SQLITE_PATH | 后台任务库路径(Hangfire) | /app/config/Hangfire.db |
这些变量的解析逻辑统一封装在DatabaseConfiguration.cs中,三种数据库共享同一套参数体系,切换时只需改动DB_CONNECTION。
MySQL配置方法:最快速的Lingarr数据库安装步骤
使用Docker Compose部署Lingarr + MariaDB是最快的配置方法,只需两步:
第一步:配置数据库服务
lingarr-db: image: mariadb:latest restart: unless-stopped environment: - MYSQL_DATABASE=lingarr - MYSQL_USER=lingarr - MYSQL_PASSWORD=你的强密码 - MYSQL_ROOT_PASSWORD=你的强密码 volumes: - /path/to/db:/var/lib/mysql healthcheck: test: "mariadb $$MYSQL_DATABASE -u$$MYSQL_USER -p$$MYSQL_PASSWORD -e 'SELECT 1;'" interval: 10s timeout: 5s retries: 5第二步:在Lingarr服务中声明数据库连接
lingarr: image: ghcr.io/lingarr-translate/lingarr:latest environment: - DB_CONNECTION=mysql - DB_HOST=lingarr-db - DB_PORT=3306 - DB_DATABASE=lingarr - DB_USERNAME=lingarr - DB_PASSWORD=你的强密码 depends_on: lingarr-db: condition: service_healthy⚠️ 务必使用healthcheck+depends_on组合。Lingarr启动时就会执行数据库迁移,若数据库尚未就绪会导致首次迁移失败,这一点在官方文档installation.md中也有特别提示。
PostgreSQL配置方法:稳定可靠的替代方案
PostgreSQL的配置与MySQL几乎一致,只需修改镜像和端口:
lingarr-db: image: postgres:16-alpine restart: unless-stopped environment: - POSTGRES_DB=lingarr - POSTGRES_USER=lingarr - POSTGRES_PASSWORD=你的强密码 healthcheck: test: ["CMD-SHELL", "pg_isready -U lingarr -d lingarr"] interval: 10s timeout: 5s retries: 5Lingarr侧的改动只有两处:
- DB_CONNECTION=postgresql - DB_PORT=5432其余变量保持不变。Lingarr会自动识别postgres与postgresql两种写法,连接字符串会带上Host、Port、Username、Password等标准参数,无需手工拼接。
SQLite配置方法:三步完成轻量部署
SQLite是三种方案中配置最简单的,连数据库容器都不需要:
lingarr: image: ghcr.io/lingarr-translate/lingarr:latest environment: - DB_CONNECTION=sqlite - SQLITE_DB_PATH=local.db volumes: - /path/to/config:/app/config只需三步:设置DB_CONNECTION=sqlite、指定数据库文件名、挂载配置目录。Lingarr会把local.db自动放到容器内的/app/config/目录下,与配置文件一同持久化,备份时直接复制整个配置目录即可。
SQLite专属优化:WAL模式让翻译更流畅
字幕翻译是典型的"多读多写"场景,SQLite默认的日志模式容易出现锁等待。Lingarr通过内置的SqlitePragmaConnectionInterceptor.cs在每次连接时自动执行三条PRAGMA优化:
journal_mode=WAL:启用预写日志,读写互不阻塞busy_timeout=120000:写锁等待超时延长到120秒,避免大批量翻译时误报锁错误synchronous=NORMAL:在性能与数据安全间取得平衡
这意味着即使你选择轻量的SQLite,也能稳定扛住整季剧集的字幕批量翻译任务。
常见问题与排错指南
Q1:启动时提示DB_CONNECTION is not set?说明环境变量未生效。检查DB_CONNECTION是否设置,可用值只有mysql、postgresql、sqlite三种。
Q2:首次启动时数据库迁移失败?绝大多数情况是数据库容器尚未就绪。请为数据库服务配置健康检查,并在Lingarr服务上使用depends_on.condition: service_healthy等待其就绪。
Q3:SQLite数据库文件存在哪里?默认在容器内/app/config/local.db,注意把/app/config挂载到宿主机目录,否则容器重建后数据会丢失。
Q4:三种数据库之间能互相切换吗?Lingarr的数据库迁移由FluentMigrator统一管理(见MigrationConfiguration.cs),理论上支持切换,但跨库迁移涉及数据导出导入,建议在部署初期就确定方案,避免后期迁移成本。
总结:一张决策清单帮你收尾
- 家庭NAS、已有数据库实例→ 选 MySQL/MariaDB,配置最省心
- 注重数据一致性、需要长期保留翻译记录→ 选 PostgreSQL
- 树莓派、低配设备、单机使用→ 选 SQLite,零依赖
- 无论选哪种→ 务必设置强密码、挂载数据卷、配置健康检查
Lingarr的数据库选型并不复杂,核心就是理解DB_CONNECTION这一个变量。希望这份对比与配置指南能帮你一次性部署成功,早日享受自动化字幕翻译的乐趣!🚀
【免费下载链接】lingarrLingarr is an application that supports both local and SaaS translation services to translate subtitle files into a specified target language. With automated translation options, Lingarr simplifies translating subtitles.项目地址: https://gitcode.com/gh_mirrors/li/lingarr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考