关于数据:未雨绸缪数据保护之NBU介质备份

211次阅读

共计 11423 个字符,预计需要花费 29 分钟才能阅读完成。

摘要: 华为 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。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0