1.tidb cluster 版本:v5.1.1
2.问题描述:所有使用tiflash的表均无法正常打开,而没有使用tifalsh的表都能正常打开,将有问题的表取消使用tiflash后也恢复正常。
3.问题出现后尝试重启tiflash,出现以下报错
4.将tiflash缩容后重新扩容还是报上述错误
5.缩容前保存了今天的日志文件,链接如下:tiflash日志.7z (14.7 MB)
1.tidb cluster 版本:v5.1.1
2.问题描述:所有使用tiflash的表均无法正常打开,而没有使用tifalsh的表都能正常打开,将有问题的表取消使用tiflash后也恢复正常。
3.问题出现后尝试重启tiflash,出现以下报错
咱们先看看扩容 tiflash 有什么报错吧(上面的报错只是 tiup 的报错,需要看具体的日志)
麻烦提供下表 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
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
路径有
没有这个文件 t_28972.sql
之前执行了tiflash的缩容操作,{tiflash data dir}/data/metadata/db_26465/t_28972.sql文件应该已经不存在了;现在重新扩容tiflash后无法导入表,也没有{tiflash data dir}/data/metadata/db_26465/t_28972.sql文件。
麻烦提供下现在 tiflash 的日志
日志显示 tiflash 无法正常服务,原因是 db_ysb_salesmen.ts_salesmen_task
这张表中出现了 int 类型列的 default value 为 0.00,导致初始化失败
把表中出现了 int 类型列的 default value 为 0.00的,改为0,然后重新缩扩容,好像也还是不行
db_ysb_salesmen.ts_salesmen_task
这张表如果仅用于测试环境,建议删掉重建
请按如下方式提供完整的 集群日志和信息,导出后可压缩加密上传 私信我们解压密码
保证 Tiup 版本 为最新
tiup update --self
tiup intall diag
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 列删除。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。