obbinlog v4.3.5 enable_output_virtual_generated_column默认值为0,请问如何将这个参数改为1呢?

【 使用环境 】生产环境 and 测试环境
【 OB or 其他组件 】obbinlog
【 使用版本 】4.3.5-100000262026010516
【问题描述】需要obcdc输出虚拟生成列,obbinlog v4.3.5 enable_output_virtual_generated_column参数默认为0,直接修改binlog实例的配置重启后参数又被改回0了

【复现路径】问题出现前后相关操作
【附件及日志】

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

5 个赞

数据库为 V4.3.5 BP5 或之后的 V4.3.x 系列版本时,cdc 支持输出虚拟生成列

2 个赞

oceanbase版本:
Server version: OceanBase_CE 4.3.5.5 (r105000012025111711-c10174c0486c38f64a2222486986bbe15d5da0dc) (Built Nov 17 2025 12:20:08)

obbinlog版本:
4.3.5-100000262026010516

表结构:

binlog解析:实测binlog里没有记录虚拟列呢

2 个赞

enable_output_by_table_def这个参数也配置一下

1 个赞


enable_output_by_table_def=1 默认是1,enable_output_virtual_generated_column这个参数默认是0,怎么改成1呢,直接修改binlog实例的配置重启后又被改回0了

1 个赞

设置下
enable_output_virtual_generated_column=1
enable_output_by_table_def=1

1 个赞

坐等回复

1 个赞

在哪设置呢?我黑屏修改了,重启Binlog 实例后又被改回0了


1 个赞

打卡22

1 个赞

image
这里看下是否有这个参数,使用ocp修改

1 个赞

ocp上这两个参数都搜不到呢,所以才去黑屏操作的

1 个赞

厉害

拷贝实例下面的 binlog_instance.conf 中的 cdc_config.extra_obcdc_cfg 的值

“extra_obcdc_cfg”: “cluster=rtaprod02 enable_convert_timestamp_to_unix_timestamp=1 enable_output_by_table_def=1 enable_output_hidden_primary_key=0 enable_output_invisible_column=1 enable_output_trans_order_by_sql_operation=1 first_start_timestamp_us=0 initial_trx_gtid_seq=1 initial_trx_seeking_abort_timestamp=0 memory_limit=4G sort_trans_participants=1 tb_white_list=mysql3.. tenant=mysql3 working_mode=storage”,

使用这种方法修改,直接在上述示例结果上空格拼接添加,引号改为英文单引号
ALTER BINLOG INSTANCE xxxx SET EXTRA_OBCDC_CFG=‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX enable_output_virtual_generated_column=1’

可以了,感谢老师支持,虚拟列可以正常记录了 :+1: :+1: :+1:

老师,建议最新版的obbinlog还是应该默认打开这个参数,跟mysql binlog行为一致是不是更好一点,加个判断?不能因为老版本限制影响到新版本的发展了 :thinking:

本身就是作为兼容逻辑组件按理行为就该和mysql binlog一致,本身输出所有列也更符合常识一点。

这行为是有点奇怪,低版本obbinlog手动升级后是默认支持虚拟生成列记录
OB社区版4.3.5 obbinlog和4.2.10 obbinlog手动升级版本后虚拟生成列记录不一样问题 - 社区问答- OceanBase社区-分布式数据库

进来跟着学习了