GBase 8a
运维管理
文章

v953版本兼容模式改造多vc模式

发表于2024-11-08 14:45:59130次浏览0个评论

本手顺适用于在集群需要改变当前VC模式,如兼容模式改多VC模式等情况需求。

注意:多 VC 模式 不支持回退为单 VC 模式,如果删除新增的 VC 只保留最初的一个 VC集群的模式仍然是多 VC 模式。

简介

集群为兼容模式,对原有集群集群增加节点,增加后的节点归属于另外一个新VC,原有的默认VC不变。

步骤概览

  1. 安装新节点

  2. 将新增加的节点从默认VC移出至根VC中

  3. 创建新VC并添加新节点

  4. (可选)重命名VC

  5. (可选)设置用户默认vc

  6. 新建用户、库、权限管理

  7. 数据导入

  8. 数据校验

具体步骤

如下示例为一个两节点的兼容模式的集群,增加一个节点,要求增加后的节点不在默认vc中,归属于另一个新VC。

为新节点准备环境,如配置网络通顺、环境变量等(略)

修改安装文件demo.options文件

1) 设置 dataHost 参数为要安装的节点的 IP;

2) 修改 existCoordinateHost 参数为已存在的 Coordinator 节点的 IP;

3) 修改 existDataHost 参数为已存在的所有 data 节点的 IP

  1. 安装新节点

[gbase@gbase1 gcinstall]$ ./gcinstall.py –silent=demo.options

  1. 将新增加的节点从默认VC移出至根VC中

如上图所示,新增加的节点没有distribution,也不是free_node,而创建新VC的必备条件就是集群中有free node可以添加进新VC中,这步的目的就是将新节点移出至根VC,使其变为free node

  1. 编辑gcChangeInfo.xml文件,将新增的节点IP填入其中

  1. 执行节点移出命令

 

[gbase@gbase1 gcinstall]$ gcadmin rmnodes gcChangeInfo.xml single_vc_rm_to_rc

执行后的结果为原有集群不变,在兼容模式架构下增加了一个freenode

  1. 创建新VC,并添加节点

  2. 生成创建VC模板文件,并填写

[gbase@gbase1 gcinstall]$ gcadmin createvc e vc.xml

[gbase@gbase1 gcinstall]$ vi vc.xml

  1. 根据模板文件创建vc

[gbase@gbase1 gcinstall]$ gcadmin createvc vc1.xml

  1. 为新vc创建distribution

[gbase@gbase1 gcinstall]$ gcadmin distribution gcChangeInfo.xml p 1 d 1 vc vc2 dba_os_password 111111

  1. 初始化新VC

  1. (可选)重命名VC

[gbase@gbase1 gcinstall]$ gcadmin renamevc vcname000001 vc1

  1. (可选)设置用户默认vc

原单vc更名为vc1,新建vc名为vc2,由于之前为单VC(兼容模式),其中由于集群中只存在一个vc,编写sql时可以不使用vc名,具体表现为:select * from testdb.t;当集群中存在多vc时,vc名不可忽略,具体表现为:select * from vc00001.testdb.t;可以将兼容模式下的所有用户设置缺省vc为vc1(兼容模式下的vc更名为vc1),操作如下,操作后使用sql与兼容模式下sql保持一致。

[gbase@gbase1 gcinstall]$ gccli -utestdb -ptestdb

gbase> select * from testdb.t;

gbase> select * from vc1.testdb.t;

gbase> set default_vc for testdb = 'vc1';

gbase> select * from vc1.testdb.t;

  1. 新建用户、库、权限管理

将兼容版本vc1添加为原所有用户的默认vc后,需要在新建vc2中创建与vc1中同名数据库,用户无法同名,需重新规划,权限与vc1中保持一致,还需新增用户对兼容模式下的vc1中对应库的select权限。

[gbase@gbase1 ~]$ gccli -uroot

gbase> use vc vc2;

gbase> create database testdb;

gbase> create user testdb_vc2 identified by 'testdb';

gbase> grant all on testdb.* to testdb_vc2;

gbase> grant select on vc1.testdb.* to testdb_vc2;

  1. 数据导入

当前集群存在两个VC,其中VC1为源VC,VC2为新建VC,需要将VC1中部分数据导入至VC2中,操作如下:

[gbase@gbase1 gcinstall]$ gccli -ugbase -pgbase

gbase> create table vc2.testdb.t like vc1.testdb.t;

gbase> insert into vc2.testdb.t select * from vc1.testdb.t;

gbase> insert into vc2.testdb.t select * from vc1.testdb.t where c1 < 5;

  1. 数据校验

  2. 源端

[gbase@gbase1 gcinstall]$ gccli -ugbase -pgbase

gbase> desc vc1.testdba.t;

gbase> select sum(crc32(c1)+crc32(c2)+……) from vc1.testdb.t;

  1. 目的端

[gbase@gbase1 gcinstall]$ gccli -ugbase -pgbase

gbase> desc vc2.testdba.t;

gbase> select sum(crc32(c1)+crc32(c2)+……) from vc2.testdb.t;

核验sum值,sum值一致,源数据一致。

评论

登录后才可以发表评论