TDengine 备份与恢复 — taosdump 与企业版备份方案
分类12.运维 |篇章04 备份与恢复免费详情数据备份是生产环境的必备能力。TDengine 提供 taosdump开源工具逻辑备份和企业版备份方案物理备份/增量备份。本文涵盖备份策略、恢复流程、迁移场景。备份方式速查方式类型粒度适用taosdump逻辑SQL库/表通用迁移物理备份企业版物理文件集群完整备份副本REPLICA3实时集群高可用流计算/订阅实时复制库异地灾备详细解析1. 副本机制不是真正备份但是 HA 基础REPLICA 副本 建库时设 REPLICA 3 数据实时复制到 3 个节点 单节点故障自动切换 局限性 - 不防误删/误改同步复制 - 不防整集群灾难 - 不能跨集群 结论 REPLICA 是高可用不是备份 生产必须 REPLICA 备份双保险2. taosdump 备份# 备份整个数据库taosdump-hlocalhost-P6030-uroot-ptaosdata\-Dmydb\-o/backup/mydb_$(date%Y%m%d)# 备份特定超级表taosdump-hlocalhost-Dmydb\-Nmeters\-o/backup/meters_$(date%Y%m%d)# 备份多个数据库taosdump-hlocalhost-Ddb1,db2,db3\-o/backup/multi_$(date%Y%m%d)# 按时间范围taosdump-hlocalhost-Dmydb\-S2026-06-01 00:00:00\-E2026-06-30 23:59:59\-o/backup/june_2026# 仅 schema 不含数据taosdump-hlocalhost-Dmydb\--schema-only\-o/backup/schema_$(date%Y%m%d)# 并发线程taosdump-hlocalhost-Dmydb\-T8\# 8 线程-o/backup/mydb3. taosdump 恢复# 恢复导入taosdump-hnewhost-P6030-uroot-ptaosdata\-i/backup/mydb_20260604# 仅恢复 schemataosdump-hnewhost\-i/backup/mydb_20260604\--schema-only# 跨版本恢复# taosdump 通常向前兼容旧数据可导入新版# 不保证向后新版数据导入旧版4. 物理备份企业版企业版工具 taosdump - 全量物理备份 - 增量备份 - 时间点恢复 (PITR) # 全量备份 taosdump -d /var/lib/taos -o /backup/full_20260604 # 增量备份 taosdump -d /var/lib/taos -o /backup/incr_20260605 \ --incremental --base /backup/full_20260604 # 恢复 taosdump -i /backup/full_20260604 -o /var/lib/taos 性能 - 物理备份比逻辑快 10x - 增量大幅减少存储 - 支持热备份不停服5. 备份策略推荐备份策略 ① 每日全量小规模 - cron 凌晨 taosdump - 保留 7~30 天 - 异地复制 ② 每周全量 每日增量中规模企业版 - 周日全量 - 每日增量 - PITR 能力 ③ 持续复制 定期全量大规模 - 流计算/订阅实时复制 - 周期 taosdump 异地 - 多地多备 存储分级 - 本地 SSD最近 7 天 - 本地 HDD1 个月 - 对象存储 S3/OSS长期归档6. 恢复演练#!/bin/bash# 定期恢复演练每月# 1. 准备测试集群dockerrun-d--nametd-test\-p6042:6030-p6042:6041\tdengine/tdengine:latest# 2. 恢复最新备份LATEST$(ls-t/backup/mydb_*.tar.gz|head-1)tarxzf$LATEST-C/tmp/restore taosdump-hlocalhost-P6042-i/tmp/restore# 3. 数据验证EXPECTED$(taos-hprod-host-sSELECT COUNT(*) FROM mydb.meters|tail-1)ACTUAL$(taos-hlocalhost-P6042-sSELECT COUNT(*) FROM mydb.meters|tail-1)if[$EXPECTED$ACTUAL];thenecho✓ Restore drill passedelseecho✗ Counts differ: expected$EXPECTED, actual$ACTUALexit1fi# 4. 清理dockerrm-ftd-test7. 跨集群迁移场景旧集群 → 新集群迁移 方式 1: taosdump 物理迁移 taosdump -h old-cluster -D mydb -o /migrate taosdump -h new-cluster -i /migrate 方式 2: 双写过渡 ① 应用同时写入新旧集群 ② taosdump 迁移历史 ③ 验证数据一致 ④ 切流量到新集群 ⑤ 停止旧集群 方式 3: TMQ 订阅同步 ① 新集群订阅旧集群 ② taosdump 历史 ③ 实时增量持续同步 ④ 切流量 跨版本迁移 - 旧版本 → 新版本直接 taosdump 通常 OK - 新版本 → 旧版本可能不兼容8. 灾备方案方案 A: 主备数据中心 ┌─────────────┐ ┌─────────────┐ │ DC1 主集群 │ ──►│ DC2 备集群 │ │ REPLICA3 │ │ REPLICA3 │ └─────────────┘ └─────────────┘ ▲ 同步方式 - taosX推荐 - 流计算 写入 - 定期 taosdump 方案 B: 异地三副本成本高 跨 DC REPLICA3 网络延迟影响写入 方案 C: 业务双写 应用层同时写两个集群 无引擎复制开销代码示例自动化备份脚本#!/bin/bash# /usr/local/bin/td_backup.shset-eDATE$(date%Y%m%d_%H%M%S)BACKUP_DIR/backup/tdengine/$DATELOG/var/log/td_backup.logRETAIN_DAYS30mkdir-p$BACKUP_DIRecho[$(date)] Backup start$LOG# 备份所有用户数据库排除系统DATABASES$(taos-sSHOW DATABASES|grep-v^name|\grep-vlog|grep-vperformance_schema|\grep-vinformation_schema|awk{print $1})fordbin$DATABASES;doecho Backing up$db...taosdump-D$db-o$BACKUP_DIR/$db-T4$LOG21done# 压缩tarczf$BACKUP_DIR.tar.gz-C/backup/tdengine$DATErm-rf$BACKUP_DIR# 上传到对象存储aws s3cp$BACKUP_DIR.tar.gz s3://my-backup/tdengine/# 清理旧备份find/backup/tdengine-name*.tar.gz-mtime$RETAIN_DAYS-deleteecho[$(date)] Backup completed$LOGcrontab 定时# /etc/crontab02* * * root /usr/local/bin/td_backup.sh性能考量备份性能数据量taosdump 耗时参考1 GB1~5 分钟10 GB10~30 分钟100 GB1~5 小时1 TB10~30 小时调优增加线程-T 8注意 CPU 占用选低峰时间多机分库并行恢复性能类似备份。注意大表恢复内存使用大索引/SMA 重建耗 CPU推荐先恢复 schema 再分批数据FAQQ1: 必须停服才能备份吗不需要。taosdump 在线备份但备份时数据可能仍在写入。可以接受最后几秒的不一致。Q2: taosdump 备份大小怎么估算约为原始数据的 10%~30%视压缩率。SQL 文本形式比物理大但可压缩。Q3: 备份能跨集群恢复吗可以。taosdump 输出是 SQL可恢复到任何 TDengine 集群注意版本兼容。Q4: 增量备份开源版有吗开源 taosdump 仅全量。增量需企业版或通过时间范围切分。Q5: 灾备 RTO/RPO 怎么定业务可容忍中断RTO 4 小时RPO 1 小时关键业务RTO 30 分钟RPO 5 分钟金融级RTO 5 分钟RPO 接近 0需企业方案参考系统构架篇01-《TDengine 整体架构全景》02-《集群拓扑深度解析》03-《MNode 内部机制深度解析》04-《RPC 通信层深度解析》05-《VNode 生命周期》06-《RAFT 共识协议》07-《端到端的消息流》数据模型01-《数据库创建与参数详解》02-《超级表/子表/普通表》03-《支持数据类型深度解析》04-《TDengine Tag 设计哲学与 Schema 变更机制》05-《TDengine 虚拟表实现原理》存储引擎01-《TDengine 存储引擎概览》02-《TDengine MemTable 深度解析》03-《TDengine WAL 预写日志机制》04-《TDengine 数据文件格式》05-《TDengine Commit 与 Flush 机制 》06-《TDengine Compaction 合并策略 》07-《TDengine 数据保留与 TTL》08-《TDengine 压缩编码机制》09-《TDengine Cache 与 Last 查询加速》10-《TDengine 逻辑计划生成》查询引擎01-《TDengine 查询引擎概览》02-《TDengine SQL 解析与词法分析》03-《TDengine 语义分析与 AST 重写》04-《TDengine 逻辑计划生成》05-《TDengine 物理计划生成》06-《TDengine 扫描算子》07-《TDengine 聚合算子》08-《TDengine 连接算子》09-《TDengine 排序、填充与投影》10-《TDengine 分布式查询执行》11-《TDengine EXPLAIN 与查询优化》数据写入01-《TDengine SQL INSERT》02-《TDengine 无模式写入》03-《TDengine STMT 写入》04-《TDengine 写入内部流程》05-《TDengine 数据更新删除》数据订阅01-《TDengine 数据订阅》02-《TDengine 订阅 vs Kafka》03-《TDengine TMQ 消费流程》04-《TDengine 内部机制》05-《TDengine TMQ 最佳实践》预聚合01-《TDengine RSMA》02-《TDengine TSMA — 时间维度的物化聚合视图》03-《TDengine SMA 内部实现》索引01-《TDengine Tag 索引》02-《TDengine SMA 索引》SQL 语句01-《TDengine DDL》02-《TDengine DML SELECT》03-《TDengine DML 函数完整参考》04-《TDengine JOIN 完整语法》05-《TDengine 窗口完整语法》06-《TDengine 操作符与表达式》07-《TDengine 系统表》08-《TDengine SQL 与标准 SQL 差异》客户端与连接器01-《TDengine 的连接方式》02-《TDengine C/C 连接器》03-《TDengine java 连接器》04-《TDengine Python 连接器》05-《TDengine Go 与 Rust 连接器》06-《TDengine Node.js 与 C# 连接器》运维01-《TDengine 部署指南》02-《TDengine 配置详解》03-《TDengine 监控系统》关于 TDengineTDengine 专为物联网IoT平台、工业大数据平台设计。其中TDengine TSDB 是一款高性能、分布式的时序数据库Time Series Database同时它还带有内建的缓存、流式计算、数据订阅等系统功能TDengine IDMP 是一款AI原生工业数据管理平台它通过树状层次结构建立数据目录对数据进行标准化、情景化并通过 AI 提供实时分析、可视化、事件管理与报警等功能。