taosdump的安装与使用实战
- 一、taosdump简介
- 二、下载
- 三、安装
- 四、taosdump主要参数
- 五、taosdump数据导出(备份)
- 六、taosdump数据导入
- 七、不同版本的数据迁移
- 7.1 问题:报错- create database 语句不一致
- 7.2 解决:修改导出的dbs.sql
一、taosdump简介
TDEngine官网 - 参考手册:taosdump
taosdump 是一个支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个运行中的 TDengine 集群中的工具应用程序。
taosdump 可以用数据库、超级表或普通表作为逻辑数据单元进行备份,也可以对数据库、超级 表和普通表中指定时间段内的数据记录进行备份。使用时可以指定数据备份的目录路径,如果 不指定位置,taosdump 默认会将数据备份到当前目录。
如果指定的位置已经有数据文件,taosdump 会提示用户并立即退出,避免数据被覆盖。这意味着同一路径只能被用于一次备份。 如果看到相关提示,请小心操作。
taosdump 是一个逻辑备份工具,它不应被用于备份任何原始数据、环境设置、 硬件信息、服务端配置或集群的拓扑结构。taosdump 使用 Apache AVRO 作为数据文件格式来存储备份数据。
二、下载
taosTools工具包,包含备份taosdump和taosBenchmark工具,不能单独使用,需要先安装客户端和服务端。客户端和服务端安装参考链接:TDEngine3.0环境安装及配置
taosTools下载链接:TDEngine官网 - taosTools发布历史页面
tips:
1、下载的版本最好与实际安装的TDEngine Server版本对应,实际的安装包后缀与server的后缀部不是一致的
2、server 2.0版本之后的建议下载1.4.5之后版本
3、如果安装之后,taos服务可以正常启动,但是运行taosdump时异常:缺少.so文件,大概率是因为版本不匹配,建议更换taostools版本。
因为我这边安装的TDEngine Server版本是3.4.0.2(server安装参考,对应下载的taostools版本为:taosTools-2.1.3-Linux-x64.tar.gz
注意:最好不要在同一个系统上,同时使用rpm 、tar 、 deb安装。如果服务端用的是.tar.gz形式安装,客户端和taostools最好也用.tar.gz形式安装。
三、安装
1.创建目录,并将下载的文件传输至目录:
mkdir /home/tdengine
- 解压缩:tar -zxvf taosTools-2.1.3-Linux-x64.tar.gz
查看加压缩后的目录:
#查看解压缩后的目录
ls
#进入解压缩后的目录
cd taosTools-2.1.3
#查看目录下的文件内容
ls
1
3.执行安装命令:./install-taostools.sh
卸载命令:
./uninstall-taostools.sh
安装成功后,进入taos shell命令查看安装是否成功。
四、taosdump主要参数
taosdump 的导出行为的本质其实是使用 SQL 进行查询,将数据压缩后输出到本地,导入行为则是通过 STMT 接口再把导出的数据导入新的环境。因此,能够顺利完成数据导出的用户,应尽量拥有如下几个特征:
(1)拥有足够磁盘空间,建议需要至少留出 du -sh $dataDir/vnode --exclude=‘wal’ 大小的 3 倍空间(多多益善)。但如果是按照库/表为单位分批导出,或者指定时间范围导出的话,就比较灵活了。
(2)数据库日常使用负载不高,在大量导出 SQL 执行时,数据库仍有充足资源可以保障正常生产使用。
(3)待迁移的数据为测试环境不需担心影响业务,或者生产环境的业务间歇期足够完成数据的导出。
只要磁盘空间充足,时间充足,就可以完成导出操作。导入则相对简单,没有额外需求,按照正常的数据库部署思路即可。
taosdump主要参数
-o:指定输出文件的路径。文件会自动生成。一个dbs.sql文件,导出数据库、超级表;若干个XXX_tables.N.sql文件,文件名的规则:XXX是数据库名称,N是数字,从0开始递增
-u:用户名。
-p:密码。
-A:指示导出所有数据库的数据。
-D:表示指定数据库。
-i:表示输入目录。
-s:表示导出schema。
-t:指定导入到一个文件的表的个数。该参数可以控制输出文件的大小。(网上很多博客里面都有记录这个参数,但是好像taosdump已经不用这个参数了)
-B:指定一条import语句中包含记录的条数。注意:不要让sql语句超过64k,否则后续导入会出错。该参数为了后续导入时,提高导入速率。
-T: 指定导出数据时,启动的线程数。建议设置成机器上core的2倍。
可以通过 命令 taosdump --help 获取参数信息
五、taosdump数据导出(备份)
./bin/taosdump -o <导出存放目录> -D 需要导出的数据库
1.创建导出目录
#创建存放数据总目录
mkdir /home/tdengine/taosdump
#创建本次导出存放目录
mkdir /home/tdengine/taosdump/data20230602
#进入存放目录
cd /home/tdengine/taosdump/data20230602
2.执行导出命令:
#进入taostool的安装目录
cd /home/tdengine/taosTools-2.1.3
#查看该目录下是否有bin目录
ls
#执行命令导出
./bin/taosdump -o /home/tdengine/taosdump/data20230602/ -D tljd_datan
如果是通过rpm形式安装的taostools可以在任意目录下执行taosdump命令,不需要./bin/,格式示例:taosdump -o /taosdump/data20230602/ -A
3.查看导出的文件:
#进入刚指定的导出目录
cd /home/tdengine/taosdump/data20230602/
#查看是否已存在备份文件
ls
六、taosdump数据导入
./bin/taosdump -i <导入的数据存放目录>
1.进入taostools安装目录:
cd /home/tdengine/taosTools-2.1.3
- 执行命令:
taosdump -i <data dir>
#如:
./bin/taosdump -i /home/tdengine/taosdump/data20230602/
七、不同版本的数据迁移
参考链接:如何把数据从 TDengine 2.x 迁移到 3.x ?
参考链接:如何把数据从 TDengine 2.x 迁移到 3.x ?
迁移背景:
1、数据导出:将TDEngine2.4.0.16中数据通过taostools.1.4.5中的taosdump工具将数据导出。
2、数据导入:在TDEngine3.0.4.2中通过taostools.2.1.3中的taosdump工具将数据导入。
7.1 问题:报错- create database 语句不一致
导入时报错:create database 语句不一致
对别导出的dbs.sql中数据库的创建语句,和TDEngine3.0中的数据创建语句:
#查看数据库创建语句
SHOW CREATE DATABASE 数据库名称 \G;
对比两边的创建语句,发现语句不相同:
7.2 解决:修改导出的dbs.sql
修改导出的dbs.sql中的create database语句,删除create database语句中默认的参数设置,只保留需要特别设置的属性。
CREATE DATABASE IF NOT EXISTS 库名称 [KEEP 保留时间][..其他必要设置];
比如我的数据库需要设置保留天数1825天(5年),其他的参数不需要特别注意,将语句修改为:
CREATE DATABASE IF NOT EXISTS test KEEP 1825d;
修改前的2.0语句为:
修改后的语句为:
再执行导入:
./bin/taosdump -i /home/tdengine/taosdump/datatest/
这一次成功了:
tips:
如果你还出现其他的错误,根据提示,对比2.0和3.0版本中的语句差异,调整sql文件。