GaussDB(DWS)《ROACH小课堂Ⅰ测试方法篇之交互测试》
Chapter one. 集群运维管理交互篇
1.1 交互manage cn——增删CN
交互对象简介 |
通过gs_om的managecn功能,给集群增加或者删除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_replace的warstandby工具,在不需要重建集群的情况下,平滑替换坏掉的主机。Warmstanby后,新主机的hostname和ip都会发生变化,且该主机上的数据,全部需要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.逻辑复制相关GUC参数——已验证,DN上设置的参数,可以备份恢复 |
测试方法 |
逻辑复制: 4.执行容灾备份恢复 5.在备集群查询相关guc参数以及创建逻辑复制槽时,DN目录下是否生成物理文件 |
2.2 交互foreign table——外表对接
交互对象简介 |
外表(external table)就像普通的表对像一样,可以select等,只是它是只读的,数据库中只保存了表结构的描述,表数据却没有存放在数据库内,而是存放在了文件系统上。当用户想偶尔使用数据库外的结构化数据时,用起外表来就非常方便,甚至比sqlldr都要方便的多。 |
交互观察点 |
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 GaussDB是Extension Connector的功能之一,支持GaussDB(DWS)集群发送SQL语句给另一个GaussDB集群执行,并获取执行结果,执行结果可以参与本地表关联查询或者入本地表或入本地文件系统。通俗来说,EC对接是指把SQL转到另一个集群中的数据库上执行 |
交互观察点 |
1.是否影响容灾功能——经评估,所需修改的配置不在备份内容中,执行容灾恢复后需要重新配置Oracle环境,且备集群不感知 |
测试方法 |
1.安装Oracle数据库,并安装相对应的对接工具 2.修改相关guc参数 3.执行容灾备份恢复,检查容灾恢复是否成功 |
3 Chapter three.SQL交互篇
3.1 交互PostGIS——处理地理信息系统空间型数据
交互对象简介 |
PostGIS Extension是PostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。 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.导入500条cunction函数 2.执行容灾全量备份恢复 3.查询备集群元数据路径下是否存在cfunc的清单(同平台验证cfunction可用性) 4.第一次全量备份结束后,再次导入300条cfunction 5.执行容灾增量备份恢复 6. 查询备集群元数据路径下是否更新cfunc的清单(同平台验证cfunction可用性) |
4 Chapter four.安全交互篇
4.1 交互认证鉴权
交互对象简介 |
为了使集群外用户可以安全登录至集群数据库内进行查询等操作,通过cert认证,MD5认证,和trust认证,三种认证鉴权来保证。 |
交互观察点 |
1.是否影响容灾功能——不影响 2.容灾恢复后,完成备集群认证鉴权配置,验证是否可通过认证鉴权的方式登录恢复后的集群数据库内——可以 3.容灾恢复后,完成备集群认证鉴权配置,验证是否可以不通过认证鉴权方式直接登录恢复后的集群数据库——不可以 |
测试方法 |
1.主集群分别执行三种认证鉴权方式:(操作比较繁琐,整理在文档中) 2.执行容灾备份恢复 3.备集群按照《认证鉴权.txt》中的方式配置鉴权环境并检查是否配置完成后,只能通过认证鉴权登录备集群数据库 |
4.2 交互私有表
交互对象简介 |
创建具有INDEPENDENT属性的私有用户,针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 |
交互观察点 |
1.是否影响容灾功能——不影响 2.容灾恢复后,私有用户及其名下的数据是否可用——可用 |
测试方法 |
1.在主集群中创建一张私有表 1)连接postgres数据库: 2)创建independent用户: 3)切换到independent用户: 4)在independent用户下创建表并插入数据: 2.执行容灾备份恢复: 3.在备集群查询私有用户及其名下的数据是否可用 |
- 点赞
- 收藏
- 关注作者
评论(0)