首批通过分布式安全可靠测评,为关键业务系统打造
升级到 3.1.2 版本报错 -4029 主备 schema version 不同
更新时间:2026-05-09 07:56
问题现象
主备库由低版本升级经停 OceanBase 数据库 V3.1.2 BP9 及之前的版本,主备库升级之后,主备集群的系统表 schema 的版本号不一致,升级上来的备库切成主库,在加入新备库时加入失败。
主备库升级之后,进行备库巡检时发现 RS 日志报错信息如下。
[xxxxx-xxxxx] [lt=14] [dc=0] standby cluster table schema not equal to primary cluster(ret=-4029, ret="OB_SCHEMA_ERROR", primary schema version=xxxxxx, standby schema version=xxxxx, primary_table_schema={simple_table_schema:{tenant_id:1, database_id:xxxx, tablegroup_id:xxxxx, table_id:xxxxx, table_name:"__all_tenant_backup_clean_info", replica_num:-1, previous_locality_str:"", min_partition_id:0, session_id:0, index_type:0, table_type:0, table_mode:{table_mode_flag:0, pk_mode:0}, tablespace_id:xxxxx, data_table_id:0, name_casemode:-1, schema_version:xxxxxx, part_level:0, part_option:{part_func_type:0, part_func_expr:"", part_num:1, partition_cnt_within_partition_table:0, max_used_part_id:0, auto_part:false, auto_part_size:-1}, sub_part_option:{part_func_type:0, part_func_expr:"", part_num:1升级上来的备库切换成主库,在加入新备库时失败,报错信息如下。
WARN [RS] check_table_schema (ob_schema_snapshot_fetcher.cpp:734) [75721][660][xxxxx-xxxxxx] [lt=7] [dc=0] standy cluster schema version not same where primary(ret=-4029, ret="OB_SCHEMA_ERROR", primary_schema_version=xxxx, self_schema_version=xxxxx) ERROR [RS] replay_create_table (ob_schema_snapshot_fetcher.cpp:687) [75721][660][xxxxx-xxxxxx] [lt=12] [dc=0] standby schema not same with primary, check it(ret=-4029, ret="OB_SCHEMA_ERROR") BACKTRACE:0xa07e5ea 0x2be1f32 0x2be1098 0x2be0c68 0x2c9c969 0x51f03f5 0x51f0786 0x51f2227 0x4bf4785 0x4bf4f77 0x4bf53f3 0x4bf5abb 0xa006aad 0xa00ecda 0xa00d938 0x320c039 0x320daa5 0x9eabcf7 0x9ea8fe0 0x9ea462f
问题原因
在主集群升级过程中,会梳理 table_schema,保证 table_id 和 schema_version 之间的偏序关系,这个 DDL 操作产生的 operation_type 是 OB_DDL_UPDATE_TABLE_SCHEMA_VERSION,但是备库同步过程中,并没有同步这个 operation_type。导致升级结束后,备库的系统表的 schema_version 和主集群不一致。
问题的风险及影响
Schema Version版本不一致导致主备库之间的不兼容性与数据丢失风险,这种情况下,可能导致MAJOR FREEZE合并操作时报CRC校验失败。- 备库升级完成后,切成主库在加入新备库时,将无法接入失败。
- 遇到此问题后还可能存在一些未知的风险。
影响的版本
OceanBase 数据库企业版 V3.1.2 BP9 (oceanbase-3.1.2-20220727191622) 及其之前的版本。
解决方法及规避方式
解决方法
解决方法一:升级后备库依然是备库,备库可以铲掉。
铲除已经接入但是有问题的备库。
做一次
major freeze等待结束,命令如下。ALTER SYSTEM MAJOR FREEZE;重新加入备库。
检测日志是否达到同步状态。
解决方法二:升级后备库切成主库。
在主库
root@sys下执行如下命令。ALTER SYSTEM run job 'UPDATE_TABLE_SCHEMA_VERSION';做一次
major freeze等待结束,命令如下。ALTER SYSTEM MAJOR FREEZE;
解决方法三:联系 OceanBase 技术支持协助处理。
规避方法
铲掉备库或选择 OceanBase 数据库企业版 V3.1.2 BP9 (oceanbase-3.1.2-20220727191622) 以及之后的版本作为升级目标(或中间)版本。