为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:3.0 rc
- 【问题描述】:在对一个大表(3亿行)添加索引时报错: ERROR 1150 cancelled DDL job
sql:alter table xxx add index idx_xx(xx);
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
sql:alter table xxx add index idx_xx(xx);
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
麻烦提供一下以下信息:
1、select tidb_version() 的执行结果:
3、log:
通过 admin show ddl 以及 admin show ddl jobs 查看 ddl 语句的状态
第2步是指什么操作呢?
我这边是二进制部署的集群
https://pingcap.com/docs-cn/stable/reference/sql/statements/admin/#admin
在 MySQL 客户端中执行 admin show ddl 以及 admin show ddl jobs 查看 ddl 语句的状态
add index 这个操作执行了多久报的 ERROR 1150 的错误?
tidb tikv 实例有重启的情况吗?实例重启可以通过 grep -i welcome 对应的 tidb.log 或者 tikv.log 判断
DDL状态:
运行了55分钟;tikv无重启情况
1、是分区表
create sql:
xxx
(dt
int(11) DEFAULT NULL COMMENT ‘日期’,server_id
varchar(10) DEFAULT NULL COMMENT ‘服务器id’,serverip
varchar(18) DEFAULT NULL COMMENT ‘服务器ip’,server_isp
varchar(20) DEFAULT NULL COMMENT ‘服务器运营商’,hour
tinyint(4) DEFAULT NULL COMMENT ‘小时’,delay
bigint(20) DEFAULT NULL COMMENT ‘数据量’,users
int(11) DEFAULT NULL COMMENT ‘用户量’dt
) (index SQL:
ALTER TABLE table_name
ADD INDEX index_server_id
(server_id
);
2、日志,不方便传文字版:
https://pingcap.com/docs-cn/v3.0/reference/garbage-collection/configuration/#gc-配置
1、这边情况是20+G,3亿+行的表,有什么好的调参建议(哪个参数 值多少)吗
2、没有修改过什么参数
你好,
是的,目前 gc 时间为 ‘10m0s’,可以通过 select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb;
来检查 tikv_gc_life_time
值,具体可看上面链接。
可以根据目前业务情况磁盘状态设置下 gc 时间,亦可以在测试环境试跑下看下执行时间为多少,建议在业务低峰期进行大表的 add index 操作,以防止频繁的数据操作增大 gc 占用空间,对 tidb 集群造成影响,
update mysql.tidb set VARIABLE_VALUE="24h" where VARIABLE_NAME="tikv_gc_life_time";
update mysql.tidb set VARIABLE_VALUE=“24h” where VARIABLE_NAME=“tikv_gc_life_time”;
有用,加上索引了,thx
btw,耗时6h
感谢回复,可以尝试将集群升级至 3.0 最新版,此版本对添加索引的 gc 时间设置也是做了优化,可以看下 release not 。
改为
update mysql.tidb set VARIABLE_VALUE=“12h” where VARIABLE_NAME=“tikv_gc_life_time”;
无用
你好,这个帖子已经很久远,请开新帖我们追踪下你的问题
见此贴
OK~
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。