TDengine 备份与恢复 — taosdump 与企业版备份方案

分类:12.运维 | 篇章:04 备份与恢复
在这里插入图片描述
免费详情

数据备份是生产环境的必备能力。TDengine 提供 taosdump(开源工具,逻辑备份)和企业版备份方案(物理备份/增量备份)。本文涵盖备份策略、恢复流程、迁移场景。

备份方式速查

方式类型粒度适用
taosdump逻辑(SQL)库/表通用迁移
物理备份(企业版)物理(文件)集群完整备份
副本(REPLICA=3)实时集群高可用
流计算/订阅实时复制异地灾备

详细解析

1. 副本机制(不是真正备份,但是 HA 基础)

REPLICA 副本:
  建库时设 REPLICA 3
  数据实时复制到 3 个节点
  单节点故障自动切换


局限性:
  - 不防误删/误改(同步复制)
  - 不防整集群灾难
  - 不能跨集群


结论:
  REPLICA 是高可用,不是备份
  生产必须 REPLICA + 备份双保险

2. taosdump 备份

# 备份整个数据库
taosdump -h localhost -P 6030 -u root -p taosdata \
  -D mydb \
  -o /backup/mydb_$(date +%Y%m%d)


# 备份特定超级表
taosdump -h localhost -D mydb \
  -N meters \
  -o /backup/meters_$(date +%Y%m%d)


# 备份多个数据库
taosdump -h localhost -D db1,db2,db3 \
  -o /backup/multi_$(date +%Y%m%d)


# 按时间范围
taosdump -h localhost -D mydb \
  -S '2026-06-01 00:00:00' \
  -E '2026-06-30 23:59:59' \
  -o /backup/june_2026


# 仅 schema 不含数据
taosdump -h localhost -D mydb \
  --schema-only \
  -o /backup/schema_$(date +%Y%m%d)


# 并发线程
taosdump -h localhost -D mydb \
  -T 8 \                # 8 线程
  -o /backup/mydb

3. taosdump 恢复

# 恢复(导入)
taosdump -h newhost -P 6030 -u root -p taosdata \
  -i /backup/mydb_20260604


# 仅恢复 schema
taosdump -h newhost \
  -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 天
  - 本地 HDD:1 个月
  - 对象存储 S3/OSS:长期归档

6. 恢复演练

#!/bin/bash
# 定期恢复演练(每月)

# 1. 准备测试集群
docker run -d --name td-test \
  -p 6042:6030 -p 6042:6041 \
  tdengine/tdengine:latest

# 2. 恢复最新备份
LATEST=$(ls -t /backup/mydb_*.tar.gz | head -1)
tar xzf $LATEST -C /tmp/restore
taosdump -h localhost -P 6042 -i /tmp/restore

# 3. 数据验证
EXPECTED=$(taos -h prod-host -s "SELECT COUNT(*) FROM mydb.meters" | tail -1)
ACTUAL=$(taos -h localhost -P 6042 -s "SELECT COUNT(*) FROM mydb.meters" | tail -1)

if [ "$EXPECTED" = "$ACTUAL" ]; then
  echo "✓ Restore drill passed"
else
  echo "✗ Counts differ: expected=$EXPECTED, actual=$ACTUAL"
  exit 1
fi

# 4. 清理
docker rm -f td-test

7. 跨集群迁移

场景:旧集群 → 新集群迁移

方式 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 备集群  │
  │ REPLICA=3   │    │ REPLICA=3   │
  └─────────────┘    └─────────────┘
                  ▲
              同步方式:
              - taosX(推荐)
              - 流计算 + 写入
              - 定期 taosdump

方案 B: 异地三副本(成本高)
  跨 DC REPLICA=3
  网络延迟影响写入

方案 C: 业务双写
  应用层同时写两个集群
  无引擎复制开销

代码示例

自动化备份脚本

#!/bin/bash
# /usr/local/bin/td_backup.sh

set -e

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/backup/tdengine/$DATE
LOG=/var/log/td_backup.log
RETAIN_DAYS=30

mkdir -p $BACKUP_DIR

echo "[$(date)] Backup start" >> $LOG

# 备份所有用户数据库(排除系统)
DATABASES=$(taos -s "SHOW DATABASES" | grep -v "^name" | \
  grep -v "log" | grep -v "performance_schema" | \
  grep -v "information_schema" | awk '{print $1}')

for db in $DATABASES; do
  echo "  Backing up $db..."
  taosdump -D $db -o $BACKUP_DIR/$db -T 4 >> $LOG 2>&1
done

# 压缩
tar czf $BACKUP_DIR.tar.gz -C /backup/tdengine $DATE
rm -rf $BACKUP_DIR

# 上传到对象存储
aws s3 cp $BACKUP_DIR.tar.gz s3://my-backup/tdengine/

# 清理旧备份
find /backup/tdengine -name "*.tar.gz" -mtime +$RETAIN_DAYS -delete

echo "[$(date)] Backup completed" >> $LOG

crontab 定时

# /etc/crontab
0 2 * * * 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 再分批数据

FAQ

Q1: 必须停服才能备份吗?

不需要。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(需企业方案)

参考

系统构架篇

数据模型

存储引擎

查询引擎

数据写入

数据订阅

预聚合

索引

SQL 语句

客户端与连接器

运维

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TDengine (老段)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值