提出问题
为什么当数据变化时,打印格式是下面这种:
SourceRecord{
sourcePartition={server=mysql_binlog_source}, # mysql binlog
sourceOffset={
ts_sec=1655552829, # binlog 时间戳
file=mysql-bin.000004, # binlog 文件名
pos=154,
snapshot=true
}
}
ConnectRecord{
topic='mysql_binlog_source.scott.dept', # 表名
kafkaPartition=null,
key=Struct{deptno=7369}, # 主键
keySchema=Schema{mysql_binlog_source.scott.dept.Key:STRUCT},
value=Struct{
after=Struct{deptno=74,dname=财务部,loc=杭州2}, # 数据
source=Struct{version=1.5.2.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1655552829388,snapshot=true,db=scott,table=dept,server_id=0,file=mysql-bin.000004,pos=154,row=0},
op=r, # crud中的 Retrieve,表示查询出的数据
ts_ms=1655552829392
}, valueSchema=Schema{mysql_binlog_source.scott.dept.Envelope:STRUCT}, timestamp=null, headers=ConnectHeaders(headers=)}
原因
是 默认序列化器 StringDebeziumDeserializationSchema 只是调用了 对象的 toString()
查看
根据 Flink CDC2.0 连接MySQL,将表原有数据打印到控制台 案例
打开 StringDebeziumDeserializationSchema,设置断点如下:
这里可以查看到,只是调用 SourceRecord的 .toString() 方法
SourceRecord 的 .toString() 方法
进入 该方法,设置断点,如下:
可以发现,打印格式,与控制台打印的内容相同

