Hi there I have issue to use flink sql connector to capture change data from MariaDB(MySQL) when configure “debezium.* settings here are more details: I have following table in the source database (MariaDB): ‘’’CREATE TABLE `client_test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(500) NOT NULL DEFAULT '', `age` int(11) NOT NULL, PRIMARY KEY (`id`) ); ‘’'
Becasue some reason I need only partial data in this table for the snapshot so I define the Flink stream table as follow: ‘’’CREATE TABLE client_cdc ( id DOUBLE, name VARCHAR(500), age DOUBLE, PRIMARY KEY(id) NOT ENFORCED ) WITH ( 'connector' = 'mysql-cdc', 'hostname' = 'mariadb', 'port' = '3306', 'username' = 'ooo', 'password' = 'ooo', 'database-name' = 'xxx', 'scan.startup.mode' = 'initial', 'table-name' = 'client_test', 'debezium.snapshot.query.mode' = 'custom', 'debezium.snapshot.select.statement.overrides' = 'xxx.client_test', 'debezium.snapshot.select.statement.overrides.xxx.client_test' = 'SELECT * FROM xxx.client_test WHERE id > 3' ); ‘’’ Above, I tried do filter out the rows which id is less than 3 when sanpshot. But after execute select * from client_cdc; in flink client I can still see all the sanpshot. I also try to run this: ‘’’CREATE TABLE client_cdc ( id DOUBLE, name VARCHAR(500), age DOUBLE, PRIMARY KEY(id) NOT ENFORCED ) WITH ( 'connector' = 'mysql-cdc', 'hostname' = 'mariadb', 'port' = '3306', 'username' = 'ooo', 'password' = 'ooo', 'database-name' = 'xxx', 'scan.startup.mode' = 'initial', 'table-name' = 'client_test', 'debezium.snapshot.query.mode' = 'custom', 'debezium.snapshot.select.statement.overrides' = 'xxx.client_test', 'debezium.snapshot.select.statement.overrides.xxx.client_test' = 'this should failed SELECT * FROM xxx.client_test WHERE id > 3' ); ‘’' This time I give an invaild query to 'debezium.snapshot.select.statement.overrides.xxx.client_test' but I can still execute select * from client_cdc; and it still take a full snapshot. In other word it seems to me the Flink CDC connector is ignoring the settings are Prefix debezium.* Am I missing anything here? According to the document I be able to config the debezium but doesn’t seems the case. The expectation is to see only rows selected during snapshot in configuration: "debezium.snapshot.select.statement.overrides.[database].[table] “ ex: SELECT * FROM xxx.client_test WHERE id > 3 I should only see id is greater than 3 after the snapshot in the stream table even I have id less than 3 in the table in mysql database Am I missing anything here? The Flink version I’m using :1.18 Flink cdc connector I’m using : flink-sql-connector-mysql-cdc-3.1.1 JDBC version: mysql-connector-j-9.0.0 Here is the setting about debezium.snapshot.select.statement.overrides : https://debezium.io/documentation/reference/1.9/connectors/mysql.html#mysql-property-snapshot-select-statement-overrides Thank you for your help in advanced Br, Ken Hung