Caused by: io.debezium.DebeziumException: Creation of replication slot failed
Caused by: org.postgresql.util.PSQLException: ERROR: could not access file "decoderbufs": No such file or directory
CREATE TABLE cdc_source ( `user_id` int, `dept_id` int , `nick_name` varchar, `user_name` varchar, `user_type` varchar, PRIMARY KEY (`user_id`) NOT ENFORCED -- 如果要同步的数据库表定义了主键, 则这里也需要定义 ) WITH ( 'connector' = 'postgres-cdc', -- 固定值 'postgres-cdc' 'hostname' = '*****', -- 数据库的 IP 'port' = '****', -- 数据库的访问端口 'username' = '*****', -- 数据库访问的用户名(需要提供 REPLICATION、LOGIN、SCHEMA、DATABASE、SELECT权限) 'password' = '*****', -- 数据库访问的密码 'database-name' = '******', -- 需要同步的数据库 'schema-name' = 'public', -- 需要同步的数据表所属schema (支持正则表达式) 'table-name' = 'sys_user', -- 需要同步的数据表名 (支持正则表达式) 'debezium.slot.name' = 'cdc_source', -- 定义一个唯一slot名称,可以包含小写字母、数字和下划线字符 'debezium.plugin.name'='pgoutput' ); CREATE TABLE cdc_target ( `user_id` bigint , `dept_id` bigint , `nick_name` varchar, `user_name` varchar, `user_type` varchar, PRIMARY KEY (`user_id`) NOT ENFORCED ) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://127.0.0.1:3306/ry?createDatabaseIfNotExist=true&useSSL=false', 'username' = 'root', 'password' = 'root', 'table-name' = 'sys_user_postgres', 'driver' = 'com.mysql.cj.jdbc.Driver', 'scan.fetch-size' = '200' ); INSERT INTO cdc_target SELECT * FROM cdc_source;
原因postgres-cdc没有添加最后一句: 'debezium.plugin.name'='pgoutput'
debezium.plugin.name='pgoutput'
是用来指定 Debezium 的插件为pgoutput
。在 Debezium 中,插件是用于实现特定数据库连接和数据捕获功能的组件。
pgoutput
插件是针对 PostgreSQL 数据库的输出插件,用于将捕获到的数据库更改输出到外部系统或应用程序。通过指定
debezium.plugin.name='pgoutput'
,Debezium 将加载pgoutput
插件,并使用它来连接到 PostgreSQL 数据库,捕获数据变化,并将其输出到指定的目标。特此记录!!