pingcap/tiflow

Support to skip specific execution error in MySQL sink

Open

#832 opened on Aug 10, 2020

 (1 comment) (0 reactions) (0 assignees)Go (310 forks)auto 404
difficulty/mediumhelp wanted

Repository metrics

Stars
 (461 stars)
PR merge metrics
 (PR metrics pending)

Description

Feature Request

Is your feature request related to a problem? Please describe:

Replication to downstream could meet various errors, in the current implementation of TiCDC, the replication task will pause at once when MySQL sink reports an error. If the error is an unrecoverable error, such as TiDB compatibility issue, or data inconsistency(such as duplicated index error), or schema is not the same between upstream and downstream, the only way to recovery replication is skip the failed executed event by start-ts.

However when there exist more similar errors with the same error type, it is an unfriendly experience to ignore these SQL events one by one.

Many replication scenarios require more availability rather than data consistency, we need to provide a better solution to achive a better tradeoff.

Btw, this is a similar feature from: https://github.com/pingcap/tidb-binlog/issues/963

Describe the feature you'd like:

  • Introduce a skip error mechanism, to allow MySQL sink to ignore specific execution error.
    • The ignored rows should be recorded in log or somewhere else, to provide some undo ability

Time

GanttStart: YYYY-MM-DD GanttDue: YYYY-MM-DD GanttProgress: 0%

Workload estimation(person-day)

  • Design: 5
  • Develop & QA: 10
  • Document: 3

Contributor guide