DolphinDB 使用指南第四期 | 运维篇:99% 的故障,都能提前避免

0 阅读4分钟

很多开发者在本地跑通了 DolphinDB 之后,就觉得万事大吉了。但真正上了生产环境,才发现运维才是最容易翻车的地方——磁盘悄悄满了、关机没确认进程、随手删了个目录……本期我们把最常见的运维坑和日常管理问题整理出来,希望你看完之后,可以提前避坑,不再需要事后补救。

安全关机,别想当然

DolphinDB 的安全关机需要执行 stopSingle.sh 或 stopAllNode.sh 脚本文件,而不是立刻停止进程,在关闭前会先完成事务刷盘,所以关机过程可能比你预期的慢。

关键点: 执行关机命令后,务必确认进程已完全退出,再执行重启。如果进程还没退出就重启,节点端口仍处于绑定状态,会导致重启失败。

磁盘空间,一定要监控

磁盘问题是最常见、也最隐蔽的“生产事故触发器”。磁盘满了会发生什么?写入失败、数据不完整、系统卡死——而且往往很难快速恢复。

建议将磁盘使用率纳入监控体系,设置合理的告警阈值,在达到阈值时及时介入,定期清理历史日志、临时文件、无用表或分区,不要等到磁盘真的满了再处理。

数据迁移:用对工具,别走捷径

迁移数据时,有人会直接拷贝底层数据文件——这是个危险操作。底层文件的直接拷贝容易造成数据不一致或元数据缺失,迁移后的数据可能无法正常读取。

正确做法:

  • 备份:使用 backup 系列函数

  • 恢复/导入:使用 restore 系列函数

具体可参考教程:数据备份以及恢复

docs.dolphindb.cn/zh/tutorial…

系统文件:禁止随意修改或删除

DolphinDB 的部署目录及以下配置的数据存储目录,均为系统运行的核心依赖,不可随意改动:

  • dfsMetaDir

  • chunkMetaDir

  • volumes

  • TSDBRedoLogDir

  • persistenceDir

  • computeNodeCacheDir

配置数据存储路径时,统一在路径中加入 DolphinDB 子目录,并结合节点别名()进行区分。其中, 通常表示节点的唯一标识。如果多个节点共用同一个目录,可能会导致数据覆盖、元数据混乱,甚至引发服务异常。因此,建议在所有数据目录(如 chunkMetaDir、dataDir 等)中都统一引入 <ALIAS>,确保各节点之间完全隔离。

例如:

chunkMetaDir=/ssd/ssd1/DolphinDB/chunkMeta/<ALIAS>

这样一眼就能识别出哪些是 DolphinDB 的数据目录,大大降低误操作风险。

危险操作清单:做之前先咨询技术支持

以下操作一旦出错,轻则节点无法启动,重则数据丢失。强烈建议在执行前咨询 DolphinDB 技术人员,并在其指导下进行:

  • 磁盘操作:挂载、卸载、扩容、缩容、更换

  • 修改 hostname

  • 修改 IP

  • 修改数据存储目录配置:volumes、dfsMetaDir、chunkMetaDir、redoLogDir、TSDBRedoLogDir

日常管理 Q&A

1.升级 server 或更新 license,必须重启集群吗?

  • 升级 server:必须重启。

  • 更新 license:分以下两种情况

  • 在线更新:使用 updateLicense 函数,或 ops 运维库中的 updateAllLicenses 函数,无需重启。注意在线更新有一定的限制条件,详见官方文档「高可用集群部署与升级 — 授权许可文件过期更新」。

  • 离线更新:替换 license 文件后重启即可。

2.普通用户怎么改自己的密码?

changePwd(oldPwd, newPwd)

3.怎么统计数据库或数据表占用的磁盘空间?

使用 ops 运维库中的 getTableDiskUsage 函数。

use ops
getTableDiskUsage("dfs://your_database""your_table")

4.怎么查看用户的内存使用情况?

getSessionMemoryStat()

返回各 session 的内存占用详情,排查内存异常时非常实用。


运维的很多问题,并不是“技术难”,而是发生时已经太晚了。你可以不记住所有细节,但至少要建立三个意识:

  1. 不确定的操作,不要直接在生产做

  2. 系统目录,不要手动碰

  3. 磁盘和资源,一定要监控

如果你在实际使用中遇到过“经典事故”,也欢迎分享,我们可以在后续专题里继续补充。