taosdump
简介
taosdump 是一个支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个运行中的 TDengine 集群中的工具应用程序。
taosdump 可以用数据库、超级表或普通表作为逻辑数据单元进行备份,也可以对数据库、超级 表和普通表中指定时间段内的数据记录进行备份。使用时可以指定数据备份的目录路径,如果 不指定位置,taosdump 默认会将数据备份到当前目录。
如果指定的位置已经有数据文件,taosdump 会提示用户并立即退出,避免数据被覆盖。这意味着同一路径只能被用于一次备份。 如果看到 相关提示,请小心操作。
taosdump 是一个逻辑备份工具,它不应被用于备份任何原始数据、环境设置、 硬件信息、服务端配置或集群的拓扑结构。taosdump 使用 Apache AVRO 作为数据文件格式来存储备份数据。
安装
taosdump 有两种安装方式:
-
安装 taosTools 官方安装包, 请从所有下载链接页面找到 taosTools 并下载安装。
-
单独编译 taos-tools 并安装, 详情请参考 taos-tools 仓库。
常用使用场景
taosdump 备份数据
- 备份所有数据库:指定
-A
或--all-databases
参数; - 备份多个指定数据库:使用
-D db1,db2,...
参数; - 备份指定数据库中的某些超级表或普通表:使用
dbname stbname1 stbname2 tbname1 tbname2 ...
参数,注意这种输入序列第一个参数为数据库名称,且只支持一个数据库,第二个和之后的参数为该数据库中的超级表或普通表名称,中间以空格分隔; - 备份系统 log 库:TDengine 集群通常会包含一个系统数据库,名为
log
,这个数据库内的数据为 TDengine 自我运行的数据,taosdump 默认不会对 log 库进行备份。如果有特定需求对 log 库进行备份,可以使用-a
或--allow-sys
命令行参数。 - “宽容”模式备份:taosdump 1.4.1 之后的版本提供
-n
参数和-L
参数,用于备份数据时不使用转义字符和“宽容”模式,可以在表名、列名、标签名没使用转义字符的情况下减少备份数据时间和备份数据占用空间。如果不确定符合使用-n
和-L
条件时请使用默认参数进行“严格”模式进行备份。转义字符的说明请参考官方文档。
提示
- taosdump 1.4.1 之后的版本提供
-I
参数,用于解析 avro 文件 schema 和数据,如果指定-s
参数将只解析 schema。 - taosdump 1.4.2 之后的备份使用
-B
参数指定的批次数,默认值为 16384,如果在某些环境下由于网络速度或磁盘性能不足导致 "Error actual dump .. batch .." 可以通过-B
参数调整为更小的值进行尝试。 - taosdump 的导出不支持中断恢复,所以当进程意外终止后,正确的处理方式是删除当前已导出或生成的所有相关文件。
- taosdump 的导入支持中断恢复,但是当进程重新启动时,会收到一些“表已经存在”的提示,可以忽视。
taosdump 恢复数据
恢复指定路径下的数据文件:使用 -i
参数加上数据文件所在路径。如前面提及,不应该使用同一个目录备份不同数据集合,也不应该在同一路径多次备份同一数据集,否则备份数据会造成覆盖或多次备份。
提示
taosdump 内部使用 TDengine stmt binding API 进行恢复数据的写入,为提高数据恢复性能,目前使用 16384 为一次写入批次。如果备份数据中有比较多列数据,可能会导致产生 "WAL size exceeds limit" 错误,此时可以通过使用 -B
参数调整为一个更小的值进行尝试。