他是个疯子  发表于 2020-4-25 12:22 显示全部楼层 楼主
网络变更、IP地址重新规划、内外网分离等多种原因,需要改变数据库的IP地址。对于单机数据库来说,调整IP地址很简单,通常指需要调整应用程序的数据库访问IP即可。
对于MPP集群来说,修改集群内部组网IP,就比较麻烦了。GBase 8a集群新版本支持使用hostname搭建集群,但绝大部分上线项目还是使用的IP地址。
那么GBase8a集群到底是否支持修改IP地址呢?—— 答案是肯定的,可以修改IP地址,因修改IP地址属于低频操作,没有提供官方的、集成的产品功能,这里介绍一下我修改IP的操作过程,作为集群修改IP的一个参考。
他是个疯子  发表于 2020-4-26 09:01 显示全部楼层 沙发
针对v8.6.2版本的GBase8a集群,记录了集群IP或nodeid的配置文件有三个:
/etc/corosync/corosync.conf -- ip地址
/var/lib/gcware/DATASERVER[.bak] -- ip和nodeid
/var/lib/gcware/DISTRIBUTION[.bak] -- nodeid
修改集群内部IP地址,需要对应的修改这三个文件。
1. 先说下nodeid,nodeid是根据ip地址计算来的,集群内部有个函数inet_aton()可以通过ip计算nodeid,如计算172.16.3.55的nodeid(注意IP地址需要倒着计算)
gbase> select inet_aton('55.3.16.172');
+--------------------------+
| inet_aton('55.3.16.172') |
+--------------------------+
|                922947756 |
+--------------------------+
1 row in set (Elapsed: 00:00:00.01)
2. /var/lib/gcware下的DATASERVER和DISTRIBUTION可能存在.bak文件,.bak表示是该文件的B版本,不带.bak的是A版本,在停止集群后,建议不管是否带有.bak文件,都进行IP地址和nodeid的修改。
当前在运行的集群使用的是A版本还是B版本,可以通过/var/lib/gcware/REDOLOG.* 文件查看
head -n13 /var/lib/gcware/REDOLOG.*
...
  "distribution_version":"B",
  "dataserver_version":"B",
  "clusterstate_version":"B"
他是个疯子  发表于 2020-4-26 09:11 显示全部楼层 板凳
知道了哪些文件配置了集群IP,就好办了。描述下修改集群内部IP的一个过程:
1. 确保集群中无节点不一致性的情况,gcadmin显示DataState为0,showddlevent\dmlevent\dmlstorageevent无event记录。event记录中是带有IP信息的(event的的持久化文件是/var/lib/gcware/FEVETNLOG)
如果存在event,则需要停止集群服务后进行FEVENTLOG文件中nodeid的调整;
2.通知业务停掉数据库操作,然后停止数据库服务;- 在进行集群大的操作前(修改IP、升级、扩容等)这里推荐停止、启动、再停止的方式;
3.修改服务器IP地址;
4.修改集群的三个记录ip或nodeid的文件为新的ip和nodeid。先cp备份文件,修改过程中只改ip地址和nodeid,不要动其他的任何内容。—— 记得提前计算出nodeid;
5.都修改完了吗?所有的集群节点上的所有的配置文件?检查一遍,重启集群服务;
6.启动成功后,进行数据库服务的确认验证,没问题的话,整个修改ip操作完成。
他是个疯子  发表于 2020-4-26 09:14 显示全部楼层 地板
关于nodeid,黏贴一个更详细计算方法,也是计算nodeid的另一个方式----------
节点nodeid以及ip地址的对应关系。节点nodeid就是节点IP地址按照小头序排列转换成的整形数字,例如“192.168.103.70”对应的nodeid就是0x4667A8C0(0x标识十六机制数) 其中 46对应“70”,67对应“103”,A8对应“168”,C0对应“192”。
0x4667A8C0转换为10进制数就是1181198528了。也可以使用inet_aton函数计算nodeid,如计算ip 192.168.103.70对应的nodeid,可以使用函数inet_aton查询select inet_aton(70.103.168.192)得到nodeid。配置文件中还有一些nodeid值为负值-3113768768,该值为0xFFFFFFFF4667A8C0(0x标识十六机制数)换算得到,或者1181198528-2^32=1181198528-4294967296=-3113768768得到。
iLeLe  发表于 2020-4-26 17:40 显示全部楼层 5#
这个好。总是有人问如何修改集群IP,这回有参考了。感谢~
iLeLe  发表于 2021-9-13 13:46 显示全部楼层 6#
找到个文档,包含v8.6、v9.5的修改ip的方法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册