mydumper导出tidb数据库报错

【 TiDB 使用环境】生产环境
【 TiDB 版本】V5.3.3
【复现路径】利用mydumper导出tidb数据库下面的一个库
【遇到的问题:问题现象及影响】
利用mydumper导出tidb数据库下面的一个库,报错提示如下:

cat mydumper_oms_online.sh

#!/bin/sh
YOUR_USER=XXXXXX
YOUR_PASSWD=XXXXXX
/usr/bin/mydumper -u $YOUR_USER -p $YOUR_PASSWD -P 4000 -h 10.8.123.5 -l 7200 --kill-long-queries --lock-all-tables -B oms_online --max-rows 10000 -z -o /data/oms_online/
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
cat mydumper_oms_online.log

** (mydumper:25456): WARNING **: Killed a query that was running for 505284s

** (mydumper:25456): WARNING **: Killed a query that was running for 500434s

** (mydumper:25456): WARNING **: No table found to lock

** (mydumper:25456): CRITICAL **: Error showing tables on: /data/oms_online/ - Could not execute query: No database selected

** (mydumper:25456): CRITICAL **: Error dumping create database (/data/oms_online/): Unknown database ‘/data/oms_online/’

– metadata.partial.0 0

– metadata 228

Started dump at: 2023-11-03 10:46:23

[master]

Channel_Name = ‘’ # It can be use to setup replication FOR CHANNEL

File = tidb-binlog
Position = 445377303943577629
Executed_Gtid_Set =

Finished dump at: 2023-11-03 10:46:23

** (mydumper:25456): CRITICAL **: Backup directory not removed: export-20231103-104622

警告

PingCAP 之前维护的 Mydumper 工具 fork 自 mydumper project,针对 TiDB 的特性进行了优化。Mydumper 目前已经不再开发新功能,其绝大部分功能已经被 Dumpling 取代。Dumpling 工具使用 Go 语言编写,支持更多针对 TiDB 特性的优化。强烈建议切换到 Dumpling。
https://docs.pingcap.com/zh/tidb/v4.0/mydumper-overview

1 个赞

dumpling导出来,只能用loader导入到MySQL,但是loader也不进行维护,在导入的时候也有很多问题,所以尝试用mydumper导出,用myloader导入,结果这个也行不通

那咋办?这个工具也已经不维护了,只能再检查一下参数,或者去官方提需求贴

Unknown database ‘/data/oms_online/’
-B oms_online
-o /data/oms_online/
这个目录有的吧?

检查了好几轮,没看到哪里有问题

有的,数据库和导出目录都有

-z去掉试试

1 个赞

去掉-z就可以了,这是为啥?

使用的 --tidb-snapshot 导出时报错,怎么处理?

需要执行命令时增加一个参数 --skip-tz-utc,如果不设置的话 Mydumper 会预先设置 UTC 时区,然后在设置 tidb-snapshot 的时候会做时区转化,就会有问题

那去掉-z参数,在导入MySQL时还是有问题么?

Mydumper和 myloader反正是一对的,官方没有关于myloader的文档,不知道会不会再出现什么问题,可以小范围的导出一两张表测试一下

tidb是dumpling吧

tidb是dumpling,但是用loader导入MySQL有报错,所以改用mydumper导出,myloader导入试下。

用mydumper导tidb的数据,导不出来,报一堆的错。

dumpling出来的都是sql文件吧,可以直接用mysql source进去。文件多的话,写个脚本
如果数据量不是很大的话,可以借助navicat从迁移到mysql。

用脚本把dumpling导出来的SQL文件在MySQL中执行,执行完后,二边统计结果条数,对不上。数据量都是几百G,不好弄了。

dumpling完tidb那边是不是还有数据变更?

没有,源端tidb是历史库,没有数据更新。

我都是用mysqldump