用 mysql -e 将查询出来的数据输出到外部文件,网卡被打满

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.1
  • 【问题描述】:
    time mysql -h172.16..* -P4000 -utest -p 库名 -e " select * from table where 1=1" > 0811_tidb.txt
    ERROR 2003 (HY000): Can’t connect to MySQL server on ‘172.16..*’ (110)

real 2m7.359s
user 0m0.003s
sys 0m0.055s

原因:网络打爆,超2Gb

这个对网络带宽没有限制吗?同样的sql在数据源是mysql时是可以导出的

1.请问如何判断是网卡打爆? 机器网卡是万兆吗?
2. tidb 中是什么报错?
3. 是否有 OOM

1、网络监控 这个图昨天没上传成功是这样的,我们的网络带宽上限是2Gbi

2、tidb报错是:
[error=“write tcp 172.16.:4000->172.16.6.:59590: write: connection reset by peer”]"}

3、没有oom

好的,那您可以使用mydumper 导出试试吗?

我这个是想模拟业务方的sqoop抽取来实现的,sqoop就是直接select查询,
那请问下哦, 这个问题在tidb这么操作是不行的吗?我在自建mysql 以及RDS执行都是没有问题的 ,带宽不会占用这么高

  1. 能否反馈这个sql 的 explain sql 的执行计划看看

  2. tidb 日志中是否有记录这个sql的情况,麻烦反馈下,多谢。

1、执行计划

2、tidb中的日志就是我上面截图里有

你是用的什么客户端?版本多少?

yum install mysql 安装的mysql
mysql -V
mysql Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64) using readline 5.1

用的是mysql命令来执行sql

能否使用MySQL 5.7版本的客户端试试,多谢

一样的报错

  1. 请问导出的这个客户端 和 目标连接的ip和端口是同一个主机吗?
  2. 这里的流量是哪里的打满了? 如果是同一个主机感觉导出时应该没有流量,还是说是 tidb 和 tikv 直接的流量打满了? 麻烦帮忙画个拓扑,多谢。

1、不是同一个主机,客户端不是tidb集群里的机器
2、是tidb节点机器带宽满了,从阿里云监控上看这个机器带宽达到了2Gb

再次换更高配置的客户端机器尝试,导出成功了,没有中断,但是带宽问题依旧是很高,之前中断的原因是 客户端机器发起的mysql导出进程oom了

这个带宽这么高,已经超出了阿里云给我们规格限制

  1. 是导出的这个tidb-server 流量太高了,多吧。
  2. 从您的导出条件来看,是直接记录到文本里,如果直接使用此tidb-server导出是否好点呢? 不会有流量,之后将文本压缩发送到需要的客户端,不知是否可行。

我是想模拟sqoop抽取 就是这种全量查全表的操作,不是导出到文本的,sqoop抽取也不可能在tidb机器上直接抽的,有专门的集群。
关键就是像这种10G左右全表select 是不是带宽确实要占这么高?

请问下,相同的数据量,mysql中需要多少带宽?

大概200Mb左右

你好,因为 mysql 的网络通信量只有把结果返回客户端。但是 tidb 需要把查询请求发到相应的 tikv 节点,tikv 节点再把数据返回 tidb,因为数据量很大,也会消耗相应量的网络带宽。

请问,这个流量图是客户端机器的,还是 tidb-server 的,多谢。