暂无图片
cdc在binlog_row_image = minimal 下报错
我来答
分享
风轻云淡
2023-12-08
cdc在binlog_row_image = minimal 下报错

在observer中执行语句

set  binlog_row_image ='minimal';

然后在执行语句

update k2 set name = 10 where idd = 2;

cdc日志中报错

[2023-12-05 05:42:23.459730] EDIAG [TLOG] next_record (ob_log_instance.cpp:1437) [521262][][T0][Y0-0000000000000000-0-0] [lt=3][errcode=-4007] next record fail(ret=-4007, ret="OB_NOT_SUPPORTED", record=0x7fff0529d528) BACKTRACE:0x13b0bbbd 0x9e38997 0x9e38484 0x9e38132 0x9e37f2a 0x9f045a6 0x9f044a0 0x3341b79 0x333cdef 0x334122f 0x7fffb606e6db 0x7fffb59f961f
[2023-12-05 05:42:23.459737] ERROR issue_dba_error (ob_log.cpp:1792) [521262][][T0][Y0-0000000000000000-0-0] [lt=6][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4007, file="ob_log_instance.cpp", line_no=1437, info="next record fail")
[2023-12-05 05:42:23.459742] EDIAG [TLOG] next_record (ob_log_instance.cpp:1437) [521262][][T0][Y0-0000000000000000-0-0] [lt=4][errcode=-4007] next record fail(ret=-4007, ret="OB_NOT_SUPPORTED", record=0x7fff0529d528) BACKTRACE:0x13b0bbbd 0x9e38997 0x9e38484 0x9e38132 0x9e37f2a 0x9f045a6 0x9f044a0 0x3341b79 0x333cdef 0x334122f 0x7fffb606e6db 0x7fffb59f961f
[2023-12-05 05:42:23.459748] ERROR issue_dba_error (ob_log.cpp:1792) [521262][][T0][Y0-0000000000000000-0-0] [lt=5][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4007, file="ob_log_instance.cpp", line_no=1437, info="next record fail")

在文档处找到描述

skip_dirty_data	跳过异常数据	否	是	当前异常情况: 1. 非全列日志(指 CLOG 中只记录有变更的列的信息,配置项:binlog_row_image)。 2. 异常的物理备份恢复租户的 DDL。

问题:
cdc在binlog_row_image = minimal 模式下,确实无法获取非全列日志吗,是否是有配置设置错误。是否有其他方式能够使cdc获取非全列日志,是否只有设置skip_dirty_data =1,跳过非全列日志的信息

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Mjwlan

在 OceanBase 中,binlog_row_image 参数用于控制 binlog 中的行事件记录方式。当设置为 'minimal' 时,只有受影响的列以及主键列的新值会被记录,而旧行或未受影响的列将不会被记录。

根据您提供的日志信息和文档描述,CDC 在 binlog_row_image = minimal 模式下无法获取非全列日志。这是因为该模式下的 binlog 只包含受影响的列及主键列的变更信息,而 CDC 需要完整的行事件信息来正确捕获和同步数据库的变更。

关于跳过异常数据的问题,在 OceanBase 中,可以通过 skip_dirty_data 参数控制是否跳过异常数据。默认情况下,它的值为 false,即不跳过异常数据。如果将其设置为 true,则 CDC 将跳过一些特定的异常情况,例如非全列日志和异常的物理备份恢复租户的 DDL。但需要注意,启用 skip_dirty_data 可能会导致丢失部分变更。

如果您希望 CDC 能够获取非全列日志,并正确处理异常数据,建议您参考 OceanBase 的官方文档或咨询 OceanBase 的技术支持团队,以获取更详细和准确的信息。他们将能够提供针对 OceanBase 数据库的具体配置和最佳实践建议。

暂无图片 评论
暂无图片 有用 0
O
OceanBase社区传送门

CDC在4.1版本默认不支持minimal模式,需要配置skip_dirty_data=1。在OBServer配置了binlog_row_image=minimal的情况下,CDC配置skip_dirty_data=1也会输出非全列日志对应的记录,insert操作会记录所有列的信息,update操作只记录修改列和主键的信息,delete操作只记录主键信息。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏