TDengine DUMP工具使用指南

TDengine产品提供一个数据库数据的导入导出DUMP工具,从而支持数据的迁移。比如从某家公有云迁移到另外一家公有云。

DUMP工具导出数据时,以sql语句的形式导出内容,包括数据库、超级表、普通表,以及表中的记录数据,然后保存到指定的输出文件中。

DUMP工具导入数据时,将导出的文件作为输入,顺序读入并执行文件中的sql语句,完成数据的导入。

(工具的参数内容有可能因版本更新而改变,请以 help 实际输出的联机帮助信息为准。)

DUMP命令帮助信息

root@taos-ec1:/dump# ./taosdump --help
Usage: taosdump [OPTION...] dbname [tbname ...]
  or:  taosdump [OPTION...] --databases dbname ...
  or:  taosdump [OPTION...] --all-databases
  or:  taosdump [OPTION...] -i inpath
  or:  taosdump [OPTION...] -o outpath

  -h, --host=HOST            Server host dumping data from. Default is
                             localhost.
  -p, --password=PASSWORD    User password to connect to server. Default is
                             taosdata.
  -P, --port=PORT            Port to connect
  -q, --mysqlFlag=MYSQLFLAG  mysqlFlag, Default is 0
  -u, --user=USER            User name used to connect to server. Default is
                             root.
  -v, --cversion=CVERION     client version
  -c, --config=CONFIG_DIR    Configure directory. Default is
                             /etc/taos/taos.cfg.
  -e, --encode=ENCODE        Input file encoding.
  -g, --debug                Print debug info.
  -i, --inpath=INPATH        Input file path.
  -o, --outpath=OUTPATH      Output file path.
  -r, --resultFile=RESULTFILE   DumpOut/In Result file path and name.
      --verbose              Print verbose debug info.
  -A, --all-databases        Dump all databases.
  -D, --databases            Dump assigned databases
  -a, --allow-sys            Allow to dump sys database
  -B, --data-batch=DATA_BATCH   Number of data point per insert statement.
                             Default is 1.
  -E, --end-time=END_TIME    End time to dump. Either Epoch or ISO8601/RFC3339
                             format is acceptable. Epoch precision millisecond.
                             ISO8601 format example:
                             2017-10-01T18:00:00.000+0800 or
                             2017-10-0100:00:00.000+0800 or '2017-10-01
                             00:00:00.000+0800'
  -L, --max-sql-len=SQL_LEN  Max length of one sql. Default is 65480.
  -N, --without-property     Dump schema without properties.
  -s, --schemaonly           Only dump schema.
  -S, --start-time=START_TIME   Start time to dump. Either Epoch or
                             ISO8601/RFC3339 format is acceptable. Epoch
                             precision millisecond. ISO8601 format example:
                             2017-10-01T18:00:00.000+0800 or
                             2017-10-0100:00:00.000+0800 or '2017-10-01
                             00:00:00.000+0800'
  -t, --table-batch=TABLE_BATCH   Number of table dumpout into one output file.
                             Default is 1.
  -T, --thread_num=THREAD_NUM   Number of thread for dump in file. Default is
                             5.
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <support@taosdata.com>.

导出命令说明

导出数据时,可以使用不同的方式,比如导出所有数据库的数据;导出指定一个或多个数据库的数据;导出指定一个数据库中指定一个或多个表的数据;仅仅导出schema。同时,以上方式时,还可以指定数据的时间范围。下面分别举例描述。

1、导出所有数据库的数据

root@taos-ec1:/dump# ./taosdump -c /dump/cfg -o /dump/data-data0601-0701 -u jason -p abcd -A -S 1559318400000 -E 1561910400000 -t 500 -B 80 -T 8

-c : 指定配置文件所在的路径。因为dump会启动taos客户端,去链接taosd服务,所以需要做好配置文件。

-o:指定输出文件的路径。文件会自动生成,一个dbs.sql文件,导出数据库、超级表;若干个XXX_tables.N.sql文件,文件名的规则:XXX是数据库名称,N是数字,从0开始递增。

-u:用户名。

-p:密码。

-A:指示导出所有数据库的数据。

-S:指定导出记录的开始时间。Unix时间戳,单位:毫秒。该示例中时间是2019/6/1 0:0:0。

-E:指定导出记录的最后时间。Unix时间戳,单位:毫秒。该示例中时间是2019/7/1 0:0:0

-t:指定导入到一个文件的表的个数。该参数可以控制输出文件的大小。

-B:指定一条import语句中包含记录的条数。注意:不要让sql语句超过64k,否则后续导入会出错。该参数为了后续导入时,提高导入速率。

-T: 指定导出数据时,启动的线程数。建议设置成机器上core的2倍。

2、导出指定数据库的数据

root@taos-ec1:/dump# ./taosdump -c /dump/cfg -o /dump/data-data0601-0701 -u jason -p abcd -D dbname1 dbname2 -S 1559318400000 -E 1561910400000 -t 500 -B 100 -T 8

-D:指定仅导出dbname1和dbname2的所有数据。

3、导出指定数据库中指定表的数据

root@taos-ec1:/dump# ./taosdump -c /dump/cfg -o /dump/data-data0601-0701 -u jason -p abcd  dbname1 tablename1 tablename2 -S 1559318400000 -E 1561910400000 -t 500 -B 100 -T 8

指定导出dbname1数据库中tablename1和tablename2的数据。

4、仅仅导出schema

root@taos-ec1:/dump# ./taosdump -c /dump/cfg -o /dump/data-data0601-0701 -u jason -p abcd -A -S 1559318400000 -E 1561910400000 -t 500 -s -T 8

-s:仅仅导出所有数据库的schema,即数据库、超级表、普通表,但不导出表中的记录。

导出完成后,在指定的输出目录下生成若干.sql的文件。

导入命令说明

将导出的所有文件(由于文件比较大,建议进行压缩,传输到目的机器上后,再解压),拷贝到一个路径下,比如/tmp路径。导入数据时,需要指定导入文件所在的目录。

root@ecs-17fe:# ./taosdump -c /tmp/cfg -u jason -p abcd -i /tmp/data0601-0701 -T 8

-i:导入文件所在路径。

-T:指定导入数据时,启动的线程数。建议设置成机器上core的2倍。

校验

完成导入后,可以随机执行一些查询,在相同的查询条件下,导出前与导入后的记录条数是否相同。比如

taos> select count(*) from table_name;
taos> select count(*) from super_table where ts >= 1559318400000 and ts <= 1561910400000;