南大通用GBase 8a 修改IP忘记改nodeid导致的集群异常

GBase 8a 数据库集群支持修改IP,在IPV4地址环境,除了IP,还需要修改nodeid,如果忘记修改,会导致集群异常,包括部分节点显示重复等。

如下是一个典型的异常情况

NodeName, IpAdderss出现了两行重复的。V86版本

排查过程

如上gcware由于只使用IP,是正常的,所以corosync.conf或gcware.conf是正常的,无需排查。

检查/var/lib/gcware/DATASERVER 和 DATASERVER.bak , 以及 DISTRIBUTION和DISTRIBUTION.bak 发现里面的IP出现错误的nodeid。

10.0.2.107这个IP,计算后的nodeid应该是1795293194, 现有的1778515978对应于10.0.2.106。

[root@localhost gcware]# cat DATASERVER
{
  "version":1,
  "epoch":5,
  "list_entries":1,
  "nodes":[
    {
      "nodeid":1778515978,
      "nodename":"node1",
      "ipaddr":"::ffff:10.0.2.107"
    }
  ]
}[root@localhost gcware]# cat DISTRIBUTION
{
  "version":1,
  "epoch":11,
  "list_entries":1,
  "distributions":[
    {
      "distributionid":1,
      "list_entries":1,
      "pairs":[
        {
          "segmentid":1,
          "prinodeid":1778515978,
          "ksafe":0
        }
      ]
    }
  ]
}

解决方案

将所有管理节点的数据库服务停下来,然后把这个文件里所有的node1对应的nodeid全部更正,所有的管理节点都要改。然后启动,恢复正常。

总结

节点更改IP,或者虚拟机复制时,除了IP需要改,nodeid也需要改。 或者干脆全部卸载了重新安装也可以。 但如果继续用的,一定要改掉。

ipv4计算nodeid的方法,请参考 GBase 8a集群根据IP(ipv4)计算nodeid方法