dumper导出执行第一次报错,第二次自动正常

【 使用环境 】生产环境
【 使用版本 】4.2.0_CE
【问题描述】
执行dumper导出命令:

export JAVA_HOME=/opt/jdk8u382-b05/; /opt/ob-loader-dumper-4.2.5-RELEASE/bin/obdumper -h 127.0.0.1 -P 2881 xxxxxxxxx

[--ddl] true
[--sql] true
[--file-path] /data/ob/
[--host] 127.0.0.1
[--port] 2881
[--user] root@xxxxmysql
[--password] ******
[--database] test
[--sys-user] root
[--table] [xxxxxxx]
[--file-name] *
[--drop-object] true
[--retain-empty-files] true

报错:
dumper.log (5.7 KB)

步骤:(此时ob无其他sql运行)

  1. 第一次执行,报错:No memory or reach tenant memory limit;
  2. 间隔个30秒执行,还是一样报错内容
  3. 如果紧跟着第一次执行报错,再执行一次,能执行成功
  4. 如果restart下集群,仍会出现第一次执行失败,紧跟操作成功;

【问题】
第一次执行报错,紧跟着执行第二次,可正常导出(必现)

错误信息:“No memory or reach tenant memory limit”

上述信息来自于数据库服务端报出的错误,大致含义是租户内存不足。建议使用者分析 observer.log 是哪一种操作触发该错误。

此时租户无其他sql操作,看着不像是内存不足问题:
一样的命令操作;首次间隔30秒操作会失败;
但如果紧跟着执行,就能成功;且此时后续无论紧跟着执行或间隔长点,都能成功

工具自身发起的 SQL 执行操作也包括再内,都是占用租户内存的。
明确错误是数据库服务端返回的,如果需要更进一步了解是哪一条SQL执行引发内存不足的错误,可以查找 observer.log 日志文件。