mydumper备份数据失败

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

  • 【TiDB 版本】:TiDB-v3.0.12,mydumper 0.9.5
  • 【问题描述】:
    我在备份数数据失败,提示信息

“Could not read data from database.table: Query execution was interrupted”

数据库在备份的时候进行设置

set global max_execution_time=3600000;

update mysql.tidb set VARIABLE_VALUE = ‘2h’ where VARIABLE_NAME = ‘tikv_gc_life_time’;

你好,

可以先参考运行下;

  1. 执行 mydumper 命令前,修改 gc 时间:

update mysql.tidb set VARIABLE_VALUE = ‘720h’ where VARIABLE_NAME = ‘tikv_gc_life_time’;

  1. 执行 mydumper 命令后,将 TiDB 集群的 GC 值恢复到第 1 步中的初始值:
update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time';

https://docs.pingcap.com/zh/tidb/v4.0/backup-and-restore-using-mydumper-lightning#从-tidb-备份数据

我在备份的时候,这个值是2h,依旧是这样
update mysql.tidb set VARIABLE_VALUE = ‘2h’ where VARIABLE_NAME = ‘tikv_gc_life_time’;

上传下完整报错和操作截图看下吧。

并在 tidb 中执行其他语句看是否成功,譬如 select insert update 看数据库是否正常。并截图反馈下,

这个是线上数据库,增删改查正常,错误提示“Could not read data from database.table: Query execution was interrupted”,无其他异常。

你好,

尝试在 mydumper 中添加参数 -l, --long-query-guard Set long query timer in seconds, default 60 并设置一个长的值,看是否有效,请将 mydumper 返回信息记录到文档,并上传看下

可以看下您的报错还有其他信息提示吗? 是否与此案例相同,多谢

  1. 请在 mysql 命令行,查询下这些表,是否能够读,并且确认下 mydumper 用户权限是否满足文档要求并反馈下,,多谢。 例如:
select * from xxx limit 1;

show grants for 'user'@'%';

尝试添加权限:

SELECT
RELOAD
LOCK TABLES
REPLICATION CLIENT

再试下,并反馈下 mydumper 的版本。是否带 hash

你好,

请问下,执行 mydumper 时是立即返回此报错信息,还是在运行一段时间后才报错

反馈下报错时间点的 tidb.log 吧。看下是否有相关报错

运行之后,5s左右的样子开始报错,一下是tidb日志

你好,

反馈上下 50 行的日志方便吗,,,

感谢反馈,确认一下 TiDB 参数或者 TiDB 启动日志中两个关键参数的配置信息,来确认一下是否是该表太大触发了 oom-action :cancel 操作。

https://github.com/pingcap/tidb/blob/v3.0.12/config/config.toml.example#L34-L39

参数配置的意思,如果查询的 SQL 在占用 TiDB Server 内存大小超过 32 GB,就会触发 kill query 动作,类似 Log 反馈的 kill session 。

oom-action = "cancel"
mem-quota-query = 34359738368

image
只有oom-action 配置,mem-quota-query暂未配置,应该使用的是默认

在 tidb.log 中可以看下 mem-quota-query 的值

反馈下截图中两个表的列数和行数