SymmetricDS v3.7.32同节点同步问题:变更数据未写入目标表
针对你遇到的同节点内源表变更已触发sym_data记录,但目标表无数据、sym_incoming_batch无批次的问题,按以下步骤排查:
确认路由类型与节点组匹配
检查sym_router表中对应路由的router_type是否为LOCAL,同节点同步必须使用本地路由类型;同时确认source_node_group_id和target_node_group_id与当前节点的node_group_id完全一致,不匹配会直接导致批次无法生成。检查触发器-路由关联的同步开关
查看sym_trigger_router中对应记录的sync_on_insert、sync_on_update、sync_on_delete字段值是否为1(开启状态),如果是0,即便有sym_data记录也不会触发批次生成。验证列过滤配置准确性
因为仅同步两列,检查sym_trigger表的column_filter是否准确指定了目标列(格式如col1,col2),同时确认exclude_columns没有误排除需要同步的列;另外确保触发器自身的sync_on_insert等开关也处于开启状态。排查路由表达式规则
若sym_router配置了router_expression,验证当前变更数据是否满足该表达式条件。比如表达式设置了特定行过滤规则,而当前数据不符合,会导致路由不生效,无法生成批次。查看SymmetricDS运行日志
开启debug级别日志,搜索对应触发器名称或router_id,查找是否有“生成批次”相关日志,或是否存在数据被过滤的提示。比如日志中可能显示“Data does not match router expression”这类信息。手动触发批次生成
使用symadmin工具执行命令手动生成批次:symadmin generate-batches --node {你的节点ID} --router {对应router_id}执行后检查
sym_incoming_batch是否新增记录,若新增则说明自动批次生成机制存在问题;若仍无记录则继续排查配置。确认节点同步状态
检查当前节点在sym_node表中的sync_enabled字段是否为1,若为0会禁用该节点的所有同步操作。
内容的提问来源于stack exchange,提问作者G-Man

