写点什么

时序数据库 TDengine 备份全家桶实操解析:命令行 + 可视化一篇看懂

作者:TDengine
  • 2025-07-14
    北京
  • 本文字数:4183 字

    阅读完需:约 14 分钟

一旦数据丢失,系统崩溃带来的可能不仅是业务中断,更可能是不可逆的损失。如何做到“有备无患”?时序数据库 TDengine 提供了四种覆盖广泛场景的数据备份方案。本文将带你深入了解每种方法的特性与操作要点,教你选对备份策略,也能快速恢复数据。

数据备份工具 taosdump

taosdump 是 TDengine 社区版首选的数据备份工具(企业版同样支持),其核心特点是操作简便、支持多线程处理,且备份文件采用 Apache Avro 格式(大数据领域通用数据交换格式),便于向其他系统共享数据。工具支持跨平台连接远程服务器执行备份 / 恢复操作,兼容 Native、Restful、WebSocket 等多种连接协议。


优缺点分析:

  • 优点:操作简单且社区版支持,导出格式为开放式 avro 格式。

  • 缺点:功能选项相对基础,未覆盖复杂场景需求。

工具获取

随企业版 / 社区版安装包内置,无需额外下载。

备份操作

  • 全库备份(包括系统库)

命令示例:taosdump -A -o /data/backup-A 表示全库,-o 指定备份目录)。

  • 指定备份库或表

支持单库多表备份,不支持多库。命令示例:taosdump -D db01 -o /data/backup/db01-D 指定数据库名)。

  • 指定时间段备份

支持按时间区间筛选数据,未指定则备份全量。命令示例:taosdump -S '2024-01-01T00:00:00+0800' -E '2024-01-02T00:00:00+0800' -D db01 -o /data/backup/time_range-S 和 -E 分别指定起始和结束时间)。

  • 指定线程备份

支持自定义线程加速备份,默认 8 线程。命令示例:taosdump -T 32 -A -o /data/backup(-T 表示备份线程数)。

  • 只备份元数据

命令示例:taosdump -s -D db01 -o /data/backup/meta-s 表示仅元数据)。

恢复操作

  1. 全量恢复 命令示例:taosdump -i /data/backup-i 指定备份目录,恢复所有数据)。

  2. 恢复时修改库名 命令示例:taosdump -i /data/backup -W "db01=new_db01"(将原库 db01 恢复为 new_db01)。

  3. 指定线程恢复 命令示例:taosdump -i /data/backup -T 16(使用 16 线程加速恢复)。

  4. 指定数据库恢复 操作步骤:全库备份后,删除备份目录中不需要恢复的数据库文件夹(如 db02),保留 db01 文件夹,再执行 taosdump -i /data/backup,仅恢复 db01

  5. 元数据恢复 若目标库表已存在,元数据不会覆盖,仅保留现有结构。

表结构有变动的备份/恢复

  • TDengine 3.3.6.0 之前版本:若目标库表结构有变动(如增删列),直接恢复会失败。需通过 “旧备份导入新库→新库导出新备份→新备份导入目标库” 迂回恢复。

  • TDengine 3.3.6.0 及之后版本:支持表结构增删列(列名不变仅类型修改仍不支持),恢复时新增列以 null 填充。

数据管道工具 taosX

taosX 是 TDengine 企业版专用的数据管道工具,定位为 “零代码数据集成平台”,核心功能覆盖数据接入、同步、备份、恢复及迁移。支持跨集群 / 实例的异步数据复制,可作为桥梁对接 TDengine 与第三方数据源(如关系型数据库、消息队列等)。


优缺点分析:

  • 优点:功能全面(支持增量备份、断点续备等)、速度快、导出格式多样(CSV/Parquet 列存)。

  • 缺点:社区版不支持、使用复杂度高。

工具获取

随企业版安装包内置,部分生态对接组件需单独安装。

核心功能

taosX 功能丰富,覆盖数据全生命周期管理,具体包括:

  • 数据备份与恢复:支持增量备份 / 恢复(3.3.x + 版本支持图形化操作)、断点续备,备份文件格式支持 CSV 和 Parquet(列存)。

  • 数据迁移与同步 :

  • 支持基于订阅(TMQ)的实时数据同步(3.0 + 版本)和基于 SELECT 的历史数据迁移(2.4+/2.6+/3.0 + 版本)。

  • 支持历史数据(history 模式)、实时数据(realtime 模式)、混合(both 模式)迁移。

  • 任务支持进度保存,异常恢复后可续传。

  • 跨集群复制 :支持数据库或(超级)表的全量 / 增量复制,可选择列级复制、模式(schema)复制,表名支持正则匹配。

  • 外部数据源接入 :

  • 关系型数据库:MySQL、Oracle、PostgreSQL、Microsoft SQL Server。

  • 时序数据库:OpenTSDB、InfluxDB。

  • 工业实时数据库:PI System、Aveva Historian。

  • 消息队列:Kafka。

  • 其他常见协议:OPC-UA/DA、MQTT。

  • 数据转换(Transform):支持对输入流进行过滤、映射、聚合等处理,处理后数据流入目标端。

  • 双活部署管理 :通过 taosx replica 系列命令管理主备集群同步任务,支持任务启动、停止、重启及进度查看 。

  • 可视化操作 :可通过 taos-explorer(Web 界面)配置数据迁移任务、监控任务状态(如数据写入量、延时等)。

备份/恢复步骤:

一、备份步骤

  • 配置备份任务参数(命令行方式)

  • --from 参数 (源端配置):

  • auto.offset.reset=latest&experimental.snapshot.enable=false:不备份历史数据,从当前 WAL 最新位置开始备份。

  • upcoming:指定下次执行备份任务的时间(如now表示立即开始)。

  • interval:两次备份任务的间隔(如interval=60s表示每 60 秒执行一次)。

  • self.repeat=true:开启持续重复调度。

  • --to 参数 (目标端配置):

  • move.to:备份文件写入完成后,移动到指定目录(如/data/send)。

  • 启动备份任务 使用nohup方式后台启动备份任务,示例命令(以跨隔离场景为例):

nohup taosx backup     --from "auto.offset.reset=latest            &experimental.snapshot.enable=false            &upcoming=now            &interval=60s            &self.repeat=true"     --to "move.to=/data/send"         > backup.log 2>&1 &
复制代码

此命令会持续生成增量备份文件到本地路径,并在完成后移动至 /data/send/ 目录。

  • 图形化操作(3.3.x + 版本) 通过taos-explorer(Web 界面,访问地址如http://<集群IP>:6060)配置备份任务:

  • 进入 “系统管理 - 备份” 页面,点击 “新增备份”。

  • 配置参数:备份周期(每天 / 每 7 天 / 每 30 天)、目标数据库(需wal_retention_period>0)、备份目录(如/root/data_backup)。

  • 点击 “确定” 后任务启动,支持监控任务状态(数据写入量、延时等)。

二、恢复步骤

  • 配置恢复任务参数(命令行方式)post_action=del :恢复完成后自动删除备份文件(避免重复恢复)。

  • 启动恢复任务 在目标集群使用nohup启动恢复任务,示例命令:

nohup taosx restore --from "/data/receive" --post_action=del > restore.log 2>&1 &
复制代码

此命令会监听接收目录(如/data/receive),解析并写入增量备份文件到目标 TDengine 集群。

  • 图形化操作(3.3.x + 版本) 在taos-explorer的 “系统管理 - 备份” 页面中:

  • 进入 “备份文件” 列表,选择需恢复的备份点。

  • 点击 “数据恢复” 按钮,选择目标数据库后完成恢复。

数据库管理工具 taos-CLI

taos-CLI 工具是 TDengine 自带的数据库管理工具(社区版及企业版均支持),其备份及恢复功能主要通过 CSV 文件实现,工具适合小数据量临时备份场景,操作简单但性能有限,需结合实际需求选择使用。


优缺点分析:

  • 优点:操作简单,可灵活备份任意查询结果(如特定子表、部分列或自定义查询结果)。

  • 缺点:仅支持单线程操作,速度较慢,适用于小数据量的临时备份。

工具获取

taos-CLI 工具内置于 TDengine 社区版及企业版中,无需额外安装。

备份操作

备份时主要通过taos命令行的重定向符号>>将查询结果导出为 CSV 文件,支持以下场景:

  • 子表整体备份 :直接导出子表的所有数据。 示例(导出子表child_table):

SELECT * FROM child_table >> /path/to/backup.csv
复制代码
  • 查询结果备份 :导出特定查询条件的结果(如时间范围、过滤条件)。 示例(导出 2025-06-01 至 2025-06-30 的数据):

SELECT * FROM sensor_data       WHERE ts BETWEEN '2025-06-01' AND '2025-06-30'       >> /path/to/query_backup.csv
复制代码
  • 部分列备份 :仅导出指定列的数据(适用于表结构变化大的迁移场景)。 示例(导出idvalue列):

SELECT id, value FROM sensor_data >> /path/to/partial_columns_backup.csv
复制代码

恢复操作

恢复时需注意删除 CSV 文件的第一行标题行(避免列名被误导入),并根据备份列数据类型选择对应语法:

  • 子表整体恢复 :直接将 CSV 数据导入目标子表。 示例(导入到子表child_table):

INSERT INTO child_table FILE /path/to/backup.csv;
复制代码
  • 部分列恢复 :需明确指定目标表的列名,确保 CSV 文件的列顺序与指定列一致。 示例(导入到target_tableidvalue列):

INSERT INTO target_table (id, value) FILE /path/to/partial_columns_backup.csv;
复制代码

库文件备份

库文件备份是指直接备份 TDengine 中 dataDir 指向的数据库文件目录,属于整体备份方式,主要用于灾备场景(如 TDengine 无法启动时),类似于制作数据库镜像。


优缺点分析:

  • 优点:不依赖于 TDengine 服务,备份速度快。

  • 缺点:恢复时 TDengine 版本要与备份时保持一致,同时全部数据(包括元数据)只能整体恢复至备份时。

工具获取

无工具,使用系统 copy 命令。

备份操作

备份操作建议结合自动化脚本定期执行,以提升可靠性。

  • 备份范围 :不需要备份的文件夹 :WAL(预写日志)文件夹(通常较大,无需备份)。多副本场景 :仅需备份主副本(leader)的数据,无需备份所有副本。集群场景 :多节点应在相同时间点备份,以减少节点间数据差异。

  • 备份时机 :理想情况 :停止 TDengine 服务后备份,确保数据一致性。生产环境(热备份) :若无法停止服务,可执行 flush database <dbname> 命令强制内存数据落盘,再进行备份。

恢复操作

建议手动操作,明确自己在做什么,以保证数据安全,恢复前需停止服务。

  • 前置条件 :必须停止 TDengine 服务。TDengine 版本请与备份时保持一致。

  • 恢复方式 :完整恢复 :需基于完整的备份目录恢复。可修改 dataDir 参数指向备份目录;若使用原目录,需清空原目录后替换(不可新旧混合)。多副本恢复 :若为全量备份,与完整恢复操作相同。若仅备份了 leader 数据,需将 leader 备份文件复制到其他副本节点。集群恢复 :所有节点必须使用同一备份数据恢复,仅恢复部分节点可能导致启动失败或不可预期问题。

结语

TDengine 提供的四种备份 / 恢复方法各有优劣与适用场景:

  • taosdump :社区版首选,适合小到中数据量的开放格式备份;

  • taosX :企业版推荐,功能全面,支持复杂迁移与增量操作;

  • taos-CLI :轻量临时备份,适合小数据量灵活导出;

  • 库文件备份 :灾备场景必选,离线操作但覆盖全量数据;


企业需结合数据规模、可用资源、场景需求(如灾备 / 迁移 / 临时备份),选择单一或组合方案,确保数据安全与业务稳定。你目前用的是哪种备份方式?有没有踩过什么坑,或者有什么实用经验?欢迎在评论区分享!

用户头像

TDengine

关注

高性能、分布式、支持SQL的时序数据库 2021-11-04 加入

官网:http://www.taosdata.com GitHub:https://github.com/taosdata/TDengine

评论

发布
暂无评论
时序数据库 TDengine 备份全家桶实操解析:命令行 + 可视化一篇看懂_tdengine_TDengine_InfoQ写作社区