Slackbot
04/22/2026, 8:20 AMNayan Gondaliya
04/22/2026, 8:48 AM3.7.0-SNAPSHOT using the Pipeline connector with:
• Apache Flink 1.20
• Source: PostgreSQL
• Sink: Apache Iceberg 1.9.1 on Amazon Web Services
I’m seeing a few issues and wanted to check whether these are known limitations / known bugs, or if fixes are already planned / on the roadmap.
-------
New tables are not discovered after restart from savepoint/checkpoint
The pipeline discovers new tables correctly during normal runtime.
However, after stopping the job and restarting from a savepoint/checkpoint, newly added matching tables are not discovered anymore.
Question:
Is table discovery state intentionally frozen/restored from the savepoint, or is this a known issue?
-------
Schema reconciliation fails after restart if schema changed while job was stopped
Scenario:
1. Stop job
2. Apply schema changes to source table
3. Restart job from savepoint
The job fails during startup / schema reconciliation instead of evolving the schema and continuing.
Question:
Is this expected behavior currently, or should schema evolution handle this case?
-------
Column rename behavior with Iceberg sink
When a column is renamed in PostgreSQL:
• Iceberg receives it as a new column (which I understand may be expected in lenient/evolve modes)
• old data remains under the old field / does not populate the new renamed field as expected.
I observed two scenarios:
Scenario 1 (Pipeline running continuously)
1. Column is renamed in PostgreSQL
2. New column is added to sink (Iceberg) with schema change enabled
3. Old data remains under old column, new column receives only new data
4. Old field is removed manually from sink table
5. Subsequent DML operations do not populate the new field; it remains NULL
Scenario 2 (Pipeline restarted after step 3)
1. Column is renamed in PostgreSQL
2. New column is added to sink (Iceberg) with schema change enabled
3. Old data remains under old column, new column receives only new data
4. Old field is removed manually from sink table
5. After restarting the pipeline, subsequent DML operations populate the new field correctly
Questions:
1. Is rename currently treated only as add-column semantics for Iceberg sink?
2. Is there an internal field mapping cache/state that only refreshes after restart?
3. Is proper rename mapping / seamless evolution planned?
-------
Would appreciate any guidance on whether these are:
• known/open issues
• expected current limitations
• already fixed in newer snapshots
• planned for future releases
ThanksNayan Gondaliya
04/22/2026, 8:50 AM-- java --
'debezium.signal.enabled.channels' = 'source',
'debezium.signal.data.collection' = 'public.debezium_signal'
and created the signal table in Postgres:
--- signal table ---
CREATE TABLE public.debezium_signal (
id VARCHAR(42) PRIMARY KEY,
type VARCHAR(32) NOT NULL,
data VARCHAR(2048)
);
Then I insert signals like:
--- trigger adhoc snapshot ---
INSERT INTO public.debezium_signal (id, type, data)
VALUES (
'1',
'execute-snapshot',
'{"data-collections": ["public.my_table"], "type": "incremental"}'
);
My understanding is that Flink CDC embeds Debezium and passes debezium.* properties through, but Flink CDC 3.x also has its own incremental snapshot framework (split enumerator / chunk snapshotting / checkpoint-aware recovery).
So I’m unsure whether Flink CDC 3.4.0 actually supports Debezium signaling semantics for triggering snapshots, or whether these configs are simply ignored / only partially honored.
Has anyone successfully used Debezium signaling with Flink CDC PostgreSQL source in 3.4.x?
Specifically:
1. Does Flink CDC read/process the signal table?
2. Can execute-snapshot trigger Flink CDC incremental snapshots?
3. Are there recommended alternatives for ad-hoc table re-snapshotting without restarting the job?
Any guidance would be greatly appreciated.Slackbot
04/23/2026, 3:53 PMSlackbot
04/24/2026, 1:49 AMSơn Bùi
05/06/2026, 3:19 AMSlackbot
05/06/2026, 7:21 PMSlackbot
05/11/2026, 7:43 AMSlackbot
05/14/2026, 7:45 AMSlackbot
05/14/2026, 8:00 AMA S Rakesh Krishna
05/24/2026, 6:13 PMlitiliu
05/29/2026, 7:15 AMauto.create.table.enabled.
PR: https://github.com/apache/flink-cdc/pull/4420
JIRA: https://issues.apache.org/jira/browse/FLINK-39797
The option defaults to true to preserve the current behavior. When set to false, the Fluss sink will fail if the target table does not already exist, instead of creating it automatically. This is useful for users who want to manage Fluss table creation explicitly.
Would appreciate your review when you have time. Thanks!Vinh Phạm
06/01/2026, 1:24 AMIrene Rodriguez
06/06/2026, 9:43 PMChangelogNormalizer from my Job Graph to save state memory.
My Postgres table is configured with REPLICA IDENTITY DEFAULT, so deletes only contain the Primary Key. My pipeline is a pure 1:1 Upsert pipeline with no SQL transformations. Does the flink-connector-postgres-cdc currently support and propagate the new keyOnlyDeletes(true) flag (from FLIP-510) to the Flink planner?Walter lain Taljuk
06/08/2026, 12:53 PMsink.compaction.enabled enabled, but it doesn't seem to rewrite or eliminate these files. I also occasionally see a cryptic "Array index out of range" error that disappears when I disable compaction.
Is it better to run a separate Flink job that periodically calls the Iceberg table maintenance APIs, or any other approach?
Open to suggestions, thanks!
Thanks in advance!vdontu
06/08/2026, 11:22 PMARRAY data types. Because of this
1. MySQL to Iceberg pipeline is not able to handle SET datatypes in MySQL.
a. It mentions here that SET MySQL datatype is converted to ARRAY<STRING> Flink SQL data type. This should be mapped to a Iceberg datatype which is not currently handled.
2. Postgres to Iceberg pipeline is not able to handle text[] datatypes in Postgres.
i. Similarly text[] Postgres datatype is converted to ARRAY<STRING> Flink SQL data type. This should be mapped to a Iceberg datatype which is not currently handled.
Caused by: org.apache.flink.cdc.common.exceptions.SchemaEvolveException: java.lang.IllegalArgumentException: Unsupported cdc type in iceberg: ARRAY<STRING>
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.applyCreateTable(IcebergMetadataApplier.java:238) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.lambda$applySchemaChange$2(IcebergMetadataApplier.java:130) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.common.event.visitor.SchemaChangeEventVisitor.visit(SchemaChangeEventVisitor.java:59) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.applySchemaChange(IcebergMetadataApplier.java:119) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.applyAndUpdateEvolvedSchemaChange(SchemaCoordinator.java:440) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.applySchemaChange(SchemaCoordinator.java:409) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.lambda$startSchemaChangesEvolve$1(SchemaCoordinator.java:250) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
... 5 more
Caused by: java.lang.IllegalArgumentException: Unsupported cdc type in iceberg: ARRAY<STRING>
at org.apache.flink.cdc.connectors.iceberg.sink.utils.IcebergTypeUtils.convertCDCTypeToIcebergType(IcebergTypeUtils.java:164) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.utils.IcebergTypeUtils.convertCdcColumnToIcebergField(IcebergTypeUtils.java:59) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.applyCreateTable(IcebergMetadataApplier.java:171) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.lambda$applySchemaChange$2(IcebergMetadataApplier.java:130) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.common.event.visitor.SchemaChangeEventVisitor.visit(SchemaChangeEventVisitor.java:59) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.connectors.iceberg.sink.IcebergMetadataApplier.applySchemaChange(IcebergMetadataApplier.java:119) ~[flink-cdc-pipeline-connector-iceberg-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.applyAndUpdateEvolvedSchemaChange(SchemaCoordinator.java:440) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.applySchemaChange(SchemaCoordinator.java:409) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.operators.schema.regular.SchemaCoordinator.lambda$startSchemaChangesEvolve$1(SchemaCoordinator.java:250) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
... 5 more
Anyone observed this before? is this a known issue?vdontu
07/22/2026, 11:12 PM2026-07-22 23:00:54,362 INFO org.apache.flink.cdc.runtime.operators.schema.common.SchemaRegistry [] - Handling evolved schema request: GetEvolvedSchemaRequest{tableId=sbschema.dea_tarmac_flight, schemaVersion=-1}
2026-07-22 23:00:54,366 INFO org.apache.flink.runtime.executiongraph.ExecutionGraph [] - Transform:Data -> SchemaOperator -> PrePartition (1/1) (b9d8de1899282a1b56c00c6f3a1f7483_90bea66de1c231edf33913ecd54406c1_0_8) switched from RUNNING to FAILED on postgres-cdc-to-iceberg-flight-taskmanager-1-1 @ 241.140.95.178 (dataPort=42617).
java.io.IOException: Can't get next record for channel InputChannelInfo{gateIdx=0, inputChannelIdx=0}
at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:106) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:638) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:231) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:973) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:917) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:970) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:949) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:763) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:575) ~[flink-dist-1.20.0.jar:1.20.0]
at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.io.IOException: Serializer consumed more bytes than the record had. This indicates broken serialization. If you are using custom serialization types (Value or Writable), check their serialization methods. If you are using a Kryo-serialized type, check the corresponding Kryo serializer.
at org.apache.flink.runtime.io.network.api.serialization.NonSpanningWrapper.readInto(NonSpanningWrapper.java:339) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.readNonSpanningRecord(SpillingAdaptiveSpanningRecordDeserializer.java:128) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.readNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:103) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.getNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:93) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:103) ~[flink-dist-1.20.0.jar:1.20.0]
... 10 more
Caused by: java.lang.IndexOutOfBoundsException
at org.apache.flink.core.memory.MemorySegment.get(MemorySegment.java:389) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.NonSpanningWrapper.readByte(NonSpanningWrapper.java:112) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.NonSpanningWrapper.readBoolean(NonSpanningWrapper.java:107) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.cdc.runtime.serializer.MapSerializer.deserialize(MapSerializer.java:152) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.MapSerializer.deserialize(MapSerializer.java:43) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.NullableSerializerWrapper.deserialize(NullableSerializerWrapper.java:91) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.event.DataChangeEventSerializer.deserialize(DataChangeEventSerializer.java:95) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.event.DataChangeEventSerializer.deserialize(DataChangeEventSerializer.java:40) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.event.EventSerializer.deserialize(EventSerializer.java:123) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.cdc.runtime.serializer.event.EventSerializer.deserialize(EventSerializer.java:39) ~[flink-cdc-dist-3.6.0.jar:3.6.0]
at org.apache.flink.streaming.runtime.streamrecord.StreamElementSerializer.deserialize(StreamElementSerializer.java:206) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.streamrecord.StreamElementSerializer.deserialize(StreamElementSerializer.java:44) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.plugable.NonReusingDeserializationDelegate.read(NonReusingDeserializationDelegate.java:53) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.NonSpanningWrapper.readInto(NonSpanningWrapper.java:337) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.readNonSpanningRecord(SpillingAdaptiveSpanningRecordDeserializer.java:128) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.readNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:103) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.getNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:93) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:103) ~[flink-dist-1.20.0.jar:1.20.0]
... 10 more
I am seeing with error when using Flink Postgres CDC. Anyone observed this issue before?Sumit Nekar
08/20/2026, 3:26 AMIrene Rodriguez
08/24/2026, 2:47 PMio.debezium.DebeziumException: Failed to deserialize data of EventHeaderV4.
We have several MySQL consumers working perfectly with Flink CDC, but one specific consumer refuses to work. We've tried various troubleshooting steps, including the official Flink recommended configurations for this issue, but haven't had any success. Has anyone run into this or found a fix?vishal.balaraman
08/26/2026, 11:19 AMtables: pattern. However, if a new table is created in MySQL after the job has started (while it's actively streaming), it's never picked up automatically, even though it matches the same pattern and would've been captured had it existed at startup.
Confirmed workaround: restarting the job fresh does pick up the new table correctly. So the discovery logic itself works fine; it's specifically the "table created while streaming, without a restart" case that doesn't.
What I need: a way for the newly created table to be picked up automatically without restarting the job. I tried enabling scan.newly-added-table.enabled along with several debezium.* schema history passthrough options, but still couldn't get it to work without a restart:
source:
type: mysql
hostname: mysql
port: 3306
username: root
password: rootpassword
tables: cdc_demo.users,cdc_demo.users_new
server-id: 5400-5404
scan.startup.mode: initial
jdbc.properties.allowPublicKeyRetrieval: "true"
jdbc.properties.useSSL: "false"
# Use flat dot notation for Debezium properties:
debezium.database.history.store.only.captured.tables.ddl: "false"
debezium.database.history.store.only.captured.databases.ddl: "false"
debezium.schema.history.internal.store.only.captured.tables.ddl: "false"
debezium.include.schema.changes: "true"
scan.newly-added-table.enabled: "true"
sink:
type: starrocks
jdbc-url: jdbc:<mysql://starrocks-fe:9030>
load-url: starrocks-fe:8030
username: root
password: ""
sink.buffer-flush.interval-ms: 1000
pipeline:
name: MySQL_to_StarRocks_CDC
parallelism: 1
schema.change.behavior: evolve
Question: Is live (no restart) discovery of newly created tables supported today in 3.6.0, and if so, what am I missing? If it's genuinely not supported, I'd like to raise a feature/bug ticket for it. Is this the right place to flag that first, or should I go straight to JIRA?
Original config for reference (MySQL to StarRocks):
source:
type: mysql
tables: cdc_demo.users,cdc_demo.users_new
scan.startup.mode: initial
server-id: 5400-5404
Thanks in advance!vishal.balaraman
09/01/2026, 9:18 AMdocker-compose. For this particular pipeline, I wanted a shorter interval, so I added:
execution.checkpointing.interval: 3s
under the pipeline: block in the pipeline YAML, assuming the job-level setting would override the cluster-level configuration as it normally does in Flink.
However, that didn't happen—the job continued checkpointing every 30s regardless of the value in the YAML.
After digging into it, it looks like this isn't really a case of the cluster configuration taking precedence. The Flink CDC pipeline YAML doesn't currently support execution.checkpointing.interval as a pipeline option, so the setting is simply ignored. The only way I was able to override it was by passing it through the CLI during submission:
-D execution.checkpointing.interval=3s
While looking into this, I also came across FLINK-34834, which proposes adding a flink-config: block to the pipeline YAML to allow pipeline-level overrides of flink-conf.yaml. That's essentially what I was trying to achieve here.
For reference, our setup:
• Flink 2.2.1 (Java 21)
• Flink CDC 3.6.0
• MySQL Pipeline Connector 3.6.0-2
• MySQL 8.0 / Driver 8.4.0
• Iceberg 1.11.0
• Nessie 0.108.1
• Trino 482
Has anyone else run into this, or is there a recommended way to configure job-specific Flink properties directly through the CDC pipeline YAML?Irene Rodriguez
09/02/2026, 10:20 AMvishal.balaraman
09/07/2026, 9:32 AMflink-cdc-pipeline-connector-iceberg (3.6.0-2.2) to stream MySQL → Iceberg on Glue.
When the partition key column is updated, we’re getting duplicate rows instead of the row being moved to the new partition.
Repro:
CREATE TABLE t (
id BIGINT,
val VARCHAR,
region VARCHAR
) PARTITIONED BY identity(region);
INSERT id=1, region=north;
UPDATE id=1 SET region=east;
After the update, id=1 appears twice: one row with region=north (old/stale) and one with region=east (new).
From what I understand, this happens because the equality delete only uses the primary key and doesn’t include the partition column, so the delete doesn’t remove the row from the old partition.
Has anyone solved this for partitioned tables? Is scheduled compaction the only practical workaround, or is there a write-side fix?
Also, does flink-cdc-pipeline-connector-iceberg expose any configuration to set the equality fields?
Any pointers would be appreciated.Sumit Nekar
09/09/2026, 3:24 PMvishal.balaraman
09/11/2026, 7:04 AMsink:
type: iceberg
table.properties.write.target-file-size-bytes: "4194304"
table.properties.write.parquet.row-group-size-bytes: "4194304"
table.properties.write.parquet.row-group-check-max-record-count: "10000"
A large batch arriving within one checkpoint still gets written as a single file, with the file size depending on how much data arrived during that checkpoint.
Does the Flink CDC pipeline Iceberg connector have any parameter to periodically flush or roll writer files by size or record count, independent of the checkpoint interval? Or is the checkpoint interval the only way to control the write frequency?vishal.balaraman
10/03/2026, 3:51 PMehsan faraji
10/09/2026, 6:21 PMksg980614
10/12/2026, 9:32 AMsql_log_bin=0 config for performance reasons, particularly to avoid generating binlog events for the table copy.
This setting also applies to the shadow table’s DDL and the final RENAME TABLE. Application connections continue writing DML to the binlog normally.
As a result, the connector does not receive the schema changes or the table swap. After the rename, it continues decoding row events using the old schema.
In our PoC, adding a column in the middle of a table caused subsequent values to be mapped to incorrect columns. The job remained running without reporting a deserialization error, so this appears to present a risk of silent data corruption.
We understand that scan.parse.online.schema.changes.enabled=true supports pt-osc by interpreting shadow-table schema changes and the subsequent swap.
However, those DDL events are absent from the binlog in our environment.
Is there someone who struggled with the same problem and could advise on the following?
1. Is there a supported way to detect and safely handle this scenario without logging the entire pt-osc copy operation? (I’m already aware of the scan.parse.online.schema.changes.enabled option, but my understanding is that it cannot handle this case because sql_log_bin=0 prevents the shadow table’s DDL and the final RENAME TABLE from being written to the binlog. Please correct me if I’m mistaken.)
2. Can the connector use TABLE_MAP_EVENT metadata, potentially with binlog_row_metadata=FULL, to detect schema mismatches and refresh the schema, or at least fail rather than emit incorrectly mapped records?
3. If external notifications provide the DDL statement and binlog positions captured immediately before and after the rename, is there a supported mechanism
to reconcile schema history and replay the affected events safely? These positions bracket the rename but do not identify its exact boundary.
We would prefer to avoid maintaining a custom connector fork or synchronously blocking DB schema changes on a CDC acknowledgment.
Any recommended configuration, operational approach, or related issue would be appreciated.yuxiqian.yxq
10/13/2026, 4:02 AMsql_log_bin=0 , pt-osc will not write any schema change related info into the binlog. Downstream CDC (and other binlog subscribers) may still receive data changes but interpret them using the old schema, causing errors or incorrect column mappings. I believe we need another approach to inform CDC that the schema has been changed, since it's not available from binlog. Sadly the only approach to recover from this situation is to re-snapshotting related tables.litiliu
11/03/2026, 9:55 AMearliest and full startup modes.
Could a maintainer please approve the CI workflow run and help review the PR? Thanks!