初始化、备份和升级
本文适用于 SurveyKing 开源版 v1.13.0。无论使用 Windows、Docker 还是手动部署,第一次启动后都通过 /setup 完成初始化。
升级、迁移或导入备份前,先把备份下载到另一台电脑或对象存储。只保存在原服务器上的备份无法应对磁盘损坏和误删目录。
第一次初始化
打开部署地址;未初始化的系统会自动进入:
http://你的访问地址/setup
选择数据库
| 数据库 | 推荐场景 | 需要额外准备 |
|---|---|---|
| H2 内置数据库 | 个人、演示、办公室或教室局域网轻量使用 | 不需要 |
| MySQL 8 | 公网服务、长期运行、多人频繁使用 | 一个空数据库及其账号 |
Docker Compose 文档中的 MySQL 信息填写如下:
| 配置项 | 值 |
|---|---|
| 数据库地址 | mysql |
| 端口 | 3306 |
| 数据库名 | surveyking |
| 用户名 | root |
| 密码 | .env 中的 MYSQL_ROOT_PASSWORD |
点击“测试连接”,通过后再初始化。v1.13.0 会自动创建表并写入初始数据,不要再手工导入 init-mysql.sql。
完成系统设置
初始化向导还会设置系统名称、默认语言、是否开放注册以及可选的 AI 服务。AI 可以暂时关闭,之后在“系统管理 → 系统设置 → AI 设置”中配置。
目前支持简体中文、繁体中文、英语、日语、韩语、德语、法语和泰语。Windows 启动器与 Web 系统使用相同的八种语言。
默认管理员为:
| 项目 | 默认值 |
|---|---|
| 账号 | admin |
| 密码 | 123456 |
首次登录会要求设置更安全的密码。新密码必须为 8~16 位,同时包含大写字母、小写字母和数字,并且只能使用字母和数字。
选择 MySQL 后,初始化完成时应用会自动重启;等待一会儿再刷新页面即可。
应用内备份
管理员进入“系统管理 → 系统设置 → 数据备份”,可以导出或导入备份。
导出的 ZIP 包主要包含:
manifest.json:版本和备份清单;data/*.ndjson:数据库表数据;files/:问卷中上传的图片和附件。
导入会覆盖目标系统中的对应表数据和文件。建议目标系统与来源系统版本一致,或使用更高版本;导入完成后检查用户、项目、答卷和附件。
导入不是“合并数据”。执行导入前,也要先为目标系统导出一份备份。
文件级备份
应用内备份便于跨数据库迁移;文件级备份则适合完整保留运行环境。复制数据库目录前先停止 SurveyKing,避免得到不一致的文件。
| 部署方式 | 至少备份这些内容 |
|---|---|
| Windows | %LOCALAPPDATA%\SurveyKing 整个目录 |
| Docker 单容器(H2) | 宿主机的 config/、db/、files/ |
| Docker Compose(MySQL) | config/、files/、mysql/data/;建议同时保存 Compose 文件和 .env |
| Linux/宝塔手动部署 | 程序工作目录下的 config/、db/、files/;使用外部 MySQL 时另做数据库备份 |
logs/ 通常不影响恢复,但排查故障时很有价值,也可以一起保存。
升级
先阅读开源版更新日志,导出应用备份并保存文件级备份,然后按部署方式升级。
Windows
- 在托盘菜单中退出 SurveyKing,确认服务已经停止。
- 运行新版安装包,安装到原目录或新的程序目录。
- 启动桌面快捷方式,确认原数据和附件仍然存在。
程序安装目录与 %LOCALAPPDATA%\SurveyKing 数据目录相互独立,因此覆盖升级不会主动删除业务数据。
Docker Compose
cd /opt/surveyking
docker compose pull
docker compose up -d
docker compose ps
不要执行 docker compose down -v,也不要删除挂载目录。
Docker 单容器
拉取新镜像,停止并删除旧容器,再使用原来的四个挂载目录创建同名容器。容器本身可以重建,宿主机上的数据目录不能删除。
Linux、宝塔和源码部署
停止服务,替换为新构建的 JAR,再启动服务。保持原来的工作目录,否则相对路径下的 config/、db/ 和 files/ 会发生变化。
迁移到新机器或新数据库
推荐流程:
- 在旧系统导出应用备份。
- 在新机器部署相同或更新版本的 SurveyKing。
- 访问新系统的
/setup,选择目标数据库并完成初始化。 - 登录新系统并导入备份。
- 核对数据、附件、邮件和 AI 等外部服务配置。
- 验证完成后再切换域名或停止旧系统。
这套方式同样可以把 H2 数据迁移到 MySQL。
关于旧版本 SQL 脚本
全新安装 v1.13.0 不需要手工执行初始化 SQL。只有从很早的版本原地升级时,才可能需要按版本顺序执行历史迁移脚本;请以版本更新说明为准,不要把历史脚本用于全新数据库。