Skeyevss FAQ:数据库 MySQL 与 SQLite 选择与切换
1. 何时用 SQLite
适合:单机试用、开发本机、小规模验证。优点是无独立数据库进程、部署简单;缺点是并发写入能力有限,不适合多实例横向扩展与高吞吐生产。
2. 何时用 MySQL
适合:生产环境、多服务实例、需要主从或备份策略 的场景。业务数据与设备状态写入集中,便于监控、迁移与权限审计。
3. 环境变量如何切换
在 .env.local / .env.prod 中通过 SKEYEVSS_DATABASE_TYPE 选择 sqlite 或 mysql(具体枚举以项目模板为准)。切换到 MySQL 时,还需配置:
- 主机、端口、库名、用户、密码;
- 连接池与超时(若模板中提供);
- 确保 DB RPC 或依赖数据库的服务使用同一套连接配置。
修改后需 重启 依赖数据库的进程。
4. 迁移注意点
从 SQLite 迁到 MySQL 不是简单改变量:
- 需要 Schema 一致 与数据导出导入(可用官方/自建迁移脚本);
- 注意字符集(推荐
utf8mb4)与排序规则,避免国标 ID、中文名称乱码或索引异常; - 迁移期间建议 停写或只读窗口,防止双写不一致。
5. 常见故障
- 连接拒绝:MySQL 未监听
0.0.0.0或 Docker 网络未互通; - 认证失败:用户 Host 限制为
localhost而容器从内网 IP 接入; - Too many connections:连接池配置过大或泄漏,需结合监控调优。
6. 运维建议
生产环境对 MySQL 做定期备份、慢查询分析与磁盘容量告警;SQLite 文件需纳入备份路径并避免多进程同时写同一文件。
选型本质是 规模与运维成本 的权衡;上线前在预发环境用与生产相同的数据库类型压测最稳妥。