GaussDB(DWS) GDS导入容错详解(gaussdbdws8.1客户端安装步骤)
600
2022-05-30
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.主集群开启逻辑复制功能和xlog逻辑复制,两个guc参数
2.主集群创建逻辑复制槽
3.设置中间件SRD工具,连接两个不同的数据库
逻辑复制开启,并建立连接后
当主集群数据库执行DML时,记录到xlog中的DML,会被逻辑复制解码器,解码到逻辑复制槽中缓存,然后重定向输出到文件中,解码出的就是DML的sql。
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都要方便的多。
外部表是在数据库以外的文件系统上存储的只读表,例如EXCEL、CSV等文件
交互观察点
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数据库:
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.在备集群查询私有用户及其名下的数据是否可用
EI企业智能 Gauss AP 数据仓库服务 GaussDB(DWS)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。