使用taosdump从TDengine 2.4迁移数据到3.0时遇符号查找错误
TDengine跨版本恢复数据报错:
undefined symbol: inflateReset 问题描述
从TDengine 2.4导出的备份文件taosdump.3340632973591,在TDengine 3.0环境下使用taosdump恢复时触发如下错误:
root@nofeel:~# taosdump -i taosdump.3340632973591 taosdump: symbol lookup error: taosdump: undefined symbol: inflateReset
备份文件结构:
root@nofeel:~# tree taosdump.3340632973591 dbs.sql data155559 data183342 data211125 data4443 data72213 data127776 data15556 data183343 data211126 data44430 data72214 data127777 data155560 data183344 data211127 data44431 data72215 data127778 data155561 data183345 data211128 data44432 data72216 data127779 data155562 data183346 data211129 data44433 data72217 data12778 data155563 data183347 data21113 data44434 data72218 data127780 data155564 data183348 data211130 data44435 data72219
重装taostool 2.2.1后,单独执行taosdump仍报相同错误。
解决方法
1. 匹配taosdump与TDengine服务版本
TDengine 3.0和2.x的taosdump工具不兼容,必须使用TDengine 3.0版本的taosdump来恢复。卸载当前2.x版本的taostool,安装TDengine 3.0对应的工具包(通常随3.0服务包一同安装,单独安装需下载对应版本的taosdump组件)。
2. 修复zlib库依赖
inflateReset是zlib库的函数,报错说明工具找不到正确的zlib版本:
- 检查依赖:
ldd $(which taosdump) | grep zlib
- 安装对应系统的zlib开发包:
Ubuntu/Debian:apt install zlib1g-dev
CentOS/RHEL:yum install zlib-devel - 重新安装TDengine 3.0的客户端工具。
3. 清理旧版本残留文件
旧版本TDengine的库文件可能干扰当前工具,执行以下命令清理后重装:
# 删除残留的taos相关库文件 find /usr/lib /usr/local/lib -name "libtaos*" -delete # 重新安装TDengine 3.0(以Ubuntu为例) apt reinstall tdengine
4. 格式转换后恢复
如果上述方法无效,先在TDengine 2.4环境将备份转成SQL文本格式,再到3.0环境执行:
- 2.4环境导出SQL:
taosdump -i taosdump.3340632973591 -o restore_data.sql
- 3.0环境执行SQL恢复:
taos -f restore_data.sql
内容的提问来源于stack exchange,提问作者MrZao
相关产品推荐
相关产品推荐

