您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

虚拟备份

虚拟备份执行一次完整的目录存储备份,然后选择 SAP IQ 元数据以及不特定于各个表的元数据,其中包括特定于空闲列表、备份和检查点的信息。虚拟备份不会备份 IQ 存储中的表数据和元数据。使用 VIRTUAL 备份参数作为完全数据库备份的一部分。

虚拟备份可快速(在几秒钟或几分钟内)备份并恢复整个数据库,从而尽量缩短停机时间。SAN 技术可创建 dbfile 设备的多个镜像副本,从而可以减轻对镜像副本的维护任务,如一致性检查。使用 sp_iqfile 过程创建用于构成数据库的文件的备份列表。

必须对相应 IQ 存储创建单独的操作系统级副本。要从虚拟备份恢复,请首先恢复 IQ 存储的相应系统级副本,然后继续执行虚拟备份的 IQ 完全恢复。

使用 SAN 快照或影子硬件执行虚拟备份

存储区域网络 (SAN) 快照或影子硬件通过允许对影子副本而不是主数据库执行系统级备份,从而在备份过程方面提供了更大的灵活性。可创建 IQ 存储的影子副本,以替代作为虚拟备份一部分的系统级副本。然后,可针对影子副本执行系统级备份。这样,完全备份可快速完成。

封装式虚拟备份

在封装式虚拟备份中,' ' 参数将在备份操作过程中执行任意 shell 命令:

BACKUP DATABASE 

FULL VIRTUAL ENCAPSULATED

''

TO

BACKUP DATABASE 命令可备份目录和元数据; <'shell-command'> 可执行用于备份用户 dbspace 的操作系统级脚本或命令。封装式表示两个阶段被包装到一个事务边界内。也就是说,备份是完整且一致的 - 目录、元数据和用户数据完全匹配。

对于系统级备份而言,shell 命令必须得以正确执行。如果 shell 命令失败,备份操作将抛出异常。为使表数据的系统级备份与虚拟备份一致,而不需要执行其它步骤,系统级备份必须在执行备份命令期间由备份事务执行。

本示例运行 "dd" 命令来复制 iqdemo :

BACKUP DATABASE FULL VIRTUAL ENCAPSULATED 

'dd if=iqdemo.iq of=iqdemo.iq.copy'

TO 'iqdemo.full'

要从封装式虚拟备份中完全恢复数据库,应首先恢复系统级备份,然后再恢复虚拟备份。

分离式虚拟备份

分离式虚拟备份会在备份操作完成后复制所有 dbspace

BACKUP DATABASE 

FULL VIRTUAL DECOUPLED

TO

分离式虚拟备份允许用户在 BACKUP DATABASE 命令完成完全备份之前更改目录。为获取此灵活性,您必须在分离式虚拟备份完成后执行一次增量备份,以重新同步目录和数据。

如果在备份事务之外执行系统级备份,IQ 存储备份将与 IQ 备份文件不一致。但是,非虚拟 IQ 增量备份和虚拟完全备份表示一致数据库。这是因为 IQ 增量备份将复制在虚拟完全备份期间或之后更改的所有 IQ 存储数据和元数据。即使是作为备份命令一部分的自动提交和检查点也会修改 IQ 存储,这将使独立的系统级备份不一致。尝试在不应用增量恢复的情况下使用数据库将导致不可预测的结果。