**Describe the bug**
The bug may not be reproduced on each platform.

**How to reproduce**
* Set up replication relationship between MySQL and ClickHouse
* When data copy has completed and after a while, stop ClickHouse service
* Wait for 0.5 hour, start ClickHouse service, you will get odd error, may different from each time

**Additional comment**
I strongly suspect MySQL replication protocol send abnormal message to ClickHouse, which cause ClickHouse side code unable to parse the message
* Is it possible to print the abnormal message?
* Is there a mechanism to let MySQL resend required binlog message, if the fetch one is abnormal?

**Error message and/or stacktrace**
```
2020.09.14 13:14:28.493063 [ 4737 ] {} <Error> MaterializeMySQLSyncThread: Code: 1002, e.displayText()
 = DB::Exception: ParseRow: Unhandled MySQL field type:0, Stack trace (when copying this message,
 always include the lines below):
```
```
2020.09.14 13:14:04.557507 [ 4721 ] {} <Error> MaterializeMySQLSyncThread: Code: 32, e.displayText()
 = DB::Exception: Attempt to read after eof, Stack trace (when copying this message, always include
the lines below):
```
```
2020.09.14 12:51:54.084817 [ 21290 ] {} <Error> MaterializeMySQLSyncThread: std::exception. Code: 10
01, type: std::length_error, e.what() = basic_string, Stack trace (when copying this message, always
 include the lines below):
```
```
2020.09.14 12:26:44.455515 [ 20389 ] {} <Error> MaterializeMySQLSyncThread: Code: 62, e.displayText(
) = DB::Exception: Syntax error: failed at position 121 ('BE'): BE. Expected one of: RENAME DATABASE
, TRUNCATE, RENAME TABLE, DROP query, RENAME DICTIONARY, DETACH, RENAME query, DROP, create query, C
REATE, EXCHANGE TABLES, ALTER TABLE, alter query, Stack trace (when copying this message, always inc
lude the lines below):
```
```
2020.09.14 12:14:25.200499 [ 4794 ] {} <Error> MaterializeMySQLSyncThread: Code: 62, e.displayText()
 = DB::Exception: Syntax error: failed at position 121 ('BEG'): BEG. Expected one of: RENAME DATABAS
E, TRUNCATE, RENAME TABLE, DROP query, RENAME DICTIONARY, DETACH, RENAME query, DROP, create query,
CREATE, EXCHANGE TABLES, ALTER TABLE, alter query, Stack trace (when copying this message, always in
clude the lines below):
```
}
            case UPDATE_ROWS_EVENT_V1:
            case UPDATE_ROWS_EVENT_V2: {
                if (do_replicate())
                    event = std::make_shared<UpdateRowsEvent>(table_map);
                else
                    event = std::make_shared<DryRunEvent>();
                event->parseHeader(payload);
                event->parseEvent(payload);
                break;
            }
            case GTID_EVENT: {
                event = std::make_shared<GTIDEvent>();
                event->parseHeader(payload);
                event->parseEvent(payload);
                position.update(event);
                break;
            }
            default: {
                event = std::make_shared<DryRunEvent>();
                event->parseHeader(payload);
                event->parseEvent(payload);
                break;
            }
        }
        payload.ignoreAll();
    }
}
}