为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【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’;
来了老弟
2
你好,
可以先参考运行下;
- 执行
mydumper
命令前,修改 gc 时间:
update mysql.tidb set VARIABLE_VALUE = ‘720h’ where VARIABLE_NAME = ‘tikv_gc_life_time’;
- 执行
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’;
来了老弟
4
上传下完整报错和操作截图看下吧。
并在 tidb 中执行其他语句看是否成功,譬如 select insert update 看数据库是否正常。并截图反馈下,
这个是线上数据库,增删改查正常,错误提示“Could not read data from database.table: Query execution was interrupted”,无其他异常。
来了老弟
6
你好,
尝试在 mydumper 中添加参数 -l, --long-query-guard Set long query timer in seconds, default 60
并设置一个长的值,看是否有效,请将 mydumper 返回信息记录到文档,并上传看下
yilong
(yi888long)
7
可以看下您的报错还有其他信息提示吗? 是否与此案例相同,多谢
yilong
(yi888long)
9
- 请在 mysql 命令行,查询下这些表,是否能够读,并且确认下 mydumper 用户权限是否满足文档要求并反馈下,,多谢。 例如:
select * from xxx limit 1;
show grants for 'user'@'%';
来了老弟
11
尝试添加权限:
SELECT
RELOAD
LOCK TABLES
REPLICATION CLIENT
再试下,并反馈下 mydumper 的版本。是否带 hash
来了老弟
13
你好,
请问下,执行 mydumper 时是立即返回此报错信息,还是在运行一段时间后才报错
反馈下报错时间点的 tidb.log 吧。看下是否有相关报错
运行之后,5s左右的样子开始报错,一下是tidb日志
感谢反馈,确认一下 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
只有oom-action 配置,mem-quota-query暂未配置,应该使用的是默认
来了老弟
19
在 tidb.log 中可以看下 mem-quota-query 的值
反馈下截图中两个表的列数和行数