GaussDB(DWS)《ROACH小课堂Ⅰ测试方法篇之交互测试》

举报
一剑战八荒 发表于 2021/11/05 11:54:29 2021/11/05
【摘要】 ROACH/交互测试/存储/集群管理OM/sql/安全;交互测试可以最大程度地提升特性在实际系统运行过程中的稳定性。本文对ROACH常见的交互特性,分类介绍各个特性的基础概念和交互方法以及交互观察点。

Chapter one. 集群运维管理交互篇

1.1 交互manage cn——增删CN

交互对象简介

通过gs_ommanagecn功能,给集群增加或者删除cn

交互观察点

备份后,集群通过managecn增加或者删除了cn,导致cn数变更,或者ccn编号变更。对于后续增量备份或者恢复是否造成功能上的影响。

测试方法

1.  导入数据,并查询数据状态

2.  执行集群级全量备份

3.  通过managecn删除编号最小的cn

4.  执行集群级全量恢复

5.  启动集群

6.  查询备份前和恢复后数据是否一致

 

1.2 交互gs_replace——实例和节点修复

交互对象简介

当集群中某个节点或者实例故障,但是机器仍然可用。因为集群是主备模式的,使用gs_replace工具,通过备机rebuild主机实例,修复集群故障的实例或者节点。

交互观察点

备份后,发生实例或者节点故障,通过gs_replace修复后。观察修复后的集群,增量备份或者恢复功能是否正常。

测试方法

1.  导入数据

2.  执行备份

3.  人为故障一个实例或者单节点卸载

4.  gs_replace修复故障实例或者节点

5.  执行恢复

6.  校验数据一致性

 

1.3 交互warmstandby——温备

交互对象简介

当集群的单节点发生故障后,该主机无法使用,需要替换为新的主机时。通过gs_replacewarstandby工具,在不需要重建集群的情况下,平滑替换坏掉的主机。Warmstanby后,新主机的hostnameip都会发生变化,且该主机上的数据,全部需要build重建。

交互观察点

一个集群节点的hostname或者IP改变,是否会影响已完成备份集和节点的映射关系,进而影响增量备份或者恢复的功能。

测试方法

1.  导入数据

2.  执行备份

3.  warmstanby替换集群中的一个节点

4.  执行恢复

5. 校验数据一致性

 

1.4 交互gs_guc——参数设置

交互对象简介

目前GaussDB(DWS)配置文件(“postgresql.conf”、“pg_hba.conf”)中的参数默认值都是单机的配置模式。应用程序可以通过调用gs_guc来设置适合自己的参数。简而言之,通过gs_guc可以修改实例的参数配置信息。

交互观察点

备份操作能否正确备份guc参数的值。

测试方法

1.  修改guc参数并记录当前结果

2.  执行备份

3.  再次修改guc参数值

4.  执行恢复

5.  确认guc参数值是否和备份前一致

 

1.5 交互logcial_cluster——逻辑集群

交互对象简介

逻辑集群区别于物理集群,自定义物理集群中的多个或全部(无意义)节点作为一个逻辑上的集群。当物理集群规模较大时,划分若干逻辑集群给不同用户使用,可以有效提升物理资源的利用率,并在一定程度上做到不同业务数据隔离,eg,一个逻辑集群用于查询,一个逻辑集群用于计算。

交互观察点

备份和恢复后的数据一致性

测试方法

1. 创建逻辑集群:gs_lcctl -t create --name logical_cluster_roach -h hostname1,hostname2 --non-interactive

-name指定逻辑集群和对应nodegroup的名称

-h指定用来创建逻辑集群的节点hostname,用逗号分割

2. 创建逻辑集群用户和逻辑集群下的表:

create user roach password 'Roach@789' node group logical_cluster_roach;

set role roach password "Roach@789";

create table logical_tab1(id int) with(orientation=column) to group logical_cluster_roach;

create table logical_tab2(id int) with(orientation=column) to group logical_cluster_roach;

create table logical_tab3(id int) with(orientation=column) to group logical_cluster_roach;

insert into logical_tab1 values(generate_series(1,100));

insert into logical_tab2 values(generate_series(1,100));

insert into logical_tab3 values(generate_series(1,100));

 

3. 执行集群级备份:

Python3 $GPHOME/script/GaussRoach.py -t backup --media-destination /home/perfadm/media --metadata-destination /home/perfadm/meta --media-type disk --master-port 9009

 

4. 分别删除和插入数据给逻辑集群下的一张表:

insert into roach.logical_tab2 values(generate_series(1,100));

drop table roach.logical_tab3;

 

5. 执行集群恢复:

python $GPHOME/script/GaussRoach.py -t restore --media-destination /home/perfadm/media --metadata-destination /home/perfadm/meta --media-type disk --master-port 9009 --backup-key 20200930_153821 –clean

 

6. 启动集群:python $GPHOME/script/GaussRoach.py -t start

 

7. 查看逻辑集群数据恢复成功并校验数据是否和备份时一致:

select count(*) from roach.logical_tab1;

select count(*) from roach.logical_tab2;

select count(*) from roach.logical_tab3;

 

1.6 交互upgrade——升级

交互对象简介

使用gs_upgradectl工具,用户可以根据GaussDB(DWS)提供的新特性,决定是否对现有系统进行升级。

交互观察点

升级可能涉及系统表和数据库组件的变更。升级成功成功后,观察能否正常备份恢复。

测试方法

1.  导入数据

2.  安装老版本集群

3.  gs_upgradectl自动升级集群

4.  执行备份

5.  只能恢复

6.  数据一致性校验

 

1.7 交互gs_expand/gs_shrink——扩容/缩容

交互对象简介

gs_expand工具来帮助用户在业务发展和数据量增加的情况下,集群性能和存储等方面出现瓶颈后,可以使用gs_expand工具增加主机来提升集群的性能及存储;随着业务场景和数据量的变化,需要集群节点具有可扩展性以及可收缩性。GaussDB(DWS)提供了gs_shrink工具来帮助完成对数据库集群节点进行缩容操作。

交互观察点

扩容或者缩容,会改变集群的主机数和DN数,以及数据在DN上的分布。在扩容或者缩容完成后的集群上,备份恢复功能依然要能生效,且保证恢复后数据的一致性。

测试方法

1.  导入数据

2.  扩容/缩容

3.  执行备份

4.  执行恢复

5.  数据一致性校验

 

2   Chapter two. 存储交互篇

2.1 交互logical replication——逻辑复制

交互对象简介

逻辑复制功能描述:完成不同数据库之间的DML数据同步,低时延,支持两套集群异形,同步期间两套集群均为可读可写

逻辑复制流程:
1.
主集群开启逻辑复制功能和xlog逻辑复制,两个guc参数
2.
主集群创建逻辑复制槽
3.
设置中间件SRD工具,连接两个不同的数据库
逻辑复制开启,并建立连接后
当主集群数据库执行DML时,记录到xlog中的DML,会被逻辑复制解码器,解码到逻辑复制槽中缓存,然后重定向输出到文件中,解码出的就是DMLsql
SDR
中间件发送该文件到需要同步的数据库集群上,由CN执行这个sql完成DML的重放,完成数据同步

交互观察点

1.逻辑复制相关GUC参数——已验证,DN上设置的参数,可以备份恢复
2.
主集群创建逻辑复制槽时,在DN目录下生成的物理文件——已验证容灾不会备份

测试方法

逻辑复制:
1.guc
参数打开:
gs_guc set -I all -N all -Z datanode -c 'wal_level=logical'
gs_guc set -I all -N all -Z datanode -c 'enable_slot_log = on'
2.
创建逻辑复制槽:
gsql -d postgres -p [dn_port] -c "select * from pg_create_logical_replication_slot('test_logical_slot', 'mppdb_decoding');"
3.
查询逻辑复制槽
execute direct on (dn_6001_6002) 'SELECT * FROM pg_replication_slots';

4.执行容灾备份恢复

5.在备集群查询相关guc参数以及创建逻辑复制槽时,DN目录下是否生成物理文件

 

2.2 交互foreign table——外表对接

交互对象简介

外表(external table)就像普通的表对像一样,可以select等,只是它是只读的,数据库中只保存了表结构的描述,表数据却没有存放在数据库内,而是存放在了文件系统上。当用户想偶尔使用数据库外的结构化数据时,用起外表来就非常方便,甚至比sqlldr都要方便的多。 
外部表是在数据库以外的文件系统上存储的只读表,例如EXCELCSV等文件 

交互观察点

1.容灾备份恢复是否成功——成功

2.查询外表是否存在——存在

测试方法

1.在主集群导入外表

postgres=# DROP FOREIGN TABLE IF EXISTS product_info_ext;

postgres=# CREATE FOREIGN TABLE product_info_ext(product_price integer not null,product_id char(30) not null,product_time date ,product_level char(10) ,product_name varchar(200) ,product_type1 varchar(20) ,product_type2 char(10) ,product_monthly_sales_cnt integer ,product_comment_time date ,product_comment_num integer ,product_comment_content varchar(200)) SERVER gsmpp_server OPTIONS(LOCATION 'gsfs://192.168.0.90:5000/*',FORMAT 'CSV' ,DELIMITER ',',ENCODING 'utf8',HEADER 'false',FILL_MISSING_FIELDS 'true',IGNORE_EXTRA_DATA 'true') READ ONLY LOG INTO product_info_err PER NODE REJECT LIMIT 'unlimited';

返回如下信息表示创建成功:

CREATE FOREIGN TABLE

2.执行容灾备份恢复

3.在恢复后的集群中查询外表是否存在

 

2.3 交互EC对接

交互对象简介

SQL on other GaussDBExtension Connector的功能之一,支持GaussDB(DWS)集群发送SQL语句给另一个GaussDB集群执行,并获取执行结果,执行结果可以参与本地表关联查询或者入本地表或入本地文件系统。通俗来说,EC对接是指把SQL转到另一个集群中的数据库上执行

交互观察点

1.是否影响容灾功能——经评估,所需修改的配置不在备份内容中,执行容灾恢复后需要重新配置Oracle环境,且备集群不感知

测试方法

1.安装Oracle数据库,并安装相对应的对接工具

2.修改相关guc参数

3.执行容灾备份恢复,检查容灾恢复是否成功

 

3     Chapter three.SQL交互篇

3.1 交互PostGIS——处理地理信息系统空间型数据

交互对象简介

PostGIS ExtensionPostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。

PostGIS Extension完全遵循OpenGIS规范。

交互观察点

1.是否影响容灾功能——不影响

2.容灾备份恢复后,备集群上postGIS是否可用——跨平台场景不可用,同平台可用

测试方法

1.停止集群,主集群分发postgis库文件后kill om_monitor进程,重启集群

2.执行容灾备份恢复

 

3.2 交互CFUNCTION——C函数

交互对象简介

Cfunction是一种c函数,是用来实现某些功能运算和完成各种特定操作的重要手段

交互观察点

1.是否影响容灾功能——不影响

2.跨平台容灾,是否生成正确的cfunc文件清单——文件清单在meta路径下

3.同平台容灾——备集群cfunction可用

测试方法

1.导入500cunction函数

2.执行容灾全量备份恢复

3.查询备集群元数据路径下是否存在cfunc的清单(同平台验证cfunction可用性)

4.第一次全量备份结束后,再次导入300cfunction

5.执行容灾增量备份恢复

6. 查询备集群元数据路径下是否更新cfunc的清单(同平台验证cfunction可用性)

 

4   Chapter four.安全交互篇

4.1 交互认证鉴权

交互对象简介

为了使集群外用户可以安全登录至集群数据库内进行查询等操作,通过cert认证,MD5认证,和trust认证,三种认证鉴权来保证。

交互观察点

1.是否影响容灾功能——不影响

2.容灾恢复后,完成备集群认证鉴权配置,验证是否可通过认证鉴权的方式登录恢复后的集群数据库内——可以

3.容灾恢复后,完成备集群认证鉴权配置,验证是否可以不通过认证鉴权方式直接登录恢复后的集群数据库——不可以

测试方法

1.主集群分别执行三种认证鉴权方式:(操作比较繁琐,整理在文档中)

2.执行容灾备份恢复

3.备集群按照《认证鉴权.txt》中的方式配置鉴权环境并检查是否配置完成后,只能通过认证鉴权登录备集群数据库

 

4.2 交互私有表

交互对象简介

创建具有INDEPENDENT属性的私有用户,针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROPALTERTRUNCATE),无权进行INSERTDELETESELECTUPDATECOPYGRANTREVOKEALTER OWNER操作。

交互观察点

1.是否影响容灾功能——不影响

2.容灾恢复后,私有用户及其名下的数据是否可用——可用

测试方法

1.在主集群中创建一张私有表

1)连接postgres数据库:
gsql -d postgres -p 6000 –r

2)创建independent用户:
create user vip with independent identified by "vip1234.";

3)切换到independent用户:
set role vip password "vip1234.";

4)在independent用户下创建表并插入数据:
create table bible (id int,add text) with(orientation=column) distribute by hash(id);
insert into bible values(1008,'beijing');

2.执行容灾备份恢复:

3.在备集群查询私有用户及其名下的数据是否可用

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。