Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

异常:fetch failed by table meta,版本1.0.26,tsdb.enable=true #639

Closed
yueapple opened this issue May 14, 2018 · 1 comment
Closed
Labels
Milestone

Comments

@yueapple
Copy link

原sql是对表card_record 进行了两次alter操作
alter table card_record modify column customization_id bigint unsigned NOT NULL COMMENT '定制id' | 查看详情
alter table card_record modify column upgraded_customization_id bigint unsigned NOT NULL COMMENT '升级后定制id' | 查看详情

线上一次alter操作步骤是:

  1. DROP TABLE IF EXISTS _card_record_gho
  2. DROP TABLE IF EXISTS _card_record_del
  3. create table yushitai_test._card_record_gho like yushitai_test.card_record
  4. alter table yushitai_test._card_record_gho modify column customization_id bigint unsigned NOT NULL COMMENT 'ŚģöŚą∂id'
  5. insert 数据到_card_record_gho
  6. rename table yushitai_test.card_record to yushitai_test._card_record_del yushitai_test._card_record_gho to yushitai_test.card_record

手动设置位点到两条alter操作时间之前,重新消费时,当执行第二次alter 操作时,到步骤5时,会出现exception: fetch failed by table meta:yushitai_test._card_record_gho

2018-05-14 15:32:44.078 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_gho /* generated by server /
2018-05-14 15:32:44.078 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_del /
generated by server /
2018-05-14 15:32:44.078 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_ghc /
generated by server /
2018-05-14 15:32:44.079 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : create /
gh-ost / table yushitai_test._card_record_ghc (
id bigint auto_increment,
last_update timestamp not null DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
hint varchar(64) charset ascii not null,
value varchar(255) charset ascii not null,
primary key(id),
unique key hint_uidx(hint)
) auto_increment=256
2018-05-14 15:32:44.079 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : create /
gh-ost / table yushitai_test._card_record_gho like yushitai_test.card_record
2018-05-14 15:32:44.080 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : alter /
gh-ost / table yushitai_test._card_record_gho modify column customization_id bigint unsigned NOT NULL COMMENT 'ŚģöŚą∂id'
2018-05-14 15:32:44.085 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : create /
gh-ost / table yushitai_test._card_record_del (
id int auto_increment primary key
) engine=InnoDB comment='ghost-cut-over-sentry'
2018-05-14 15:32:44.090 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_del /
generated by server /
2018-05-14 15:32:44.090 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : rename /
gh-ost / table yushitai_test.card_record to yushitai_test._card_record_del, yushitai_test._card_record_gho to yushitai_test.card_record
2018-05-14 15:32:44.091 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_ghc /
generated by server /
2018-05-14 15:32:44.104 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : rename table _card_record_del to _card_record_del_bak20180508125310
2018-05-14 15:32:45.093 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_gho /
generated by server /
2018-05-14 15:32:45.094 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_del /
generated by server /
2018-05-14 15:32:45.094 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : DROP TABLE IF EXISTS _card_record_ghc /
generated by server /
2018-05-14 15:32:45.096 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : create /
gh-ost / table yushitai_test._card_record_ghc (
id bigint auto_increment,
last_update timestamp not null DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
hint varchar(64) charset ascii not null,
value varchar(255) charset ascii not null,
primary key(id),
unique key hint_uidx(hint)
) auto_increment=256
2018-05-14 15:32:45.096 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : create /
gh-ost / table yushitai_test._card_record_gho like yushitai_test.card_record
2018-05-14 15:32:45.097 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - dup apply for sql : alter /
gh-ost */ table yushitai_test._card_record_gho modify column upgraded_customization_id bigint unsigned NOT NULL COMMENT 'ŚćáÁļߌźéŚģöŚą∂id'
2018-05-14 15:32:45.103 [destination = yushitai_test , address = /10.32.200.228:5002 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.MysqlEventParser - ERROR ## parse this event has an error , last position : [EntryPosition[included=false,journalName=mysql-bin.000056,position=286998741,serverId=32114196,timestamp=1525755246000]]
com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed.
Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: com.alibaba.otter.canal.parse.exception.CanalParseException: fetch failed by table meta:yushitai_test._card_record_gho
Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: fetch failed by table meta:yushitai_test._card_record_gho
Caused by: java.io.IOException: ErrorPacket [errorNumber=1146, fieldCount=-1, message=Table 'yushitai_test._card_record_gho' doesn't exist, sqlState=42S02, sqlStateMarker=#]
with command: show create table yushitai_test._card_record_gho
at com.alibaba.otter.canal.parse.driver.mysql.MysqlQueryExecutor.query(MysqlQueryExecutor.java:61) ~[canal.parse.driver-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.query(MysqlConnection.java:94) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.getTableMeta(TableMetaCache.java:167) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.getTableMeta(LogEventConvert.java:759) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEvent(LogEventConvert.java:428) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:114) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:66) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser.parseAndProfilingIfNecessary(AbstractEventParser.java:337) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3$1.sink(AbstractEventParser.java:184) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:152) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:220) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

@agapple
Copy link
Member

agapple commented Jun 7, 2018

定位为一个ddl解析bug

@agapple agapple added the bug label Jun 7, 2018
@agapple agapple added this to the v1.0.26 milestone Jun 7, 2018
agapple added a commit that referenced this issue Jun 8, 2018
@agapple agapple closed this as completed Jun 8, 2018
LieLieLiekey pushed a commit to LieLieLiekey/canal that referenced this issue May 24, 2023
alibaba#638 异常挂起后手工解挂2次,channel pipeline状态都显示正常,但实际上channel已经假死不同步。processId…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants