摘要:华为GaussDB目前已反对NBU介质的备份与复原,本文次要形容了华为GaussDB数据库和NetBackup对接进行备份、复原的配置办法与性能调优办法。
一、简介
企业要想避开天然劫难和站点中断的影响,必须将数据正本近程备份至异地机器中。 这样当生产站点产生重大劫难事变时候,本地的生存存储与备份存储数据可能都会失落,此时须要从异地备份存储上复原数据,从而保证数据不失落。Netbackup 是目前金融行业应用最广的备份软件之一(简称NBU),是Veritas(赛门铁克)次要产品 。华为GaussDB目前已反对NBU介质的备份与复原,本文次要形容了华为GaussDB数据库和NetBackup对接进行备份、复原的配置办法与性能调优办法。
二、NBU部署形式
以后GaussDB NBU备份计划反对两种部署架构,别离为侵入式部署于非侵入式部署。
NBU侵入式部署
当GaussDB所在集群反对NBU系列软件装置时,部署形式采纳NBU侵入式部署,部署构造如下图:
NBU侵入式部署计划能够借阅 【GaussDB对接NBU备份环境配置指南】
具体应用办法如下:
留神:
- --media-destination: 该参数为NBU policy名称
- --metadata-destination: 元数据目录(本地门路)
- --prior-backup-key: 该参数为增量备份依赖的备份集
- --backup-key: 该参数指定复原备份集
1、全量备份:
python $GPHOME/script/GaussRoach.py -t backup --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination /data1/roachbackup/metadata --parallel-process 3
2、增量备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --parallel-process 3 --prior-backup-key 20200912_083324
3、全量/增量复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination /data1/roachbackup/metadata --backup-key 20200912_083324
4、单表备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 25990 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/tablebackup/metadata --dbname testdb --tablename test --agent-port 34990
5、单表复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 25990 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/tablebackup/metadata --dbname testdb --tablename test --agent-port 34990 --backup-key 20190826_151600
6、多表备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 9500 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --logical --agent-port 7000 --dbname testdb --table-list /home/omm/table.list
7、多表复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 9500 --media-destination $GAUSSHOME/roachbackup/mediadata --media-type nbu_policy --metadata-destination $GAUSSHOME/roachbackup/metadata --logical --agent-port 7000 --dbname testdb --table-list /home/apdba/table_list.txt --backup-key 20190511_183652 -
8、数据库级备份
python $GPHOME/script/GaussRoach.py -t backup --dbname testdb --agent-port 7000 --metadata-destination $GAUSSHOME/roachbackup/metadata --media-destination nbu_policy --master-port 9500 --media-type NBU
9、数据库级复原
python $GPHOME/script/GaussRoach.py -t restore --dbname testdb --agent-port 7000 --metadata-destination $GAUSSHOME/roachbackup/metadata --media-destination nbu_policy --master-port 9500 --media-type NBU --backup-key key 20190511_193122
NBU非侵入式部署
以后NBU系列软件只反对x86机器,NBU非侵入式部署则撑持NBU系列软件无奈在ARM、欧拉零碎装置的场景。如下图所示,如果已有3节点GaussDB集群,Roach备份工具将本节点的集群数据通过TCP发送到远端NBU Media Server机器。每台NBU Media Server下面同时装置NBU Client,并部署Roach client组件,后者接管集群内Roach过程发来的备份数据,不落盘形式通过XBSA接口转发给本机的NBU Client,实现NBU备份。复原流程也相似,只是数据流相同。
Roach client插件装置:
从DWS管控面的连贯治理界面下载Roach client组件包到集群本地,而后拷贝进去。如下:
useradd omm
passwd omm # 输出明码
su - omm
cd /data/omm/ # 变更为本地装置目录, 将Roach client装置tar包拷贝至此目录下
mkdir roach_client
tar -zxvf GaussDB-8.1.0-REDHAT-x86_64bit-RoachClient.tar.gz -C roach_client
cd /data/omm/roach_client/bin/ source roach_client_env
./roach_client -p ip:8888 -H 0/0 -D -l roach_client.log # ip为以后部署roach_client机
ps -ef | grep roach_client # 启动后查看roach_client是否启动胜利
留神:/roach_client -p ip:8888 -H 0/0 -D -l roach_client.log
其中ip为以后部署roach_client机器, 8888为roach_client凋谢端口,用于沙箱内集群各节点和NBU Media Server之间TCP通信传输备份文件 ; -l 为指定日志门路
备份形式:
留神:
- --media-destination: 该参数为NBU policy名称
- --metadata-destination: 元数据目录(本地门路)
- --nbu-on-remote:该参数指定部署形式为NBU非侵入式部署
- --nbu-media-list: 该参数指定NBU Media Server的ip清单,按行输出ip地址
- --client-port: 该参数指定Roach client插件的对外开放通信端口
- --prior-backup-key: 该参数为增量备份依赖的备份集
- --backup-key: 该参数指定复原备份集
1、全量备份:
python $GPHOME/script/GaussRoach.py -t backup --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination /data1/roachbackup/metadata --parallel-process 3 --nbu-on-remote --nbu-media-list /home/Ruby/media.txt --client-port 8888
2、增量备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --parallel-process 3 --nbu-on-remote --nbu-media-list /home/Ruby/media.txt --client-port 8888 --prior-backup-key 20200912_083324
3、全量/增量复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 55000 --media-destination nbu_policy --media-type NBU --metadata-destination /data1/roachbackup/metadata --backup-key 20200912_083324 --nbu-on-remote --nbu-media-list /home/Ruby/media.txt --client-port 8888
4、单表备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 25990 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/tablebackup/metadata --dbname testdb --tablename test --agent-port 34990 --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
5、单表复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 25990 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/tablebackup/metadata --dbname testdb --tablename test --agent-port 34990 --backup-key 20190826_151600 --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
6、多表备份
python $GPHOME/script/GaussRoach.py -t backup --master-port 9500 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --logical --agent-port 7000 --dbname testdb --table-list /home/omm/table.list --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
7、多表复原
python $GPHOME/script/GaussRoach.py -t restore --clean --master-port 9500 --media-destination $GAUSSHOME/roachbackup/mediadata --media-type nbu_policy --metadata-destination $GAUSSHOME/roachbackup/metadata --logical --agent-port 7000 --dbname testdb --table-list /home/apdba/table_list.txt --backup-key 20190511_183652 --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
8、数据库级备份
python $GPHOME/script/GaussRoach.py -t backup --dbname testdb --agent-port 7000 --metadata-destination $GAUSSHOME/roachbackup/metadata --media-destination nbu_policy --master-port 9500 --media-type NBU --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
9、数据库级复原
python $GPHOME/script/GaussRoach.py -t restore --dbname testdb --agent-port 7000 --metadata-destination $GAUSSHOME/roachbackup/metadata --media-destination nbu_policy --master-port 9500 --media-type NBU --backup-key key 20190511_193122 --nbu-on-remote --nbu-media-list /home/liding/nbu/media.txt --client-port 9000
三、NBU流程概述
备份数据流
NBU 个别波及NBU Master Server、NBU Media Server、NBU client,属于一个three-trie构造。
本章节次要介绍NBU过程工作原理,不便使用者、开发者理解NBU备份流程,排查问题。
下图中为通过备份所波及的数据流向
根本备份过程:
1、启动备份形式:
- 当 nbpem 服务检测到某项作业到了启动工夫时,将开始进行预约的备份操作。nbpem会查看到了启动工夫的预约客户机备份的策略配置。
- 如果管理员在 NetBackup 治理控制台中抉择了手动备份选项,将开始进行即时手动备份。这会使 bprd 分割 nbpem,而后 nbpem 将解决管理员所抉择的策略、客户机和日程表。
- 当客户机上的用户通过该客户机上的用户界面(或者通过 bpbackup 或xbsa系列接口)启动备份或回复时,将开始进行用户管制的备份或回复操作。这将调用该客户机的 XBSA程序,该程序向主服务器上的申请后盾驻留程序 bprd发送申请。以后Roach NBU介质备份采纳这种启动形式。
2、接管备份工作: 响应过程(bprd)接管到客户端的备份申请,
- bprd: request manager申请管理器:
bprd是Master Server的守护过程,bprd过程次要负责对客户机申请作出响应,并将并向nbjm收回 job申请,用于提交备份并获取job ID。
3、将申请转发个策略执行管理器nbpm
- nbpem: policy execution manager策略执行管理器
策略执行管理器服务 (nbpem) 执行以下操作:
a. 通过nbproxy从 bpdbm 中获取策略列表, 查问到无效的备份policy的是否存在;
b、向 nbjm 提交以后已到预约启动工夫的所有作业(依照schedule执行工夫的策略)。
4、为备份job分配资源
a、nbjm(job manager作业管理器)接管到工作后,nbjm首先会与bpjobd通信,将此job增加至job列表中,此时在Activity Monitor中该job以queue状态可见。b、nbjm通过nbrb 申请资源,nbrb负责分配资源以响应来自 nbjm 的申请。并从 nbemm (企业介质管理器服务)获取物理资源,并治理逻辑资源,如多路复用组、每个客户机的最多作业数、每个策略的最多作业数。 当nbrb过程从nbemm获取到所需资源时,会返回告诉nbjm资源已调配。
b、当nbrm资源分配实现后,nbjm会调用 image database 创立长期快照文件,此时该job会在Activity Monitor中该job以active状态可见。
5、开始备份
a、当job处于active状态后,nbjm通过bpcompatd与NBU Media Server上的客户端服务(bpcd)进行连贯,其中bpcompatd服务通过专用小交换机(PBX)和NetBackup新式网络服务(vnetd)创立连贯。b、bpcd过程是NBU Media Server上的守护过程,容许Master Server或NBU Client启动程序。bpcd接管到连贯后会启动Netbackup 备份复原管理器(bpbrm)。
b、bpbrm过程服务通过PBX与vnetd与NBU client机器上的bpcd过程建设连贯,启动NBU client机器上的bpbkar,其中bpbkar负责生成备份image,并将image数据发送至NBU Media Server上的bpdrm,对于每个备份或复原job,都会在NBU Media Server上启动一个bpbrm实例用于传输image数据。bpdrm过程会启动磁带/磁盘治理过程bptm,对于磁盘介质,bptm间接与磁盘通信。对于磁带介质,bptm保留驱动器并向逻辑磁带接口守护程序(ltid)收回装置申请。 ltid服务调用机械手驱动器守护程序(txxd,其中xx依据所应用的机械手的类型而异)。 txxd守护程序将装置申请传播给机械手管制守护程序(txxcd),后者将装置介质。
6、完结备份
bpbkar服务通过bptm发送备份数据,以将其写入介质存储或磁盘存储。 备份实现后,将告诉nbjm并将音讯发送到bpjobd。此时job在“Activity Monitor”中显示为“done”。 nbjm服务还会将作业退出状态报告给nbpem,nbpem将从新计算作业的下一个到期工夫。
四、XBSA相干接口
NBU软件提供的libxbsa64.so动静库(实现了规范的XBSA系列接口),将本地数据传送到NBU服务器,而后由NBU服务器负责落盘到磁带介质上。 GaussDB的专用备份工具Roach,负责调用libxbsa64.so库将本地数据库文件备份到远端NBU服务器。 本章节则次要针对开发者,介绍XBSA系列接口。
备份相干接口
备份过程中波及的XBSA相干接口次要如下:
- BSAQueryApiVersion:该接口用于确定Netbackup XBSA接口的以后版本。
- BSAInit:该接口用于对XBSA应用程序进行身份验证,与NetBackup XBSA接口建设session会话,并为调用者的后续API调用建设环境。留神,BSAInit不反对嵌套创立session会话。
- BSABeginTxn:
该接口用于创立一个事物,这里的事物和数据库事物概念类似,BSABeginTxn()调用向NetBackup XBSA接口批示作为原子单位执行的一个或多个操作的开始,即所有操作将胜利或没有胜利。能够将一个动作假设为为特定目标而进行的单个函数调用或一系列函数调用。
例如,一个BSACreateObject()调用后跟多个BSASendData()调用并以BSAEndData()调用终止能够被视为单个操作。 在失常应用中,BSABeginTxn()调用总是与随后的BSAEndTxn()调用耦合。如果在事务期间调用BSATerminate(),则事务停止。
留神,BSABeginTxn不反对嵌套创立事物。
- BSACreateObject:
BSACreateObject调用在NetBackup中创立一个XBSA对象。 该调用将启动NetBackup XBSA接口与NetBackup服务器之间的通信。而后能够将XBSA对象数据传递到内存缓冲区中。BSACreateObject调用中的dataBlockPtr参数容许调用者获取无关NetBackup XBSA接口所需的缓冲区构造的信息。
- BSASendData:
BSASendData()将字节数据流发送到缓冲区中的NetBackup XBSA接口。如果要发送的字节数据流很大,则能够屡次调用BSASendData()。此调用只能在BSACreateObject()或另一个BSASendData()调用之后应用。
- BSAEndData:
调用方在调用BSACreateObject之后调用零次或屡次BSASendData,以后备份文件传输结束后调用BSAEndData,用于告诉Netbackup服务器以后文件传输完结
- BSAEndTxn:
BSAEndTxn与BSABeginTxn耦合应用,以标识将被视为事务的API调用或一组API调用。。
- BSATerminate:
BSATerminate调用终止与NetBackup XBSA接口的会话,该接口由BSAInit调用对应,开释以后session会话获取的所有资源。如果在事务内调用BSATerminate(),则事务停止。
复原相干接口
复原过程中波及的XBSA相干接口次要如下:
- BSAQueryObject:
BSAQueryObject调用从NetBackup XBSA界面启动无关NetBackup XBSA对象文件的信息申请。查问后果由查问描述符中指定的搜寻条件确定。在BSA_ObjectDescriptor(由objectDescriptorPtr参数援用)中返回满足查问搜寻条件的第一个XBSA对象的XBSA对象描述符。
- BSAGetData:
BSAGetData从NetBackup XBSA接口申请XBSA对象文件数据。在BSAGetObject()调用之后或在其余BSAGetData调用之后应用此调用。
五、问题定位
应用Roach工具NBU备份产生故障时,可通过以下思路进行问题定位
NBU管理控制界面activity monitor可显示相干的备份、复原job。 job类型分为三类:
- 蓝色站立兽性:示意该次备份/复原操作已胜利执行结束;
- 绿色跑步人形:示意该次备份/复原操作正在执行;
- 红色x形:示意该次备份/复原操作失败,可依据Status查问NBU官网文档获取谬误相干起因;
例如上图中失败job返回码为13,则可依据文档信息定位排查起因
若NBU界面无失败job,则个别问题呈现在了Roach侧,可依据Roach日志进行定位。
六、参数调优
Roach工具目前反对两种NBU部署构造,别离为NBU侵入式部署于NBU非侵入式部署,两种部署形式的参数调优别离如下:
1、通用参数调优
- Maximum concurrent jobs
此值指定了对应存储单元上最大作业数量,取值范畴为1-256,
例如筹备将三个备份作业发送到存储单元,并将“最大并发作业数”设置为两个。前两个作业开始,而第三个作业期待。
- Maximum vault jobs:
此属性指定在master server上容许流动的最大沉闷job数量。如果达到了容许流动的job限度,则将后续的kob排队,并且它们状态在“流动监视器”中显示为“已排队”。此属性设置范畴为1~200, 当备份过程并发job数大大超过200,则master server会呈现瓶颈,造成工作排队耗时。此时应思考部署多Master Server模式。
设置NET_BUFFER_SZ :
在利用Netbackup备份数据到带库时,有一个NET_BUFFER_SZ参数,决定media server与client之间数据传输的缓冲池大小,该参数值默认为32032 bytes,以文件模式保留于%Install_Path/netbackup/目录下。通常默认值都较小,如果心愿批改该参数值,则间接批改%Install_Path/netbackup/NET_BUFFER_SZ即可,例如:
host-192-168-241-40:/usr/openv/netbackup # echo 65536 > /usr/openv/netbackup/NET_BUFFER_SZ
host-192-168-241-40:/usr/openv/netbackup # more /usr/openv/netbackup/NET_BUFFER_SZ 65536
设置一个足够大的NET_BUFFER_SZ某些状况下可能无效进步备份的速度,举荐在server/client端都设置该参数。
2、NBU侵入式部署调优
- Maximum jobs per client:
此值设定每个NBU client发送的并行处理工作数,通常Roach与并行参数相对性,个别设置为DN数+CN数为最佳。
3、NBU非侵入式部署调优
- Maximum jobs per client:
此值设定每个NBU client发送的并行处理工作数,通常Roach与并行参数相对性,个别设置为
(DN数+CN数)*(Roach client 服务的Roach agent)个数为最佳。
4、超时设置
超时属性实用于选定的Master server、Media Server以及NBU client
- Client connect timeout:
此选项指定服务器连贯客户端时期待的秒数。默认值为300s。个别Roach备份业务中,倡议此值设置为3600s或者更高。此选项实用于NBU Master Server、NBU Media Server、NBU Client。
- Client read timeout:
此选项指定用于客户端读取超时的秒数。此选项实用于NBU Master Server、NBU Media Server。默认值为300s,如果服务器在客户端在此超时工夫内没有从客户端失去响应,则备份/复原工作失败,报错误码13。特地是针对于NBU Job复用场景,文件距离传输工夫超过此值,则备份/复原工作失败。倡议此值设置为3600s或者更高。
- Media server connect timeout
此选项用于指定Master Server连贯Media Server的期待超时形容,默认值为300s。倡议此值设置为3600s。此选项实用于NBU Master Server、NBU Media Server。
点击关注,第一工夫理解华为云陈腐技术~