版本: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":…
要如何处理 检查日志涉及到表结构都一致。
万仞听松
(Ti D Ber Ztf5y Jyk)
3
看报错,更新tiflash状态失败,可以试试在集群里起来。如果确实不用了,也可以移除。
lllzd
(时光旅行者)
4
这通常是因为你之前禁用tiflash时,集群里还残留着一条“更新tiflash副本状态”的旧ddl任务。
嗯,清理 TiFlash 残留元数据 + 标记 DDL 任务为已完成,避免后续同类报错
恢复后,Drainer 读取到的表结构元数据与集群实际状态不匹配,导致无法继续同步。
Leonard
(Hacker Byb Hr4 Nu)
8
可以编辑drainer配置文件。跳过ddl。然后再重启
纯白镇的小智
(Ti D Ber Qm Qja01 M)
10
核心问题是 TiDB v3.1.0 drainer 回溯历史 TiFlash 相关 DDL 时,因集群禁用 TiFlash 导致元数据不匹配,启动失败
禁用 TiFlash 后残留 DDL 导致,执行reset master清空同步位点,重新从备份元数据 pos 启动 drainer 即可。
升级到 v4.0+,TiFlash 与 Drainer 兼容性大幅提升
全量恢复后,集群中残留了已禁用 TiFlash 相关的 DDL Job(update tiflash replica status),Drainer 在启动时重放历史 DDL 失败,导致进程异常退出。
修改 Drainer 的配置文件,添加 ignore-error 参数来忽略这个特定的错误。