如何用 dectl backup 和 restore 备份并恢复 DataEase 数据?
【免费下载链接】dataease🔥 人人可用的开源 BI 工具,数据可视化神器。An open-source BI tool alternative to Tableau.项目地址: https://gitcode.com/GitHub_Trending/da/dataease
DataEase 以 Docker Compose 方式安装在 Linux 服务器上,运行目录默认是/opt/dataease2.0(DE_BASE默认为/opt,见 install.conf)。当需要为升级、卸载或迁移做数据备份时,安装过程安装的dectl控制脚本提供了backup和restore两个子命令:前者把整个运行目录打成 tar.gz 包,后者把备份包解压回运行目录并重启服务。本文基于 installer/dectl 的实际行为,说明这两条命令的执行方式、输出判断和边界。
备份前先确认这些条件
- dectl 支持 backup 命令:卸载脚本 uninstall.sh 中明确提示“如需备份 DataEase 数据,请执行 dectl backup 进行备份。如您的 dectl 命令不支持 backup 命令,请升级版本。”执行前可用
dectl --help确认命令列表中包含backup和restore,不包含则说明当前 dectl 版本过旧。 - 不要在安装目录内执行备份:backup 逻辑首先检查工作目录,如果当前目录是
/opt/dataease2.0或其子目录,会直接报错“当前目录为 DataEase 安装目录,请切换到其他目录后再执行备份操作!”并退出。原因是备份文件生成在当前工作目录,若在安装目录内执行会与打包过程相互干扰。 - 备份可能停止服务:脚本给出的建议是“如需备份 DataEase 数据,建议您先停止 DataEase 服务,以保证备份数据的完整性”。停启服务走
service dataease stop/service dataease start,对应 systemd 服务 dataease.service(其ExecStart/ExecStop即dectl start/dectl stop,以 root 运行),因此 backup/restore 需要以 root 执行。
执行备份:dectl backup
交互模式
dectl backup执行后会先输出建议文案,然后询问:
如需备份 DataEase 数据,建议您先停止 DataEase 服务,以保证备份数据的完整性。 即将备份 DataEase 数据,是否需要停止 DataEase 服务? [Y/n]- 回答
y:先执行service dataease stop,打包完成后执行service dataease start恢复服务; - 回答
n:不停服直接备份,输出“不停服进行备份”; - 其他输入:输出“无效输入...”并退出。
直接停服备份
dectl backup stopstop是脚本唯一识别的参数,传入后跳过询问、先停服务再备份。需要注意:传入其他任意参数既不会停服,也不会触发交互询问,脚本会直接按“不停服”方式打包。
备份包内容
backup 的核心命令是:
tar --exclude=logs/dataease -zcf $backup_file_name -C $DE_RUNNING_BASE .即把运行目录/opt/dataease2.0下的全部文件打包,仅排除logs/dataease(历史日志)。文件名按执行时间自动生成,格式为dataease-backup-YYYYMMDD_HHMMSS.tar.gz,生成在执行命令时所在的工作目录中。
结果判断
- 成功输出:
备份成功,备份文件 : <当前目录绝对路径>/dataease-backup-YYYYMMDD_HHMMSS.tar.gz,其中的时间和路径以实际执行结果为准,请把该绝对路径记录下来,restore 时要用; - 失败输出:
备份失败,脚本退出。
恢复备份:dectl restore
用法为:
dectl restore <备份文件路径>例如(/root下存放了前面生成的备份文件):
dectl restore /root/dataease-backup-20260912_030000.tar.gz<备份文件路径>填相对或绝对路径,脚本会做两处前置检查:参数为空时报“未指定需要恢复的备份文件!”,路径不是已存在的文件时报“未找到备份文件 <路径>!”,两种情况都不会执行恢复。
恢复流程包含明确的数据删除动作,执行前必须先确认:
- 已了解当前系统状态会被备份包覆盖;
- 目标文件是你要恢复的那份备份。
通过文件检查后,脚本按顺序执行:
service dataease stop # 停止 DataEase 服务 mkdir -p $DE_RUNNING_BASE # 安装目录不存在时先创建 rm -rf $DE_RUNNING_BASE/data/mysql/* # 删除当前 MySQL 数据目录内容 tar -zxf $target --directory=$DE_RUNNING_BASE # 解压备份包回运行目录 service dataease start # 启动服务也就是说/opt/dataease2.0/data/mysql/*会先被清空,再用备份包内容覆盖回运行目录。由于备份包含整个安装目录,这个流程同样适用于把备份恢复到只装了 dectl 和 Docker 环境的新服务器:目录不存在时脚本会先创建,解压后运行目录即恢复为备份时的状态。恢复完成后服务会自动启动,无需再手动执行dectl start。
验证备份与恢复结果
- 备份验证:以脚本输出“备份成功,备份文件 : …”为准,并可到该路径确认文件存在;执行前可用
dectl status查看运行目录与磁盘占用,对备份体积有预估依据(该命令会输出 Docker 目录、日志目录和运行目录的du/df结果)。 - 恢复后服务状态:
dectl start内置健康检查(_healthcheck),最多等待 90 秒轮询容器状态,可能输出三种结果:DataEase 服务状态 : 正常运行—— 容器 running 且健康检查 healthy;DataEase 服务状态 : 无法访问—— 容器状态异常,脚本直接退出;【警告】服务在等待时间内未完全启动!请稍后使用 dectl status 检查服务运行状况。—— 90 秒内未达到 healthy,需要稍后自行检查。
- 事后检查:执行
dectl status查看各容器运行状态和磁盘占用;社区版部署的访问地址为http://服务器IP:8100(社区模式使用DE_PORT,install.conf 中默认 8100),浏览器访问该地址确认数据已恢复。
限制与注意
- 备份包体积取决于安装目录大小,生成位置是执行命令的当前目录,执行前确认该目录所在磁盘有足够空间。
- 文档未说明配置外部数据库(
DE_EXTERNAL_MYSQL=true)时备份包对数据库数据的覆盖情况,采用该部署方式时不要默认备份包等价于全量数据备份。 dectl restore一次只接受一个 tar.gz 文件路径;文件不存在或参数为空时命令直接失败退出。- 备份不停服时(回答
n或传入非stop参数),文档只给出“建议您先停止 DataEase 服务,以保证备份数据的完整性”的提示,未给出进一步的完整性判定方式。
【免费下载链接】dataease🔥 人人可用的开源 BI 工具,数据可视化神器。An open-source BI tool alternative to Tableau.项目地址: https://gitcode.com/GitHub_Trending/da/dataease
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考