SQLite 部署与备份:安装时选择单文件数据库
本文要点
安装时选择 SQLite:文件位置、权限、备份恢复与切换 MySQL 的时机。
SQLite 不是“简化版玩具”。对于单机官网、教程站和中小内容站,它足够稳定,而且把部署复杂度降到了最低:一个进程、一个数据库文件、一份上传目录。
数据库文件在哪里
storage/database/djm.sqlite
这个路径由 database.path 决定。通过 shared/storage 软链接,实际文件通常位于 shared/storage/database/djm.sqlite。
配置写法
database:
driver: sqlite
path: storage/database/djm.sqlite
prefix: djm_
SQLite 模式下不需要 host、port、user、password。运行用户必须对数据库文件所在目录有读写权限,否则启动时会报 unable to open database file。
备份
最直接的方式是停服后复制文件:
systemctl stop djmcms # 或使用宝塔 Go 项目停止
cp storage/database/djm.sqlite /root/backup/djm-$(date +%F).sqlite
systemctl start djmcms
后台也提供 SQLite 备份入口,会生成加密快照,适合在线备份和异地保存。备份时同时复制 shared/storage(上传文件)与 shared/configs(站点配置)。
恢复
systemctl stop djmcms
cp /root/backup/djm-2026-11-08.sqlite storage/database/djm.sqlite
chown www:www storage/database/djm.sqlite
systemctl start djmcms
SQLite 默认开启 WAL。停服后复制主文件即可;如果必须在线复制,请同时复制 djm.sqlite、djm.sqlite-wal 与 djm.sqlite-shm,或直接使用后台的 SQLite 备份。
恢复后访问 /health/ready 确认数据库可读,再登录后台检查内容与附件。
什么时候切换 MySQL
- 需要多个应用实例同时写入同一份数据。
- 内容量、附件索引或访问量明显增长,SQLite 单写者模型成为瓶颈。
- 团队已有成熟 MySQL 运维与备份体系。
切换时修改 database.driver: mysql 并补齐连接参数,重新执行迁移与数据导入。切换前务必在预发环境验证。
常见错误
| 错误 | 原因 |
|---|---|
unable to open database file | 目录不存在或运行用户无写权限 |
database is locked | 同时有多个写进程,检查是否重复启动服务 |
database.driver must be mysql or sqlite | driver 拼写错误,只接受这两个值 |
讨论
发表评论