2.3 应用程序数据处理
和传统备份方式不一样的是,VBR不单独处理应用程序,在VBR中不需要单独的备份应用程序代理(Agent),但是VBR的功能一样能够支持各种应用程序的备份和恢复,这也是在云环境下处理应用数据一致性的新发展要求。本节将详细讲述应用程序支持的方法,其中包括:
·应用程序的代理和无代理备份
·应用感知技术详解
·SQL Server的备份
·Oracle的备份
2.3.1 应用程序的代理和无代理备份
1. 代理
这个IT专业词汇其实在国内计算机术语中并没有给出很准确的定义,然而代理普遍存在于计算机世界当中。一般来说,代理具备以下特性:
·持续运行—通常会保持运行状态,即使在空闲时也会处于等待状态。
·自动自主运行—不需要人工干预和交互就能保持运行状态。
·应用程序交互功能—能够和其他应用程序发生交互,激活其他模块、互相通信、协同工作。
传统的备份代理完全具有代理所具备的这些特性。因此普通代理程序面临的问题,备份代理一样会碰到:
·需要不停地为新部署的虚拟机手工安装代理程序(推送虽然方便,但也是“手工”的一种,避免不了远程/本地的配置工作)。
·软件更新的时候,需要为每一台机器升级代理。
·在大规模环境的长期运行过程中,还需要考虑使用合适的软件监控这些代理,所谓的代理保姆,就是干这种事的,防止这些代理哪天突然不工作了而无人知晓。
·以上这些都会长期消耗计算资源,包括CPU、内存、网络、存储,并且很多时候是重复消耗。
2. 无代理备份
VBR的针对虚拟化平台的备份,是不需要在任何的操作系统内安装任何的代理程序(agent),因此备份不需要系统的运行状态。然而当应用系统处于运行状态时,这种无代理的备份技术还能够感知到应用程序,识别出应用程序的种类、保存应用程序的配置、同时存储应用程序创建的用户数据和应用数据。相比有代理的备份方式来说,这种方式的效率更高,使用起来更方便。
2.3.2 应用程序感知技术详解
1. 应用程序备份
VBR的应用程序备份是随着操作系统镜像级备份同时进行的。镜像的应用程序感知处理是Veeam特有的技术,能够以应用程序感知的方式创建镜像级备份存档文件。这里涉及很多步骤:
1)它会侦测在虚拟机内运行着什么应用程序。
2)使用Microsoft VSS处理应用程序,使其进入静默状态,确保每个应用程序的状态一致。
3)为受保护的应用程序赋予特殊的恢复设置,以准备对每个应用程序在下次虚拟机启动时执行VSS感知恢复。
4)如果备份成功,则对某些应用程序执行事务日志修剪。
以上整个过程完全自动化,不需要任何人工干预。
VBR支持全自动感知Active Directory、SQL Server、Exchange Server、Share-Point和Oracle这些应用程序。如果虚拟机内部署了这些应用程序,VBR能够在备份系统镜像的同时,用以上方法处理这些应用程序,确保这些应用程序的一致性,同时还能够提供特别的恢复方法,恢复这些应用程序的对象。
2. 静默方法
通常来说会有两种静默方法,一种是用VMware工具静默,另外一种则是通过应用程序感知处理来注入脚本。表2-3详细列出了两种静默方法的区别。
在这里可能会用到两个脚本:前脚本(Pre-Freeze Script)和后脚本(Post-thaw Script)。这两个脚本都会在客户机操作系统内执行,因此需要用到操作系统的本地管理员账号。
·前脚本:用于冻结数据库事务日志或者创建应用程序的一致性快照。对于那些无法冻结的数据库或者创建一致性快照的应用程序,也可以使用这个脚本停止应用程序,当然这也会带来额外的服务中断时间。
·后脚本:用于解冻数据库事务日志或者删除在前脚本中创建的快照。如果在后脚本中停止了服务,那么这个脚本重新启动服务。
对于一些常见的应用程序,VBR已经内置了这些应用程序的感知方法,灾备管理员不需要为这些应用程序准备特定的脚本,这些应用程序包括Active Directory、SQL Server、Exchange Server、SharePoint和Oracle。同时VBR提供这些应用程序的对象级恢复能力,可以从备份存档文件中直接恢复这些应用程序的对象。
在VBR的作业向导中,可以在“Guest Processing”步骤中设定应用程序感知的相关内容。图2-9展示了两部分内容,其中最上面“Enable application-aware processing”复选框就是应用感知部分。在这个复选框的右边有一个“Application”按钮,可以通过这个按钮为不同的应用程序做详细的设定。
为了能够和应用程序交互,必须为应用程序提供一个客户机操作系统本地管理员的账号,可以在“Guest OS credentials”中选择,也可以通过“Add”按钮添加新的账号,对于不同的操作系统Windows和Linux,VBR支持设定不同类型的账号。
对于一个有多个虚拟机的备份作业,VBR支持为不同的虚拟机设置独立的管理员账号,以进行应用程序感知,图2-9中的“Credentials”按钮就能提供这个功能。
3. 客户机交互代理
在现实IT世界中,经常会碰到错综复杂的网络架构,为了更好地保障信息安全,网络管理员通常会分离一些功能不同、所属部门不同的应用程序的网络。然而为了能够统一管理这些系统的备份,往往又需要有备份专用网络或者接口,以和这些应用程序通信。在VBR应用程序感知镜像处理方法中,也会碰到这样的挑战,这时候可以通过客户机交互代理(Guest Interaction Proxy)来和这些特定的应用程序进行通信。引入了客户机交互代理之后,在备份架构中,VBR只需要向特定子网(Subnet)开放少量的端口就可以完成数据的备份。备份服务器、客户机交互代理和生产系统需要开放的端口如图2-10所示。
注意:客户机交互代理只适用于客户机操作系统运行的是Windows虚拟机的情况。而这个代理本身,也必须是一台Windows服务器。
除了使用客户机交互代理之外,VMware环境下,VBR还支持在无网络连接的情况下使用VMware VIX API,来和操作系统进行交互。vSphere 6.5之后,VMware弃用了这个API,启用了新的API(名字为vSphere API for guest interaction)。功能和以前的VIX基本一致,所以VBR还是沿用了以前的叫法—VIX。这个API同时支持Windows和Linux操作系统的应用程序感知。
对于Microsoft Hyper-V,VBR支持使用PowerShell Direct和客户机交互,这只在Hyper-V 2016以上版本中存在。
使用网络的方式和使用API的方式所需要的操作系统的权限略有不同。表2-4和表2-5详细说明了它们之间的一些差异。
2.3.3 SQL Server的备份
由于SQL Server的架构复杂,一些特殊的配置通常是没办法通过无代理方式来实现的,必须使用Veeam Agent来完成备份。表2-6列出了各种部署方式下的SQL Server可以使用的备份方式。
使用VBR进行SQL Server备份时,VBR可以处理整个SQL服务器的镜像来实现整个数据库的备份,同时也支持对于SQL Server事务日志的备份。
1. 完整数据库的备份
这里没什么特别的配置,只需要启用Guest Processing即可。唯一需要注意的是:对于SQL Always On群集,请确保将所有的Always On节点添加在同一个备份作业中,因为只有这样,VBR才理解这几台服务器的互相关系,保证所有的备份能正常感知,确保在恢复备份时能正常打开和执行恢复命令。
2. 事务日志处理和备份
除了备份完整的数据库之外,VBR还能处理和备份SQL数据库的事务日志。
SQL数据库的日志处理有三种,可以从这三种里面选取其中一种,图2-11为VBR上SQL应用程序的选项。
1)截断日志:防止数据库日志不断增大,相当于在备份后立刻清理数据库的日志。如果备份作业定时进行,此选项相当于定期清理日志。
2)不截断日志:适用于简单恢复模式或者DBA已经定义了事务日志截断方式和计划任务,那么可以不用VBR来处理这个事务日志。
3)定时备份日志:这里要求SQL Server的恢复模式必须是完整恢复模式或者Bulk-logged恢复模式。VBR首先会备份日志,备份完成后会进行日志的截断操作。这种处理方式可以令日志备份的时间间隔默认为十五分钟,最小为五分钟。备份后的事务日志会和备份存档文件放在同一个文件夹下,并且以VLB作为扩展名结尾。对于日志的保留策略,VBR提供了两种选项,跟随镜像级备份的保留策略或按最近多少天为单位进行保留。
3. 日志传输服务器
对于定时备份日志,VBR还提供日志传输服务器的选择。它并不是一台专用的角色服务器,任意一台由VBR管理的Windows服务器都可以充当日志传输服务器。
通常情况下,自动选择日志传输服务器能够让VBR最优化地决定使用哪个日志服务器,并且VBR还提供日志传输服务器的故障切换和负载均衡功能。
日志备份的注意事项:
在传输日志前,VBR会把数据库的事务日志临时文件存放在一个临时文件夹当中,默认的文件夹位于%allusersprofile%下,在绝大多数情况下,这个默认的文件夹都会位于Windows系统分区下。这往往会给磁盘分区造成很大的困扰,当日志数据变化量非常大时,系统分区有可能会被占满。Veeam提供了修改这一位置的方法,即通过调整VBR的注册表键值来完成:
路径:HKLM\SOFTWARE\Veeam\Veeam Backup and Replication 键值:SqlTempLogPath 类型:REG_SZ 默认值:未定义
可以根据实际需求,合理设置这个键值,设置完成后,需要重启VBR服务。
在VBR备份涉及SQL Server时,VBR会将整个服务器的内容备份下来。假如这台服务器上有多个数据库或者多个实例,默认情况下,VBR不会单独处理某个数据库。VBR提供了通过注册表来排除SQL数据库的方法。
这个排除选项在默认情况下是不出现的,需要修改VBR控制台上安装的Windows操作系统的注册表来实现,在修改前需要关闭VBR控制台。
路径:HKLM\SOFTWARE\Veeam\Veeam Backup and Replication 键值:EnableDBExclusions 类型:DWORD 值:1
重新打开VBR控制台后,可以在左上角的主菜单下找到Databases Exclusions选项,打开后如图2-12所示。
2.3.4 Oracle的备份
VBR支持在镜像级备份过程中,同时处理Oracle数据库,但是其中有些特殊的Oracle架构是无法支持的:
·运行在64位Linux服务器上的32位的Oracle;
·Oracle RAC架构;
·早期的Oracle版本,比如9i、10g等。
1. Oracle镜像级备份流程和原理
(1)Linux系统
1)在Linux系统中首先注入协调工作组件,这个组件会处理后续的所有作业步骤;
2)发现Oracle数据库实例,查询/etc/oraInst.loc、inventory.xml,比较/etc/oratab信息;
3)查询并拿到Oracle实例的状态信息;
4)从ASM实例中获取磁盘组信息;
5)确定系统的日志模式,获取数据库文件位置、CDB和DBID信息;
6)收集归档日志的必要信息,Veeam开始执行真正的数据库备份,修改数据库状态,处理归档日志;
7)创建PFILE备份,写入备份元数据中;
8)记录额外的备份信息,包括当前的DBID、SCN、Sequence ID、数据库唯一名称、域名、恢复文件位置、基础侦听信息以及当前的归档日志;
9)关闭协调工作组件,创建系统镜像快照,通知备份服务器进行镜像级备份。
(2)Windows系统
在Windows系统上的Oracle根据版本、VSS选项和类型的不同,会有所不一样,表2-7列出了它们的区别。
在配置Oracle备份时,可能会碰到一些问题,这时候需要检查Oracle的状态。Oracle数据库备份常用的故障排除方法如下。
首先可以通过sqlplus命令连接至Oracle服务器查看状态:
[oracle@localhost ~/] sqlplus / as sysdba SQL> select Database_Status from V$INSTANCE; DATABASE_STATUS ----------------- ACTIVE
然后可以检查/etc/oratab文件的内容,如果/etc/oratab文件里面不存在内容,这时候就需要手工恢复oratab文件,确保里面的实例信息正确,才能继续进行Veeam备份。
2. 归档模式
在备份Oracle数据库时,VBR会自动判断Oracle的备份模式,对于NOARCHIVELOG模式和ARCHIVELOG模式的实例,VBR的处理方法不同。
(1)NOARCHIVELOG模式
1)VBR会在执行备份快照前对Oracle数据库执行关闭操作;
2)关闭后,执行虚拟机、物理机镜像级快照;
3)快照执行完成后,VBR会通知Oracle数据库,执行重启操作;
4)开始正常备份流程。
因此,在这个过程中,数据库短时间内会不可用,通常建议开启ARCHIVELOG模式来避免这个停机时间。
(2)ARCHIVELOG模式
对于这种模式下的虚拟机备份,可以实现Oracle的在线备份。
1)VBR会在执行备份快照前,通知Oracle进入热备份模式;
2)执行虚拟机、物理机镜像级快照;
3)快照执行完成后,VBR会通知Oracle数据库退出热备份模式;
4)开始正常的虚拟机备份。
查询归档日志的方法:
[oracle@localhost ~/] sqlplus / as sysdba SQL> select name,log_mode from v$database; NAME LOG_MODE --------- ----------- orcl NOARCHIVELOG
开启ARCHIVELOG模式的方法:
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 6415597568 bytes Fixed Size 2170304 bytes Variable Size 905970240 bytes Database Buffers 5502926848 bytes Redo Buffers 4530176 bytes Database mounted. SQL> alter database archivelog; database altered. SQL> alter database open; database altered.
3. 账号和权限
对于Oracle备份来说,这部分通常是最复杂的,Windows和Linux稍微有一些不同,在做镜像级和应用程序处理时会涉及操作系统的文件访问权限和Oracle系统的DBA权限。VBR提供两种设置方式,这两种方式的实现效果没有区别。
·方法一:操作系统和Oracle使用同一个账号,都使用操作系统的账号。在设置备份作业时,在Guest Processing界面中,Oracle的账号需要配置为“Use Guest credentials”。多数情况下,Linux系统都会选用这种方法。
·方法二:操作系统和Oracle使用不同的账号,这时候需要满足以下两种条件。多数情况下,Windows系统会选用这个方法。
对于Linux系统和Windows系统,下面举例说明如何进行账号设置。
(1)Linux系统
·条件一:需要使用root账号或者提权至root的账号。一般来说,在Oracle系统中,root账号并没被加入oinstall组,通常不会使用root账号。
·条件二:加入oinstall组,如果有ASM,还需要加入asmadmin组;拥有ora_dba本地组的权限。
举例说明:
配置Oracle备份作业时,在Guest Processing中,添加操作系统的账号,如oracle,并将该账号提权至root。
在Application设定中,由于已经使用了oinstall组的账号,拥有了本地Oracle的完全访问权限,因此只需要选择“use guest credentials”即可。
(2)Windows系统
·条件一:需要拥有本地管理员权限,并且这个本地管理员需要能够读写Oracle数据库文件所在的文件夹。
·条件二:拥有ora_dba本地组的权限。
表2-8总结了Linux系统和Windows系统各自的权限要求。
4. 日志处理
除了备份Oracle的系统镜像之外,Veeam还能够处理和备份Oracle的归档日志。
对于Oracle的日志处理,可以从以下选项中选择一种,图2-13为Oracle应用程序感知的设定主界面。
1)不删除归档日志;
2)删除超过一定时间的归档日志,默认为24小时;
3)删除超过一定大小的归档日志,默认为10GB。
Veeam还提供定时备份归档日志的功能,可以设定定时的日志备份子任务,定时间隔最小为5分钟。保留策略可以选择为跟随镜像级备份或者按天保留。
5. 日志传输服务器
和SQL Server一样,Oracle的日志传输也可以选择“Log Shipping Servers”。它并不是一台专用的角色服务器,任意一台由VBR管理的Windows服务器都可以充当日志传输服务器。
通常情况下,自动选择日志传输服务器能够让VBR最优化地决定使用哪个日志服务器,并且VBR还提供日志传输服务器的故障切换和负载均衡功能。
日志备份的注意事项:
在传输日志前,VBR会把数据库的事务日志临时文件存放在一个临时文件夹当中,默认的文件夹位于/tmp下,这往往会给磁盘分区空间造成很大的困扰,当日志数据变化量非常大时,系统分区有可能会被占满。Veeam提供了修改这一位置的方法:
(1)Linux Oracle
在Oracle服务器的/tmp文件夹下创建VeeamOracleAgent.xml文件,其内容为:
<config OracleTempLogPath="/location"></config>
需要确保“location”为可读写。
(2)Windows Oracle
可以通过调整Oracle虚拟机的注册表键值完成位置的修改:
路径:HKLM\SOFTWARE\Veeam\Veeam Backup and Replication 键值:OracleTempLogPath 类型:REG_SZ 默认值:未定义
可以根据实际需求,合理设置这个键值。