集群间的备份和迁移工作如何做?这份 taosdump 的应用手册请查收

小 T 导读:为了让大家更好地进行 TDengine 集群间的备份和迁移工作,一款名为 taosdump 的工具应用程序被打造出来。在本篇文章中,我们对 taosdump 的使用方法和注意事项进行了相关汇总,给到有需要的开发者。

作为 TDengine 的一款工具应用程序,taosdump 支持从运行中的 TDengine 集群备份数据,并将备份的数据恢复到相同或另一个运行中的 TDengine 集群中,其使用 Apache AVRO(https://avro.apache.org/)作为数据文件格式来存储备份数据。

值得一提的是,taosdump 可以用 Database、超级表或普通表作为逻辑数据单元进行备份,也可以对 Database、超级表和普通表中指定时间段内的数据记录进行备份。在使用时,我们可以对 taosdump 指定数据备份的目录路径;如果不指定位置,它就会默认将数据备份到当前目录;如果指定的位置已经有数据文件,taosdump 会提示用户并立即退出,避免数据被覆盖。这意味着同一路径只能被用于一次备份。如果大家看到相关提示,务必小心操作。

但需要注意的是,taosdump 是一个逻辑备份工具,它不应被用于备份任何原始数据、环境设置、 硬件信息、服务端配置或集群的拓扑结构。

安装

taosdump 有以下两种安装方式:

常用使用场景

taosdump 备份数据

  1. 备份所有数据库:指定 -A--all-databases 参数;
  2. 备份多个指定数据库:使用 -D db1,db2,... 参数;
  3. 备份指定数据库中的某些超级表或普通表:使用 dbname stbname1 stbname2 tbname1 tbname2 ... 参数,注意这种输入序列第一个参数为数据库名称,且只支持一个数据库,第二个和之后的参数为该数据库中的超级表或普通表名称,中间以空格分隔;
  4. 备份系统 log 库:TDengine 集群通常会包含一个系统数据库,名为 log,这个数据库内的数据为 TDengine 自我运行的数据,taosdump 默认不会对 log 库进行备份。如果有特定需求对 log 库进行备份,可以使用 -a--allow-sys 命令行参数。
  5. “宽容”模式备份:taosdump 1.4.1 之后的版本提供 -n 参数和 -L 参数,用于备份数据时不使用转义字符和“宽容”模式,可以在表名、列名、标签名没使用转义字符的情况下减少备份数据时间和备份数据占用空间。如果不确定是否符合使用 -n-L 条件时,请使用默认参数进行“严格”模式进行备份。转义字符的说明请参考官方文档(https://docs.taosdata.com/taos-sql/escape/)。
需要注意
  • 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 参数调整为一个更小的值进行尝试。

写在最后

如果大家想要查阅 taosdump 详细命令行参数列表,可以进入 https://docs.taosdata.com/reference/taosdump/ 获取。毫无疑问,如果你掌握了上述 taosdump 使用指南,一定能帮助你较为完美地解决所遭遇的数据迁移问题。但如果在应用过程中出现了一些个性化难题,也无需心急,你可以进入 TDengine 用户交流群寻找帮助。

TDengine Database