【 TiDB 使用环境】生产环境
【 TiDB 版本】V8.1.0 tidm版本也是8.1.0
【复现路径】做过哪些操作出现的问题
使用tidb-lightning进行全量数据迁移,根据gtid进行tidm增量数据迁移
【遇到的问题:问题现象及影响】
上下游表结构相同,但是会偶发性报错Column count doesn’t match value count: 13 (columns) vs 16 (values),排查了下游的binlog-schema以及上游binlog日志,发现上下游列数都是16。不知道为何报错。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
应该是历史上有同名任务,而那个任务里的 schema 是老的schema 导致的。试下用binlog-schema
命令更新下schema tracker中的缓存
Use "dmctl binlog-schema [command] --help" for more information about a command.
» binlog-schema update --help
update tables schema structure
Usage:
dmctl binlog-schema update <task-name> <database> <table> [schema-file] [flags]
Flags:
--flush flush the table info and checkpoint immediately (default true)
--from-source use the schema from upstream database as the schema of the specified tables
--from-target use the schema from downstream database as the schema of the specified tables
-h, --help help for update
--sync sync the table info to master to resolve shard ddl lock, only for optimistic mode now (default true)
Global Flags:
-s, --source strings MySQL Source ID.
»
2 个赞
感谢回答!确实有同名任务,我先清理下缓存试试。
1 个赞
可以清理所有表的缓存吗?因为最近不只这张表有此报错,是偶发性报错,不一定是哪张表就出现该错误。
厉害,这都能定位到问题
只要是两次任务执行期间,有 DDL 修改的都有可能报错。 其实start-task
有个参数是--remove-meta
,会自动清理缓存的。 不过对你来说,这个任务就需要重建了,可能得重新找个 binlog 位置了。
另外一种方案是写个脚本,先用binlog-schema list
获取所有同步的表,然后都刷新一下缓存。
好的感谢,上午我重找binlog位置,重新新建了增量同步任务。下午又报同样类型的错(另外一张表) 我试一下刷新所有缓存的脚本
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。