GBase 8a之gcrcman在非原集群上恢复时遇到拓扑结构检查不一致的问题及其解决方案

发布时间:2026/7/7 0:32:48
GBase 8a之gcrcman在非原集群上恢复时遇到拓扑结构检查不一致的问题及其解决方案 问题描述gcrcman在非原集群上恢复时会遇到拓扑结构检查与元集群不一致的问题。问题原因原集群和待恢复集群的拓扑结构存在差异导致无法恢复。拓扑对比的前提gcrcman 是按照2个集群的拓扑结构的字符串进行比对的。所以不接受一切的字符串级别的不一致。样例 gcrcman日志里的报错信息环境1{coordinators: ({nodename: coordinator1}, {nodename: coordinator2}, {nodename: coordinator3}), vc_array: ({dataservers: ({nodename: node1}, {nodename: node2}, {nodename: node3}), distributions: ({pairs: ({DupNodeName: [node2], PrimaryNodeName: node1}, {DupNodeName: [node3], PrimaryNodeName: node2}, {DupNodeName: [node1], PrimaryNodeName: node3}), id: 2},), vcname: vcname000001, vcid: vc00001},)}环境2{coordinators: ({nodename: coordinator1}, {nodename: coordinator2}, {nodename: coordinator3}),vc_array: ({dataservers: ({nodename: node1}, {nodename: node2}, {nodename: node3}), distributions: ({pairs: ({PrimaryNodeName: node1, DupNodeName: [node2]}, {PrimaryNodeName: node2, DupNodeName: [node3]}, {PrimaryNodeName: node3, DupNodeName: [node1]}), id: 1},), vcid: vc00001, vcname: vcname000001},)}两个环境的异同1都是3节点环境coordinator和node对应关系相同。2PrimaryNodeName 和 DupNodeName 虽然2个集群主备片和node的对应关一致但书写顺序不一致也不行。3id的编号不一致也不行这里的id指distributionid 也就是说任何情况如扩容缩容节点替换造成的distributionid不同也不行解决方案1卸载待恢复集群2重新安装待恢复集群3待恢复集群建distribution时按照以下方式创建1 新建gcChangeInfo.xml2 原集群 gcadmin getdistribution 原集群最新distributionid号 distribution.xml3 按照自定义的ip对应关系把待恢复集群的ip对应替换文件distribution.xml中的ip4 待恢复集群执行 gcadmin distribution gcChangeInfo.xml4安装成功后即可执行恢复操作