drainer无法启动

版本:v3.1.0
现象:使用备份工具导入备份全量数据并恢复后 按照metadata pos扩容drainer 一直起不来。
之前集群开启tiflsh后来禁用了。
日志报错:[ERROR] [server.go:287] [“syncer exited abnormal”] [error="handlePreviousDDLJobIfNeed failed: handle ddl job ID:50, Type:update tiflash replica status, State:synced, SchemaState:public, SchemaID:45, TableID:47, RowCount:0, ArgLen:0, start time: 2020-03-31 21:12:50.848 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0 failed, the schema info: {\n\t\t"hasImplicitCol": false,\n\t\t"schemaMetaVersion": 0,\n\t\t"schemaNameToID":…

要如何处理 检查日志涉及到表结构都一致。

升级drainer可以跳过不支持DDL

看报错,更新tiflash状态失败,可以试试在集群里起来。如果确实不用了,也可以移除。

这通常是因为你之前禁用tiflash时,集群里还残留着一条“更新tiflash副本状态”的旧ddl任务。

TiDB v3.1.0 好像支持, 要升级吗?

嗯,清理 TiFlash 残留元数据 + 标记 DDL 任务为已完成,避免后续同类报错

恢复后,Drainer 读取到的表结构元数据与集群实际状态不匹配,导致无法继续同步。

可以编辑drainer配置文件。跳过ddl。然后再重启

可以跳过或者标记为成功然后重试

核心问题是 TiDB v3.1.0 drainer 回溯历史 TiFlash 相关 DDL 时,因集群禁用 TiFlash 导致元数据不匹配,启动失败

这个是不是缩容掉tiflash组件就可以了

禁用 TiFlash 后残留 DDL 导致,执行reset master清空同步位点,重新从备份元数据 pos 启动 drainer 即可。

备份的元数据从哪里获取呢

升级到 v4.0+,TiFlash 与 Drainer 兼容性大幅提升

重新同步风险也有,但好像没有更好的办法了

重新同步之后可以用校验同步再校验一下

全量恢复后,集群中残留了已禁用 TiFlash 相关的 DDL Job(update tiflash replica status),Drainer 在启动时重放历史 DDL 失败,导致进程异常退出。

修改 Drainer 的配置文件,添加 ignore-error 参数来忽略这个特定的错误。

修改完要重启 Drainer吗?

应该要重新加载一下配置吧