tiflash不能正常使用

1.tidb cluster 版本:v5.1.1
2.问题描述:所有使用tiflash的表均无法正常打开,而没有使用tifalsh的表都能正常打开,将有问题的表取消使用tiflash后也恢复正常。
3.问题出现后尝试重启tiflash,出现以下报错


4.将tiflash缩容后重新扩容还是报上述错误

5.缩容前保存了今天的日志文件,链接如下:tiflash日志.7z (14.7 MB)

2 个赞

咱们先看看扩容 tiflash 有什么报错吧(上面的报错只是 tiup 的报错,需要看具体的日志)

2 个赞

2 个赞

2 个赞

麻烦提供下表 db_ysb_salesmen.ts_salesmen_task 的 schema,可通过 desc db_ysb_salesmen.ts_salesmen_task 语句查询;
再提供下表在 tiflash 的 .sql 文件,即文件 {tiflash data dir}/data/metadata/db_26465/t_28972.sql

2 个赞

user_id int(11) NO PRI
month int(11) NO PRI 0
user_type tinyint(4) NO PRI 0
sys_cash decimal(16,2) NO 0.00
individual_cash decimal(10,2) NO 0.00
indiv_cash_fr decimal(10,2) NO 0.00
indiv_cash_fr_min decimal(10,2) NO 0.00
sys_group_cash decimal(16,2) NO 0.00
group_cash decimal(16,2) NO 0.00
group_cash_fr decimal(16,2) NO 0.00
individ_store_cash decimal(10,2) NO 0.00
group_store_cash decimal(16,2) NO 0.00
individ_hall_cash decimal(10,2) NO 0.00
group_hall_cash decimal(16,2) NO 0.00
adjust_cash decimal(10,2) NO 0.00
sys_store_cnt int(255) unsigned NO 0
indiv_store_cnt int(255) unsigned NO 0
indiv_store_cnt_wt decimal(5,4) NO 0.0000
sys_group_store_cnt int(255) unsigned NO 0
group_store_cnt int(255) unsigned NO 0
sys_new_store_cnt int(11) NO 0
indiv_new_store_cnt int(11) NO 0
indiv_new_store_cnt_wt decimal(5,4) NO 0.0000
sys_group_new_store_cnt int(11) NO 0
group_new_store_cnt int(11) NO 0
group_signed_store_cnt int(11) NO 0
indiv_signed_store_cnt int(11) NO 0
sys_struct_cnt int(10) NO 0
indiv_struct_cnt int(10) NO 0
indiv_struct_cnt_wt decimal(5,4) NO 0.0000
sys_group_struct_cnt int(10) NO 0
group_struct_cnt int(10) NO 0
struct_stage int(10) NO 0
mtime timestamp NO CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
ctime int(11) NO 0
indiv_self_cash int(11) NO 0
group_self_cash int(11) NO 0
individ_proxy_cash decimal(8,2) NO 0.00
individ_proxy_drug smallint(6) NO 0
b_spe_user tinyint(4) NO 0
b_spe_cash tinyint(4) NO 0
spe_dis_cash decimal(10,2) NO 0.00
b_spe_cnt tinyint(4) NO 0
spe_ref_cnt decimal(10,2) NO 0.00
teambuy_valid_store_cnt int(11) NO 0
newstore_perbd tinyint(4) NO 0
new_store_cnt int(11) unsigned NO 0
self_cash_quota decimal(12,2) NO 0.00
note varchar(255) YES
plan_new_staff mediumint(6) YES 0
fr_spe_cash tinyint(4) NO 0
fr_spe_dis_cash decimal(10,2) NO 0.00
hrbp_cash_cnt decimal(10,2) NO 0.00
hrbp_drugstore_cnt int(6) NO 0.00
hrbp_fr_cash_cnt decimal(10,2) NO 0.00
hrbp_cover_rate_cnt decimal(4,2) NO 0.00

2 个赞

路径有
没有这个文件 t_28972.sql

2 个赞

之前执行了tiflash的缩容操作,{tiflash data dir}/data/metadata/db_26465/t_28972.sql文件应该已经不存在了;现在重新扩容tiflash后无法导入表,也没有{tiflash data dir}/data/metadata/db_26465/t_28972.sql文件。

2 个赞

麻烦提供下现在 tiflash 的日志

2 个赞

2 个赞

2台tiflash的日志文件:
log54.7z (34.5 MB)
log53.7z (29.1 MB)

2 个赞

日志显示 tiflash 无法正常服务,原因是 db_ysb_salesmen.ts_salesmen_task 这张表中出现了 int 类型列的 default value 为 0.00,导致初始化失败

2 个赞

把表中出现了 int 类型列的 default value 为 0.00的,改为0,然后重新缩扩容,好像也还是不行

db_ysb_salesmen.ts_salesmen_task 这张表如果仅用于测试环境,建议删掉重建

2 个赞

请按如下方式提供完整的 集群日志和信息,导出后可压缩加密上传 私信我们解压密码

保证 Tiup 版本 为最新

tiup update --self
  1. 安装 diag 工具
tiup intall diag
  1. 数据收集
 tiup diag collect <cluster-name> -f "2021-09-24 00:00 +0800 " -t "2021-09-26 12:00 +0800" -l 5000 --exclude monitor -o output-data

其中:

  • -f/--form : 采集时间起始点,默认为当前时刻的2小时前,如果不带时区(+0800)默认为UTC, 也支持 -f="-3h" 这种格式,指定收集最近几小时的数据。
  • -t/--to : 采集时间结束点,默认为当前时刻,如果不带时区(+0800)默认为UTC
    • 可通过形如 +0800 的语法指定时区,如 -f "12:30 +0900"
  • -l : 传输文件时的带宽限制,单位 Kbit/s , 默认为 10000 (即 scp-l 参数)
  • -o : 存储采集后数据的路径,工具会自动在该路径下新建一个名称中包含时间和 session ID 的子目录,默认会存放在 TiUP 目录( ~/.tiup )中
  • 另可通过 -R/--role , -N/--node , --include , --exclude 等参数筛选收集数据的范围,具体参数说明可通过 tiup diag collect -h 查看
  • 更多参数也可以通过 tiup diag collect -h 查看

修改 default value 的值无法绕过此错误。错误跟新加列时,第一次设置的默认值有关。

可以通过删掉表重建,重建的时候将 int 类型列的默认值改为 0。
或者可以尝试在原表上新建另外一列 int 型的列,新建时默认值设为 0,并将原来列的值拷贝到新的列,然后将原来默认值为 ‘0.00’ 的 int 列删除。

3 个赞

感谢,把db_ysb_salesmen.ts_salesmen_task表删掉后重建就解决了。

1 个赞

:+1::+1::call_me_hand:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。