navicat on-prem server 的团队协作元数据只能通过备份 /opt/navicat-onprem 目录实现,因其包含 data/、db/、config/ 三部分核心数据;“导出查询”仅保存 sql 文本,“备份数据库”仅导出远程库,均不涉及服务端元数据;备份须停服后 tar 打包,恢复需版本一致且完整覆盖目录。

Navicat On-Prem Server 的团队协作元数据无法通过“导出查询”或“备份数据库”功能备份——它只存在服务端的 /opt/navicat-onprem 数据目录里,必须直接备份该路径。
为什么不能用 Navicat 内置的“导出查询”或“备份数据库”?
导出查询只保存 SQL 文本,不包含:查询名称、分组结构、执行历史、变量绑定、BI 工作区布局、成员角色分配、项目权限策略、活动日志时间线。这些全属于 On-Prem Server 自身的元数据,和你连的 MySQL 或 PostgreSQL 无关。
你用 Navicat 客户端对某个项目点“备份数据库”,实际只是把那个远程库 dump 成 SQL 文件,跟 On-Prem Server 的协作状态完全脱钩。
真正要备份的路径是 /opt/navicat-onprem
这个目录由安装包默认创建,里面存着:
-
data/:含所有项目定义、代码段、BI 工作区 JSON 结构、用户角色映射 -
db/:嵌入式 SQLite 数据库,存活动日志、连接配置加密摘要、组织账户同步状态 -
config/:server.conf里的监听端口、JWT 密钥、反向代理信任头设置
注意:/opt/navicat-onprem 不能被移动或软链——升级脚本硬编码读取该路径,改了会导致项目列表清空、角色失效。
备份时必须停服务 + 压缩整个目录
直接拷贝运行中的 /opt/navicat-onprem 有风险,SQLite 可能写入一半导致恢复失败。正确流程是:
- 执行
sudo /opt/navicat-onprem/stop.sh停止服务(别用 kill -9) - 用
tar -czf navicat-onprem-backup-$(date +%Y%m%d).tar.gz /opt/navicat-onprem打包 - 校验 tar 包完整性:
tar -tzf navicat-onprem-backup-20260907.tar.gz | head -n5 - 恢复时先停目标服务,再
rm -rf /opt/navicat-onprem && tar -xzf backup.tar.gz -C /
不要只备份 db/ 子目录——缺了 data/ 里的项目结构,恢复后能看到用户但看不到任何可编辑的 BI 工作区或代码段。
跨版本恢复大概率失败,别跳过版本核对
Navicat On-Prem Server 升级时会自动迁移 db/ 的表结构,但旧版备份在新版上直接解压可能触发启动报错:database schema version mismatch。每次备份文件名里必须带上服务端版本号,例如 navicat-onprem-backup-20260907-v1.8.2.tar.gz。官方不提供向下兼容的元数据迁移工具。











