本手顺适用于在集群需要改变当前VC模式,如兼容模式改多VC模式等情况需求。
注意:多 VC 模式 不支持回退为单 VC 模式,如果删除新增的 VC 只保留最初的一个 VC集群的模式仍然是多 VC 模式。
简介
集群为兼容模式,对原有集群集群增加节点,增加后的节点归属于另外一个新VC,原有的默认VC不变。
步骤概览
- 安装新节点
- 将新增加的节点从默认VC移出至根VC中
- 创建新VC并添加新节点
- (可选)重命名VC
- (可选)设置用户默认vc
- 新建用户、库、权限管理
- 数据导入
- 数据校验
具体步骤
如下示例为一个两节点的兼容模式的集群,增加一个节点,要求增加后的节点不在默认vc中,归属于另一个新VC。
为新节点准备环境,如配置网络通顺、环境变量等(略)
修改安装文件demo.options文件
1) 设置 dataHost 参数为要安装的节点的 IP;
2) 修改 existCoordinateHost 参数为已存在的 Coordinator 节点的 IP;
3) 修改 existDataHost 参数为已存在的所有 data 节点的 IP
- 安装新节点
[gbase@gbase1 gcinstall]$ ./gcinstall.py –silent=demo.options
- 将新增加的节点从默认VC移出至根VC中
如上图所示,新增加的节点没有distribution,也不是free_node,而创建新VC的必备条件就是集群中有free node可以添加进新VC中,这步的目的就是将新节点移出至根VC,使其变为free node
- 编辑gcChangeInfo.xml文件,将新增的节点IP填入其中
- 执行节点移出命令
[gbase@gbase1 gcinstall]$ gcadmin rmnodes gcChangeInfo.xml single_vc_rm_to_rc
执行后的结果为原有集群不变,在兼容模式架构下增加了一个freenode
- 创建新VC,并添加节点
- 生成创建VC模板文件,并填写
[gbase@gbase1 gcinstall]$ gcadmin createvc e vc.xml
[gbase@gbase1 gcinstall]$ vi vc.xml
- 根据模板文件创建vc
[gbase@gbase1 gcinstall]$ gcadmin createvc vc1.xml
- 为新vc创建distribution
[gbase@gbase1 gcinstall]$ gcadmin distribution gcChangeInfo.xml p 1 d 1 vc vc2 dba_os_password 111111
- 初始化新VC
- (可选)重命名VC
[gbase@gbase1 gcinstall]$ gcadmin renamevc vcname000001 vc1
- (可选)设置用户默认vc
gbase 数据 原单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;
- 新建用户、库、权限管理
将兼容版本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;
- 数据导入
当前集群存在两个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;
- 数据校验
- 源端
[gbase@gbase1 gcinstall]$ gccli -ugbase -pgbase
gbase> desc vc1.testdba.t;
gbase> select sum(crc32(c1)+crc32(c2)+……) from vc1.testdb.t;
- 目的端
[gbase@gbase1 gcinstall]$ gccli -ugbase -pgbase
gbase> desc vc2.testdba.t;
gbase> select sum(crc32(c1)+crc32(c2)+……) from vc2.testdb.t;
核验sum值,sum值一致,源数据一致。