[
https://issues.apache.org/jira/browse/FLINK-34764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17828690#comment-17828690
]
Flink CDC Issue Import commented on FLINK-34764:
------------------------------------------------
Date: Mon Jan 16 10:35:17 CST 2023, Author:
[ThisisWilli|https://github.com/ThisisWilli]
Maraidb's binlog format is different from mysql's binlog format, you should
change debezium's source code to adapt this.
> FlinkCDC is incompatible with MariaDB 10.0.24
> ---------------------------------------------
>
> Key: FLINK-34764
> URL: https://issues.apache.org/jira/browse/FLINK-34764
> Project: Flink
> Issue Type: Bug
> Components: Flink CDC
> Reporter: Flink CDC Issue Import
> Priority: Major
> Labels: github-import
>
> FlinkCDC is incompatible with MariaDB 10.0.24.
> There will be **exceptions** when **debezium** parses the binlog.
> mysqlbinlog fails to read binlog event which inserts **TIME, DATETIME and
> TIMESTAMP** with wrong number of microseconds.
> The low-level temporal format used by TIME, DATETIME and TIMESTAMP is
> different in MySQL 5.6 and [MariaDB
> 10.0|https://mariadb.com/kb/en/what-is-mariadb-100/]. (In [MariaDB
> 10.1|https://mariadb.com/kb/en/what-is-mariadb-101/], the MySQL
> implementation is used by default - see
> [mysql56_temporal_format|https://mariadb.com/kb/en/server-system-variables/#mysql56_temporal_format).)
> **Environment :**
> - Flink version : 1.13.6
> - Flink CDC version: 2.2.1
> - Database and version: MariaDB 10.0.24
> **To Reproduce**
> Steps to reproduce the behavior:
> 1. The test code :
> The field type in the database is **Datetime(6)**, and the value is
> **2016-12-21 17:57:16.000000**.
> After analysis, the obtained string is **103946-26-59 06:40:65**.
> 2. The error :
> There will be exceptions when debezium parses the binlog:
> `java.io.EOFException: Failed to read next byte from position -1536265298
> at
> com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:213)
> at
> com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.readInteger(ByteArrayInputStream.java:52)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeLong(AbstractRowsEventDataDeserializer.java:261)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeCell(AbstractRowsEventDataDeserializer.java:166)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeRow(AbstractRowsEventDataDeserializer.java:145)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserializeRows(UpdateRowsEventDataDeserializer.java:72)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserialize(UpdateRowsEventDataDeserializer.java:58)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserialize(UpdateRowsEventDataDeserializer.java:33)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.deserializeEventData(EventDeserializer.java:329)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.nextEvent(EventDeserializer.java:238)
> at
> io.debezium.connector.mysql.MySqlStreamingChangeEventSource$1.nextEvent(MySqlStreamingChangeEventSource.java:233)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:949)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:599)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:854)
> at java.lang.Thread.run(Thread.java:748)
> java.io.EOFException: Failed to read next byte from position -1536265298
> at
> com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.read(ByteArrayInputStream.java:213)
> at
> com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.readInteger(ByteArrayInputStream.java:52)
> at
> io.debezium.connector.mysql.RowDeserializers.deserializeVarString(RowDeserializers.java:298)
> at
> io.debezium.connector.mysql.RowDeserializers$UpdateRowsDeserializer.deserializeVarString(RowDeserializers.java:130)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeCell(AbstractRowsEventDataDeserializer.java:194)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeRow(AbstractRowsEventDataDeserializer.java:145)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserializeRows(UpdateRowsEventDataDeserializer.java:72)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserialize(UpdateRowsEventDataDeserializer.java:58)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.UpdateRowsEventDataDeserializer.deserialize(UpdateRowsEventDataDeserializer.java:33)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.deserializeEventData(EventDeserializer.java:329)
> at
> com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.nextEvent(EventDeserializer.java:238)
> at
> io.debezium.connector.mysql.MySqlStreamingChangeEventSource$1.nextEvent(MySqlStreamingChangeEventSource.java:233)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:949)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:599)
> at
> com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:854)
> at java.lang.Thread.run(Thread.java:748]
> `
> <img width="946" alt="image"
> src="https://user-images.githubusercontent.com/35026750/210321758-45048701-d93c-488f-ac32-2321180e50d9.png">
> **Additional Description**
> [MariaDB 10.1.2|https://mariadb.com/kb/en/mariadb-1012-release-notes/]
> introduced the
> [--mysql56-temporal-format|https://mariadb.com/kb/en/server-system-variables/#mysql56_temporal_format]
> option, on by default, which allows MariaDB to store DATETMEs using the same
> low-level format MySQL 5.6 uses. For more information, see [Internal
> Format|https://mariadb.com/kb/en/datetime/#internal-format], below.
> [incompatibilities between MariaDB 10.0 and MySQL
> 5.6|https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility]
> [mysql56_temporal_format|https://mariadb.com/kb/en/server-system-variables/#mysql56_temporal_format]
> [DATETIME|https://mariadb.com/kb/en/datetime]
> [mysqlbinlog fails to read binlog event which inserts timestamp with wrong
> number of microseconds|https://jira.mariadb.org/browse/MDEV-9567]
> [MariaDB 10.0.25 Datetime
> 类型无法解析毫秒级|https://github.com/alibaba/canal/issues/385]
> ---------------- Imported from GitHub ----------------
> Url: https://github.com/apache/flink-cdc/issues/1851
> Created by: [lollipopcs|https://github.com/lollipopcs]
> Labels: bug,
> Created at: Tue Jan 03 16:12:57 CST 2023
> State: open
--
This message was sent by Atlassian Jira
(v8.20.10#820010)